使用 Dialogflow 添加自动化功能

<ph type="x-smartling-placeholder">Dialogflow是 一种语言理解 (NLU) 工具,用于处理用户输入并将其映射到已知 并使用适当的回复进行响应共有两个版本 代码。通过将 Business Messages 代理与 Dialogflow ES 集成, 您可以轻松创建简单的自动化操作来快速启动代理开发。修改者 与 Dialogflow CX 集成后,您可以创建高级自动化功能, 进行复杂的对话

Business Messages 代理支持与

将 Business Messages 代理与 Dialogflow 的其他功能集成 ESDialogflow CX、 请参阅每个产品的文档。

当用户向集成了 Dialogflow 的代理发送消息时, Business Messages 将用户消息传递给 Dialogflow,并发送 Dialogflow 的 并在邮件的 dialogflowResponse 对象。您可以将代理配置为 自动将 Dialogflow 的响应发送给用户,无需对您的 部分。请参阅自动回复 了解详情。

Dialogflow 集成

在通过 Business Messages 使用基于 Dialogflow 的自动化功能之前, 您需要启用 Dialogflow 集成。

前提条件

首先,您需要

  • Business Messages 代理
  • 全球区域且根语言为英语的 Dialogflow 代理 (zh-CN)

如果您没有 Dialogflow 代理,请创建一个

Dialogflow ES

在启用 Dialogflow ES 集成之前,您需要 Dialogflow 代理的项目 ID。要查找项目 ID

  1. 导航到 Dialogflow 控制台
  2. 选择要连接到 Business Messages 的 Dialogflow 代理。 然后点击齿轮图标 即可。
  3. Google 项目下,记下项目 ID 值。

Dialogflow CX

在启用 Dialogflow CX 集成之前,您需要 Dialogflow 代理的项目 ID 和代理 ID。要查找这些 ID

  1. 导航到 Dialogflow CX 控制台
  2. 选择您的 Dialogflow 项目。
  3. 在代理选择器中,点击菜单 旁边的“添加”图标。
  4. 点击复制名称。此操作会将代理的全名 以下格式: projects/PROJECT_ID/locations/REGION_ID/agents/AGENT_ID
  5. 记下项目 ID 和代理 ID 的值。

启用集成

  1. 在 Business Communications 开发者控制台中,前往 集成
  2. 对于 Dialogflow,点击 Enable integration(启用集成)。
  3. 点击连接现有模型
  4. 对于 Dialogflow 版本,选择要启用的版本。
  5. 输入您的 Dialogflow 代理的项目 ID。
  6. 如需启用 Dialogflow CX,还需要输入您的 Dialogflow 代理的代理 ID。
  7. 如果您希望 Business Messages 自动回复用户 Dialogflow 响应,选择启用自动响应
  8. 点击下一步
  9. 复制服务账号电子邮件地址。此账号将关联你的 Business Messages 和 Dialogflow 代理。
  10. Google Cloud 控制台 选择您的 Dialogflow 项目。
  11. 前往 IAM 权限
  12. 点击添加,然后为新的主账号输入服务账号电子邮件地址。
  13. 对于选择角色,请选择 Dialogflow 控制台代理编辑者
  14. 点击添加其他角色,然后选择 Dialogflow API 客户端
  15. 点击保存
  16. 在 Business Communications 开发者控制台中,点击下一步
  17. 点击开始集成

Business Messages 和 Dialogflow 连接大约需要两分钟。

更新集成

  1. 在 Business Communications 开发者控制台中,前往 集成
  2. 点击齿轮图标 位于 Dialogflow 旁边。
  3. 根据需要切换启用自动回复。 Business Messages 使用 Dialogflow 回复自动回复用户。

在 Dialogflow 版本之间切换

一个 Business Messages 代理一次只能支持一个 Dialogflow 集成。 要从一个 Dialogflow 版本切换到另一个版本,您需要停用 然后才能启用新集成

停用集成

  1. 在 Business Communications 开发者控制台中,前往 集成
  2. 点击齿轮图标 位于 Dialogflow 旁边。
  3. 点击停用集成
  4. 点击停用

停用现有 Dialogflow 集成大约需要一分钟时间。

按照这些步骤启用新的 Dialogflow 集成。

意图匹配

为 Business Messages 代理启用 Dialogflow 集成后,您的 代理可以使用您的 Dialogflow 项目的已配置意图来了解 无需编写代码即可回答用户的问题。要详细了解 intent,请参阅 Dialogflow ES 的文档 和 Dialogflow CX

为您打算使用的每个对话选项配置 Dialogflow intent 实现自动化。Business Messages 代理依赖 Dialogflow 了解用户消息

