使用 JSON 编辑器定义响应

在某些情况下,您可能需要使用 JSON 编辑器来定义助手的响应。

有关详细信息,请参阅添加助手回复

若要使用 JSON 编辑器编辑回复,请点击 “Assistant says ”字段中的 “切换到 JSON 切换到 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:Slack

  • facebook:Facebook Messenger

  • whatsapp: 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 响应类型和支持的集成的更多信息,请参阅响应类型参考