使用 JSON 编辑器定义响应
在某些情况下,您可能需要使用 JSON 编辑器来定义助手的响应。
有关详细信息,请参阅添加助手回复。
若要使用 JSON 编辑器编辑回复,请点击 “Assistant says ”字段中的 “切换到 JSON
编辑器”图标。 JSON 编辑器显示了响应是如何在幕后定义并发送到通道的。
通用 JSON 格式
如果在新的空响应上打开 JSON 编辑器,会看到以下基本结构:
{
"generic": []
}
generic属性定义了执行步骤时发送到通道的响应数组。 术语“通用”是指这些响应是采用一种通用 JSON 格式定义的,该格式不针对任何特定渠道。 这种格式可以容纳多个集成支持的各种响应类型,也可以由使用 REST API 的自定义客户端应用程序来实现。
一个步骤的 generic 数组可以包含多个响应,每个响应都有一个_响应类型_。一个发送简单文本响应的基本步骤通常只包含一个响应,其响应 text类型为。 不过,还提供了许多其他响应类型,支持多媒体和交互式内容,以及对某些通道集成行为的控制。
虽然 "generic格式可以发送到任何通道集成,但并非所有通道都支持所有响应类型,因此某些特定的响应可能会被忽略或被某些通道以不同方式处理。 有关更多信息,请参阅通道集成对响应类型的支持。
运行时,包含多个响应的输出可能会被分割成多个消息有效载荷。 通道集成会按顺序向通道发送这些信息,但向用户发送这些信息是通道的责任;这可能会受到网络或服务器问题的影响。
添加响应
要在 JSON 编辑器中指定响应,请在步骤响应的 "generic字段中插入适当的 JSON 对象。 下面的示例显示了两个不同类型响应(文本和图像)的输出:
{
"generic":[
{
"response_type": "text",
"values": [
{
"text_expression": {
"concat": [
{
"scalar": "This is a text response."
}
]
}
}
]
},
{
"response_type": "image",
"source": "https://example.com/image.jpg",
"title": "Example image",
"description": "This is an image response."
}
]
}
更多信息,请参阅响应类型。
针对特定集成
如果您计划将助手部署到多个渠道,您可能希望根据每个渠道的功能向不同的集成发送不同的回复。 通用响应对象的 "channels属性提供了实现这一功能的方法。
如果您的对话流程不会根据使用中的集成而改变,而且您无法预先知道在运行时将响应发送到哪个集成,那么这种机制就非常有用。 通过使用 "channels,您可以定义一个支持所有集成的单一步骤,同时还可以自定义每个通道的输出。 例如,您可能希望自定义文本格式,甚至根据通道支持的类型发送不同的响应类型。
使用 "channels和 "channel_transfer响应类型非常有用。 由于信息输出既要由启动 "transfer的通道处理,也要由目标通道处理,因此可以使用 "channels来定义由其中一个通道或另一个通道处理的响应。
要指定响应所针对的集成,请将可选的 "channels数组作为响应对象的一部分。 所有响应类型都支持 "channels数组。 该数组包含一个或多个对象,语法如下:
{
"channel": "<channel_name>"
}
<channel_name>的值可以是以下任何字符串:
chat:网络聊天voice_telephony: 电话text_messaging:短信slack:Slackfacebook:Facebook Messengerwhatsapp: WhatsApp
下面的示例显示了包含两个回复的步骤输出:一个用于网络聊天集成,一个用于 Slack 和 Facebook 集成。
{
"generic": [
{
"response_type": "text",
"channels": [
{
"channel": "chat"
}
],
"values": [
{
"text_expression": {
"concat": [
{
"scalar": "This output is intended for the <strong>web chat</strong>."
}
]
}
}
]
},
{
"response_type": "text",
"channels": [
{
"channel": "slack"
},
{
"channel": "facebook"
}
],
"values": [
{
"text_expression": {
"concat": [
{
"scalar": "This output is intended for either Slack or Facebook."
}
]
}
}
]
}
]
}
如果存在 "channels数组,它必须至少包含一个通道对象。 任何未列出的集成都将忽略响应。 如果没有 "channels数组,所有集成都会处理响应。
响应类型
您可以使用 JSON 配置不同类型的响应。 要了解有关 JSON 响应类型和支持的集成的更多信息,请参阅响应类型参考。