使用 JSON 编辑器定义响应
在某些情况下,您可能需要使用 JSON 编辑器来定义助手的响应。 有关更多信息,请参阅 添加助手响应。
要使用 JSON 编辑器编辑响应,请单击 助手说 字段中的 切换到 JSON 编辑器 图标 。 JSON 编辑器显示如何在后台定义响应并将其发送到通道。
通用 JSON 格式
如果对新的空响应打开 JSON 编辑器,那么将看到以下基本结构:
{
"generic": []
}
generic
属性定义在执行步骤时发送到通道的响应的数组。 术语 通用 是指使用不特定于任何通道的通用 JSON 格式来定义这些响应。 这种格式可以容纳多个集成支持的各种响应类型,也可以由使用 REST API 的自定义客户端应用程序来实现。
步骤的 generic
数组可以包含多个响应,并且每个响应都具有 响应类型。 发送简单文本响应的基本步骤通常仅包含响应类型为 text
的单个响应。 但是,许多其他响应类型可用,支持多媒体和交互式内容,以及对某些通道集成的行为的控制。
虽然可以将 generic
格式发送到任何通道集成,但并非所有通道都支持所有响应类型,因此某些通道可能会忽略特定响应或以不同方式处理特定响应。 更多信息,请参阅 响应类型参考。
在运行时,具有多个响应的输出可能会拆分为多个消息有效内容。 通道集成按顺序将这些消息发送到通道,但通道负责将这些消息传递给用户; 这可能受到网络或服务器问题的影响。
添加响应
要在 JSON 编辑器中指定响应,请将相应的 JSON 对象插入到步骤响应的 generic
字段中。 以下示例显示了具有两种不同类型 (文本和图像) 的响应的输出:
{
"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
:Web 聊天voice_telephony
: 电话text_messaging
: SMSslack
: Slackfacebook
:Facebook Messengerwhatsapp
: WhatsApp
以下示例显示了包含两个响应的步骤输出: 一个用于 Web 聊天集成,另一个用于 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 响应类型的响应类型和受支持集成的更多信息,请参阅 响应类型参考。