调用 Dialogflow API 时,Business Messages 会将 用户消息载荷 您的 intent 和 fulfillment webhook。当用户消息匹配成功时 通过 intent,您可以在以下位置以 Struct 格式访问此载荷: QueryParameters 中的 business_messages_payload 字段。

载荷包含用户消息中除 DialogflowResponse 之外的所有字段。

对于 Dialogflow CX,Business Messages 还会将一个名为 channel 且值为 google_business_messages会话参数传递给您的意图,您可以在代理中按以下格式引用该参数:$session.params.channel

此参数可用于向 Dialogflow 执行方式添加条件,以便在同一 Dialogflow 代理中支持多个渠道。

如需详细了解查询参数,请参阅 Dialogflow ESDialogflow CX 参考。

前提条件

在 Dialogflow 中创建 NLU 模型时,您可以配置不同的 响应类型。Business Messages 支持“默认”回复, 其中包括:

  • 文本
  • 自定义负载
  • 人工客服转接(仅限 Dialogflow CX)

自定义载荷必须与有效的 Business Messages JSON 消息响应匹配 对象。 为 intent 配置自定义载荷响应时,Business Messages 忽略以下字段:

  • name
  • messageId
  • representative

请参阅以下示例响应。

包含建议的文本

{
  "text": "Hello World!",
  "fallback": "Hello World!\n\nReply with \"Hello\" or \"Hi!\"",
  "suggestions": [
    {
      "reply": {
        "text": "Hello",
        "postbackData": "hello-formal"
      }
    },
    {
      "reply": {
        "text": "Hi!",
        "postbackData": "hello-informal"
      }
    }
  ]
}

复合信息卡

{
  "fallback": "Hello, world!\nSent with Business Messages\n\nReply with \"Suggestion #1\" or \"Suggestion #2\"",
  "richCard": {
    "standaloneCard": {
      "cardContent": {
        "title": "Hello, world!",
        "description": "Sent with Business Messages.",
        "media": {
          "height": "TALL",
          "contentInfo":{
            "altText": "Google logo",
            "fileUrl": "https://www.google.com/images/branding/googlelogo/2x/googlelogo_color_272x92dp.png",
            "forceRefresh": "false"
          }
        },
        "suggestions": [
          {
            "reply": {
              "text": "Suggestion #1",
              "postbackData": "suggestion_1"
            }
          },
          {
            "reply": {
              "text": "Suggestion #2",
              "postbackData": "suggestion_2"
            }
          }
        ]
      }
    }
  }
}
{
  "fallback": "Card #1\nThe description for card #1\n\nCard #2\nThe description for card #2\n\nReply with \"Card #1\" or \"Card #2\"",
  "richCard": {
    "carouselCard": {
      "cardWidth": "MEDIUM",
      "cardContents": [
        {
          "title": "Card #1",
          "description": "The description for card #1",
          "suggestions": [
            {
              "reply": {
                "text": "Card #1",
                "postbackData": "card_1"
              }
            }
          ],
          "media": {
            "height": "MEDIUM",
            "contentInfo": {
              "fileUrl": "https://my.files/cute-dog.jpg",
              "forceRefresh": false
            }
          }
        },
        {
          "title": "Card #2",
          "description": "The description for card #2",
          "suggestions": [
            {
              "reply": {
                "text": "Card #2",
                "postbackData": "card_2"
              }
            }
          ],
          "media": {
            "height": "MEDIUM",
            "contentInfo": {
              "fileUrl": "https://my.files/elephant.jpg",
              "forceRefresh": false
            }
          }
        }
      ]
    }
  }
}

人工客服移交

{
  "metadata": {}
}

常见问题解答聊天机器人

为 Business Messages 代理启用 Dialogflow ES 集成后, 可以创建常见问题解答聊天机器人当您提供问题和答案时, 支持的知识文档,Business Messages 和 Dialogflow 会创建 理解和响应用户问题所需的基础架构, 而无需编写代码

如需查看常见问题解答聊天机器人的实际运行情况,请与 Business Messages 常见问题解答进行聊天 Bot

前提条件

在创建常见问题解答聊天机器人之前,你需要将问题和回答作为 知识文档(最多 50 MB):公开提供的 HTML 文件或 CSV 文件。

一般来说,知识文档

  • 可以在答案中包含有限的 Markdown,如富媒体 文本
  • 大小不超过 50 MB。
  • 问题/答案对不应超过 2000 对。
  • 不要为重复的问题提供不同的答案。

