构建 Dialogflow ES Google Chat 应用

本页介绍了如何构建一个使用 Dialogflow ES 来理解和响应自然语言的 Google Chat 应用。您还可以使用与 Google Chat 直接集成的 Dialogflow CX,按照 Dialogflow CX Google Chat 指南构建 Dialogflow CX Google Chat 应用。

目标

  • 设置环境。
  • 创建和部署 Dialogflow ES 代理。
  • 创建并部署由 Dialogflow ES 代理提供支持的聊天应用。
  • 测试 Chat 应用。

前提条件

架构

下图展示了使用 Dialogflow 构建的聊天应用的架构:

使用 Dialogflow 实现的 Chat 应用的架构。

在上图中,用户与 Dialogflow Chat 应用互动时,信息流如下所示:

  1. 用户在 Chat 中通过私信或 Chat 聊天室向 Chat 应用发送消息。
  2. 位于 中的 Dialogflow 虚拟代理会接收并处理消息,以生成响应。
  3. (可选)使用 Dialogflow Webhook,Dialogflow 代理可以与外部第三方服务(例如项目管理系统或工单工具)进行交互。
  4. Dialogflow 代理会向 Chat 中的 Chat 应用服务发送响应。
  5. 回答会发送到 Chat 聊天室。

设置环境

在使用 Google API 之前,您需要在 Google Cloud 项目中启用它们。 您可以在单个 Google Cloud 项目中开启一个或多个 API。
  1. 在 Google API 控制台中,启用 Google Chat API 和 Dialogflow API。

    启用 API

  2. 确认您要在正确的云项目中启用 API,然后点击下一步。

  3. 确认您要启用正确的 API,然后点击启用。

创建 Dialogflow ES 代理

如果您没有现有的 Dialogflow ES 代理,请执行以下操作:

  1. 转到 Dialogflow ES 控制台。
  2. 点击创建代理。
  3. 为其命名,然后选择默认语言和时区。
  4. 将其与您的云项目相关联。
  5. 点击创建。
  6. 根据聊天应用对话流程的需要构建意图和实体。您可以从问候意图开始。
  7. 记下您的项目 ID。

如需详细指南,请参阅构建智能体。

创建聊天应用并将其与 Dialogflow 代理相关联

创建 Dialogflow ES 代理后,请按照以下步骤将其转换为聊天应用:

  1. 在 Google API 控制台中,前往 Google Chat API。搜索“Google Chat API”,然后点击 Google Chat API,再点击管理。

    前往 Chat API

  2. 点击配置并设置 Chat 应用:

    1. 在应用名称中,输入 Dialogflow App。
    2. 在头像网址中,输入 https://developers.google.com/workspace/chat/images/quickstart-app-avatar.png。
    3. 在说明中,输入 Responds to real human conversation。
    4. 在功能下,选择加入聊天室和群组对话。
    5. 在连接设置下,选择 Dialogflow。
    6. 在 Dialogflow 设置下,选择 Dialogflow ES。
    7. 面向您网域中的特定人员和群组提供此聊天应用,然后输入您的电子邮件地址。
    8. 在日志下,选择将错误记录到 Logging。
  3. 点击保存。

Chat 应用已准备好接收和回复 Chat 中的消息。

测试 Chat 应用

在 Google Chat 中向 Dialogflow ES 聊天应用发送消息,以测试该应用。

  1. 使用您在添加自己为可信测试员时提供的 Google Workspace 账号打开 Google Chat。

    前往 Google Chat

  2. 点击 发起新聊天。
  3. 在添加 1 位或多位用户字段中,输入 Chat 应用的名称。
  4. 从结果中选择 Chat 应用。系统会打开私信对话。

  5. 在与应用来往的新私信中,输入 Hello,然后按 enter。

    Dialogflow Chat 应用会以问候消息进行回复。

文本响应

文字回答会以短信的形式发送到 Google Chat。 通过此格式,您可以使用某些(轻量级 Markdown)符号将文本设为粗体或斜体。

