本页介绍了如何构建一个 Google Chat 应用,使其作为 Google Workspace 插件使用 Dialogflow ES 来理解自然语言并做出响应。您还可以使用与 Google Chat 直接集成的 Dialogflow CX,按照 Dialogflow CX Google Chat 指南构建 Dialogflow CX Google Chat 应用。
目标
- 设置环境。
- 创建并部署 Dialogflow ES 代理。
- 创建并部署由 Dialogflow ES 代理提供支持的 Chat 应用。
- 测试 Chat 应用。
前提条件
- 拥有可访问 Google Chat 的 Google Workspace 商务版或企业版账号。
- 启用了结算功能的 Google Cloud 项目。如需检查现有项目是否已启用结算功能,请参阅验证项目的结算状态。如需创建项目并设置结算,请参阅创建 Google Cloud 项目。
架构
下图展示了使用 Dialogflow 构建的聊天应用的架构:
在上图中,与 Dialogflow Chat 应用互动的用户的信息流如下:
- 用户通过私信或 Chat 聊天室在 Chat 中向 Chat 应用发送消息。
- 位于 中的 Dialogflow 虚拟代理会接收并处理消息,以生成响应。
- (可选)使用 Dialogflow Webhook,Dialogflow 代理可以与外部第三方服务(例如项目管理系统或工单工具)进行互动。
- Dialogflow 代理会向 Chat 中的 Chat 应用服务发送响应。
- 回答会发送到 Chat 聊天室。
设置环境
在使用 Google API 之前,您需要在 Google Cloud 项目中启用它们。 您可以在单个 Google Cloud 项目中启用一个或多个 API。在 Google API 控制台中,启用 Google Chat API 和 Dialogflow API。
确认您要在正确的 Cloud 项目中启用 API,然后点击下一步。
确认您要启用正确的 API,然后点击启用。
创建 Dialogflow ES 代理
如果您当前没有 Dialogflow ES 代理,请执行以下操作:
- 转到 Dialogflow ES 控制台。
- 点击创建代理。
- 为其命名,然后选择默认语言和时区。
- 将其与您的 Cloud 项目相关联。
- 点击创建。
- 根据聊天应用对话流程的需要构建意图和实体。您可以从问候意图开始。
- 记下您的项目 ID。
如需详细指南,请参阅构建代理。
创建聊天应用并将其与 Dialogflow 代理相关联
创建 Dialogflow ES 代理后,请按以下步骤将其转换为聊天应用:
在 Google API 控制台中,前往 Google Chat API。搜索“Google Chat API”,然后点击 Google Chat API,再点击管理。
点击配置并设置 Chat 应用:
- 在应用名称中,输入
Dialogflow App。 - 在头像网址中,输入
https://developers.google.com/workspace/chat/images/quickstart-app-avatar.png。 - 在说明中,输入
Responds to real human conversation。 - 在功能下,选择加入聊天室和群组对话。
- 在连接设置下,选择 Dialogflow。
- 在 Dialogflow 设置下,选择 Dialogflow ES。
- 面向网域中的特定人员和群组提供此 Chat 扩展应用,然后输入您的电子邮件地址。
- 在日志下,选择将错误记录到 Logging。
- 在应用名称中,输入
点击保存。
Chat 应用已准备就绪,可以接收和回复 Chat 中的消息。
测试 Chat 应用
在 Google Chat 中向 Dialogflow ES Chat 应用发送消息,以测试该应用。
使用您在添加自己为可信测试人员时提供的 Google Workspace 账号打开 Google Chat。
- 点击 发起新聊天。
- 在添加 1 位或多位用户字段中,输入 Chat 应用的名称。
从结果中选择您的 Chat 应用。系统会打开一条私信。
在与应用来往的新私信中,输入
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 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 搭配使用时,聊天事件对象存在以下限制和注意事项:
- 应用首页活动:目前尚不支持
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 代理需要处理聊天互动事件 JSON 载荷,则可以使用 Dialogflow 网络钩子来检查查询参数中的自定义载荷。
- 如需显示来自 Dialogflow 代理的对话框,请使用包含导航
pushCard的单个自定义 JSON 载荷进行响应RenderActions。 - 如需处理从卡片输入的数据,您可以使用 Dialogflow 网络钩子,并使用包含相应操作的单个自定义 JSON 载荷进行响应。
- 不支持链接预览。
- 如果 Dialogflow 代理只回复一条消息,则该消息会同步发送到 Google Chat。如果 Dialogflow 代理使用多条消息进行响应,则会通过在 Chat API 中对
spaces.messages资源调用create方法,以异步方式将所有消息发送到 Chat,每条消息调用一次。 - 将 Dialogflow ES 与 Chat 集成时,必须在同一 Google Cloud 项目中设置 Dialogflow 代理和 Chat 应用。
问题排查
如需调试 Chat 应用,请先查看错误日志。由于此应用使用 Dialogflow,因此您可以使用多种日志记录和问题排查资源:
Google Workspace 插件日志:查询日志,详细了解插件的行为,包括其与 Chat 的互动。请参阅查询 Google Workspace 加购项的日志。
Google Chat 应用错误:如需了解常规 Chat 应用错误消息和修复方法,请参阅排查和修复 Chat 应用错误。
Dialogflow ES 对话记录: 历史记录 | Dialogflow ES
Dialogflow 常规问题排查: 问题排查 | Dialogflow
清理
为避免系统因本教程中使用的资源向您的 账号收取费用,我们建议您删除 Cloud 项目。
- 在 Google API 控制台中,前往管理资源页面。依次点击 菜单 > IAM 和管理 > 管理资源。
- 在项目列表中,选择要删除的项目,然后点击删除 。
- 在对话框中输入项目 ID,然后点击关停以删除项目。
相关主题
- Dialogflow CX 是将 Dialogflow 与 Chat 应用搭配使用的另一种方式。