对于 HTML 文件

  • 来自公共网址的文件必须已被 Google 搜索索引器抓取, 以使它们存在于搜索索引中。您可以通过 Google Search Console。 请注意,索引器不会及时更新您的内容。您必须明确 在源内容发生变化时更新文档。
  • Dialogflow 在创建响应时从内容中移除 HTML 标记。因为 因此,最好避免使用 HTML 标记,并尽可能使用纯文本。
  • 不支持包含单个问题/答案对的文件。

对于 CSV 文件,

  • 文件的第一列必须为问题,第二列必须为答案, 没有标题。
  • 文件必须使用英文逗号作为分隔符。

创建常见问题解答聊天机器人

  1. 在 Business Communications 开发者控制台中,前往 集成
  2. 知识库 (FAQ) 下,点击创建知识库
  3. 输入知识库的名称,然后点击下一步
  4. 选择一种 MIME 类型
  5. 添加知识文档。
    • 如果您选择 HTML 作为 Mime 类型,请输入可公开访问的 您的常见问题解答的网址,位于 网址
    • 如果您为 Mime 类型选择了 CSV,请点击上传,然后选择您的 CSV 文件。
  6. 点击添加以完成

如需向常见问题解答聊天机器人添加其他文档,请点击添加文档按钮。

在您完成上述步骤后,Business Messages 会包含 dialogflowResponse 对象。如果您启用自动回复功能,Business Messages 会回复用户 与 matchConfidence 得分最高的问题/答案对 比用户的消息更复杂

自动回复