文本消息响应在视觉上与 Dialogflow 控制台中的默认文本响应相同。不过,原始 API 响应会略有不同。 它还会将平台配置设置为 GOOGLE_HANGOUTS,这在为多个集成构建代理时可能很有用。

"fulfillmentMessages": [
{
   "text": {
   "text": [
        "This is a test."
   ]
},
  "platform": "GOOGLE_HANGOUTS"
},

卡片

卡片响应会作为卡片消息发送到 Google Chat。

图片

图片响应作为 Google Chat 图片微件发送到 Google Chat。

自定义负载

如需发送其他类型的 Google Chat 聊天消息,您可以使用自定义载荷。

借助 Google Chat 自定义载荷,您可以创建更高级的卡片。一张卡片可以包含一个或多个部分。每个部分都可以有标题。您可以查看卡片消息指南,了解如何使用此功能创建各种组合。不过,使用自定义载荷意味着您必须提供 JSON 格式。

以下示例展示了用于创建包含卡片的自定义消息的载荷:

{ "hangouts": { "hostAppDataAction": { "chatDataAction": {
  "createMessageAction": { "message": { "cardsV2": [{
    "cardId": "pizza",
    "card": {
      "header": {
        "title": "Pizza Delivery Customer Support",
        "subtitle": "pizzadelivery@example.com",
        "imageUrl": "https://goo.gl/aeDtrS"
      },
      "sections": [{ "widgets": [{ "textParagraph": {
        "text": " Your pizza is here!"
      }}]}]
    }
  }]}}
}}}}

限制和注意事项

  • 将 Google Chat 应用与 Dialogflow 搭配使用时,聊天事件对象具有以下限制和注意事项:
    • 应用首页活动:目前尚不支持 APP_HOME 活动。
    • Dialogflow 查询输入:作为查询输入发送给 Dialogflow 代理的文本取决于事件类型:
      • MESSAGE:聊天消息中 argumentText 字段的值。
      • APP_COMMAND:字符串 "APP_COMMAND_PAYLOAD"。
      • ADDED_TO_SPACE:系统会发送默认欢迎活动。
      • REMOVED_FROM_SPACE:字符串 "REMOVED_FROM_SPACE_PAYLOAD"。
      • CARD_CLICKED:字符串 "BUTTON_CLICKED_PAYLOAD"。
      • WIDGET_UPDATED:字符串 "WIDGET_UPDATED_PAYLOAD"(用于自动补全)。
    • 完整事件载荷:聊天互动事件的完整 JSON 载荷会通过 WebhookRequest.payload 字段发送到 Dialogflow。您可以在 Dialogflow webhook 中访问此信息。如需了解详情,请参阅 Dialogflow ES Webhook 请求文档。
  • 在响应命令和从卡片或对话框接收数据时,请注意以下事项:
  • 不支持链接预览。
  • 如果 Dialogflow 代理只回复一条消息,则该消息会同步发送到 Google Chat。如果 Dialogflow 代理回复了多条消息,则会通过在 Chat API 中对 spaces.messages 资源调用 create 方法,将所有消息异步发送到 Chat。每条消息调用一次该方法。
  • 将 Dialogflow ES 集成到 Chat 中时,Dialogflow 代理和 Chat 应用必须在同一 Google Cloud 项目中设置。

问题排查

如需调试 Chat 应用,请先查看错误日志。由于此应用使用 Dialogflow,因此您可以使用多种日志记录和问题排查资源:

清理

为避免系统因本教程中使用的资源向您的 账号收取费用,我们建议您删除云项目。

  1. 在 Google API 控制台中,进入管理资源页面。依次点击 菜单 > IAM 和管理 > 管理资源。

    前往资源管理器

  2. 在项目列表中,选择要删除的项目,然后点击删除图标 。
  3. 在对话框中输入项目 ID,然后点击关停以删除项目。
  • Dialogflow CX 是将 Dialogflow 与聊天应用搭配使用的另一种方式。