使用 Dialogflow ES 构建 Google Chat 加载项

本页面介绍了如何构建 Google Chat 应用作为 Google Workspace 插件,该插件使用 Dialogflow ES 来理解自然语言并做出响应。您还可以使用 Dialogflow CX(它与 Google Chat 直接集成)按照 Dialogflow CX Google Chat 指南构建 Dialogflow CX Google Chat 应用。

目标

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

前提条件

架构

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

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

在上图中,与 Dialogflow Chat 应用交互的用户具有以下信息流:

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

设置环境

在使用 Google API 之前,您需要在 Google 云项目中启用它们。您可以在单个 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. 根据 Chat 应用对话流程的需要构建 intent 和实体。您可以从问候 intent 开始。
  7. 记下您的项目 ID

如需详细指南,请参阅构建代理

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

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

  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. 面向您网域中的特定人员和群组提供此 Chat 扩展应用 ,然后输入您的电子邮件地址。
    8. 日志 下,选择将错误记录到 Logging
  3. 点击保存

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

测试 Chat 应用

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

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

    前往 Google Chat

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

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

    Dialogflow Chat 应用会回复一条问候消息。

文本响应

文本响应 作为 文本消息发送到 Google Chat。 借助此格式,您可以将文本加粗或斜体,只需将文本换成特定的(Markdown 灯)符号即可。

从外观上看,文本消息响应与 Dialogflow 控制台中的 Default Text Response 相同。不过,原始 API 响应看起来会略有不同。 它还将平台配置设置为 GOOGLE_HANGOUTS,其在构建用于多个集成的代理时可能会很有趣 。

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

卡片

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

Google 图片

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

自定义负载

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

借助 Google Chat 自定义载荷,您可以创建更高级的卡片。一张卡片可以包含一个或多个部分。每个部分可以有一个标题。 您可以查看 Google Workspace 插件扩展 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 Workspace 插件与 Dialogflow 搭配使用时,Chat 事件对象 具有以下限制和注意事项:
    • 应用主页事件 :尚不支持 APP_HOME 事件。
    • Dialogflow 查询输入 :作为查询输入发送到 Dialogflow 代理的文本取决于事件类型:
      • MESSAGE :Chat 消息中的 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"(用于 自动补全)。
    • 完整事件载荷 :Chat 交互事件的完整 JSON 载荷会在 WebhookRequest.payload 字段中发送到 Dialogflow。您可以在 Dialogflow webhook 中访问此信息。如需了解详情,请参阅 Dialogflow ES webhook 请求文档
  • 响应 命令接收来自卡片或对话框的数据的注意事项:
  • 链接预览不受支持。
  • 如果 Dialogflow 代理仅响应一条消息,则该消息会同步发送到 Google Chat。如果 Dialogflow 代理响应 多条消息,则所有消息都会异步发送到 Chat ,方法是针对每条 消息在 Chat API 的 spaces.messages 资源上调用一次 create 方法。
  • 将 Dialogflow ES 与 Chat 集成时,必须在同一 Google Cloud 云项目中设置 Dialogflow 代理和 Chat 应用。

问题排查

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

清理

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

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

    转到 Resource Manager

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