如果您在 Dialogflow 集成期间启用自动回复,则 “信息”应用会通过 Dialogflow 自动回复用户。您的商家 信息代理以最高置信度匹配来响应。使用 Dialogflow ES 集成(如果常见问题解答和 自定义的意向细分受众群,Business Messages 会在响应中提供 置信度。

Business Messages 将所有自动回复消息标记为来自BOT 代表。如果您的代理支持实时代理, Business Messages 在 REPRESENTATIVE_JOINED后暂停自动回复 事件 并在 REPRESENTATIVE_LEFT 事件后恢复自动响应。请参阅 Handoff 从聊天机器人到人工客服

自动回复常见问题解答

使用 Dialogflow ES 集成时,如果常见问题解答的答案可信度最高 Business Messages 将回答映射到短信。如果有 相关但不同的答案,则该消息会显示“查看其他 答案建议。否则,系统会在消息中包含问题和建议 进行回复,询问消息是否满足用户请求。

使用 intent 响应自动回复

intent 响应可以包含以下一项或多项响应。

如果意图响应具有最高置信度匹配,则以下 。

  • 如果响应包含至少一个 Text 值,Business Messages 会将此 值转换为文本消息。
  • 如果响应至少有一个自定义载荷具有有效的 Business 信息 JSON 对象结构,Business Messages 使用 提供的 JSON 对象。
  • 如果响应至少有一条人工客服移交响应,请参阅 通过人工客服请求自动回复

由于 Dialogflow 可以在一个意图匹配中包含多个响应, Business Messages 发送每次短信、自定义载荷或人工客服移交 作为一条单独的消息回复如果一个 intent 中有多条消息 匹配,但其中一些格式有误,Business Messages 仅发送有效的 自动回复邮件。

通过人工客服请求自动回复

Dialogflow CX 支持人工客服移交 响应。它表明对话应该交由真人处理 它还可以让您为移交流程传递自定义元数据, 过程。如果意图响应具有最高置信度匹配,并且 包括人工客服转接,Business Messages 会向用户发送 人工客服请求的活动 添加到网络钩子。如需处理此事件,请参阅 将聊天机器人移交给人工客服

使用后备消息进行自动回复

如果 Dialogflow 未获得高置信度的匹配,Business Messages 将发送 作为后备响应在 Dialogflow ES 中,回退的处理方式 Dialogflow CX。

Dialogflow ES

对于常见问题解答聊天机器人,如果找不到常见问题解答的答案,Business Messages 就会发送 提示无法找到答案的后备消息。

对于已配置的意图,如果没有与意图响应匹配的意图, “信息”应用会发送回退 intent 响应。 您可以使用 Dialogflow 提供的后备文本,也可以配置 使用额外的文本和自定义载荷进行后备

这是一个后备意图响应示例 可以接收:

{
  "intentResponses": [
    {
      "intentName": "projects/df-integration/agent/intents/12345",
      "intentDisplayName": "Default Fallback Intent",
      "intentDetectionConfidence": "1.0",
      "fulfillmentMessages": [
        {
          "text": "One more time?"
        }
      ]
    }
  ]
}

Dialogflow 会预填充 intent_nameintent_display_name

Dialogflow CX

Dialogflow CX 将后备意图响应作为 内置事件的事件。 如果找不到与意图响应相匹配的内容,Business Messages 会发送 Dialogflow 中非匹配默认事件中的后备消息。您可以 使用 Dialogflow 提供的后备文本,或者配置 提供额外的文本、自定义载荷和人工客服移交选项。

这是一个后备意图响应示例, webhook 可以接收:

{
  "intentResponses": [
    {
      "intentName": "sys.no-match-default",
      "intentDisplayName": "Default Fallback Intent",
      "intentDetectionConfidence": "0.3",
      "fulfillmentMessages": [
        {
          "text": "I missed that, say that again?"
        }
      ]
    }
  ]
}

Business Messages 硬编码 intent_nameintent_display_name

Dialogflow 专用字段

启用 Dialogflow 集成后,用户可向代理发送消息 会接收 添加 dialogflowResponse 对象。网络钩子会收到所有用户消息的载荷 Business Messages 是否会自动回复您 。要检查自动回复,请查看 autoResponded 字段并决定是否需要回复用户。

Dialogflow ES

...
"dialogflowResponse": {
  "queryText": "TEXT",
  "intentResponse": {
    "intentName": "INTENT_ID",
    "intentDisplayName": "INTENT_NAME",
    "intentDetectionConfidence": "CONFIDENCE_NUMERIC",
    "fulfillmentMessages": [{
      "text": "FULFILLMENT_TEXT",
      "jsonPayload": "JSON",
      "error": "ERROR_STATUS",
    }],
  "faqResponse": {
    "userQuestion": "USER_QUESTION",
    "answers": [{
      "faqQuestion": "FAQ_QUESTION",
      "faqAnswer": "FAQ_ANSWER",
      "matchConfidenceLevel": "CONFIDENCE_LEVEL",
      "matchConfidence": "CONFIDENCE_NUMERIC",
    }],
  },
  "autoResponded": "BOOLEAN",
  "autoRespondedMessages": [{
    "message": "MESSAGE_JSON",
    "responseSource": "SOURCE",
  }],
},
...
字段 说明
queryText 原始对话查询文本。如果使用自动拼写 已针对 Dialogflow 模型 queryText 启用更正功能 包含更正后的用户输入。
intentName 匹配意图的唯一标识符。
intentDisplayName 匹配的意图的名称。
intentDetectionConfidence 匹配的数字置信度分数 介于 queryTextintentName 之间。
text 文本响应。
jsonPayload 自定义载荷响应。 此字符串与自定义 在 Dialogflow 中定义的载荷。 如果载荷不包含有效的 Business Messages JSON 对象结构,error 可以描述问题。
error 包含 intent 执行方式消息的错误描述。
userQuestion 用户提出的问题,由 Dialogflow 解析。
faqQuestion Dialogflow 中与用户的问题匹配的一个问题。
faqAnswer Dialogflow 中与用户的问题匹配的答案。
matchConfidenceLevel 对于 userQuestionfaqQuestion
matchConfidence 以下各项之间的匹配项的置信度数字评分: userQuestionfaqQuestion
autoResponded Business Messages 是否自动回复 并向用户提供 Dialogflow 的回答。
message 自动响应的载荷。
responseSource 自动回复的来源。请参阅 ResponseSource

Dialogflow CX

...
"dialogflowResponse": {
  "queryText": "TEXT",
  "intentResponse": {
    "intentName": "INTENT_ID",
    "intentDisplayName": "INTENT_NAME",
    "intentDetectionConfidence": "CONFIDENCE_NUMERIC",
    "fulfillmentMessages": [{
      "text": "FULFILLMENT_TEXT",
      "jsonPayload": "JSON",
      "error": "ERROR_STATUS",
      "liveAgentHandoff": {
        "metadata": {}
      }
    }],
  "autoResponded": "BOOLEAN",
  "autoRespondedMessages": [{
    "message": "MESSAGE_JSON",
    "responseSource": "SOURCE",
  }],
},
...
字段 说明
queryText 原始对话查询文本。如果使用自动拼写 已针对 Dialogflow 模型 queryText 启用更正功能 包含更正后的用户输入。
intentName 匹配意图的唯一标识符。
intentDisplayName 匹配的意图的名称。
intentDetectionConfidence 匹配的数字置信度分数 介于 queryTextintentName 之间。
text 文本响应。
jsonPayload 自定义载荷响应。 此字符串与自定义 在 Dialogflow 中定义的载荷。 如果载荷不包含有效的 Business Messages JSON 对象结构,error 可以描述问题。
error 包含 intent 执行方式消息的错误描述。
liveAgentHandoff 用于人工客服移交流程的自定义元数据。
autoResponded Business Messages 是否自动回复 并向用户提供 Dialogflow 的回答。
message 自动响应的载荷。
responseSource 自动回复的来源。请参阅 ResponseSource