本页介绍了如何构建一个使用 Dialogflow ES 来理解和响应自然语言的 Google Chat 应用。您还可以使用与 Google Chat 直接集成的 Dialogflow CX,按照 Dialogflow CX Google Chat 指南构建 Dialogflow CX Google Chat 应用。
目标
- 设置环境。
- 创建和部署 Dialogflow ES 代理。
- 创建并部署由 Dialogflow ES 代理提供支持的聊天应用。
- 测试 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。
确认您要在正确的云项目中启用 API,然后点击下一步。
确认您要启用正确的 API,然后点击启用。
创建 Dialogflow ES 代理
如果您没有现有的 Dialogflow ES 代理,请执行以下操作:
- 转到 Dialogflow ES 控制台。
- 点击创建代理。
- 为其命名,然后选择默认语言和时区。
- 将其与您的云项目相关联。
- 点击创建。
- 根据聊天应用对话流程的需要构建意图和实体。您可以从问候意图开始。
- 记下您的项目 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。
- 面向您网域中的特定人员和群组提供此聊天应用,然后输入您的电子邮件地址。
- 在日志下,选择将错误记录到 Logging。
- 在应用名称中,输入
点击保存。
Chat 应用已准备好接收和回复 Chat 中的消息。
测试 Chat 应用
在 Google Chat 中向 Dialogflow ES 聊天应用发送消息,以测试该应用。
使用您在添加自己为可信测试员时提供的 Google Workspace 账号打开 Google Chat。
- 点击 发起新聊天。
- 在添加 1 位或多位用户字段中,输入 Chat 应用的名称。
从结果中选择 Chat 应用。系统会打开私信对话。
在与应用来往的新私信中,输入
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 自定义载荷,您可以创建更高级的卡片。一张卡片可以包含一个或多个部分。每个部分都可以有标题。您可以查看卡片消息指南,了解如何使用此功能创建各种组合。不过,使用自定义载荷意味着您必须提供 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 智能体需要处理 Chat interaction event JSON 载荷,则可以使用 Dialogflow webhook 检查查询参数中的自定义载荷。
- 如需显示来自
Dialogflow 代理的对话框,请使用
包含
导航
pushCard的RenderActions对象来响应单个自定义 JSON 载荷。 - 如需处理从卡片输入的数据,您可以使用 Dialogflow 网络钩子,并使用包含相应操作的单个自定义 JSON 载荷进行响应。
- 不支持链接预览。
- 如果 Dialogflow 代理只回复一条消息,则该消息会同步发送到 Google Chat。如果 Dialogflow 代理回复了多条消息,则会通过在 Chat API 中对
spaces.messages资源调用create方法,将所有消息异步发送到 Chat。每条消息调用一次该方法。 - 将 Dialogflow ES 集成到 Chat 中时,Dialogflow 代理和 Chat 应用必须在同一 Google Cloud 项目中设置。
问题排查
如需调试 Chat 应用,请先查看错误日志。由于此应用使用 Dialogflow,因此您可以使用多种日志记录和问题排查资源:
Google Workspace 插件日志:查询日志,获取有关 Chat 应用行为的详细信息,包括其与 Chat 的互动。请参阅查询 Google Workspace 插件的日志。
Google Chat 应用错误:如需了解一般的 Chat 应用错误消息和修复方法,请参阅排查和修复 Chat 应用错误。
Dialogflow ES 对话记录: 历史记录 | Dialogflow ES
Dialogflow 常规问题排查: 问题排查 | Dialogflow
清理
为避免系统因本教程中使用的资源向您的 账号收取费用,我们建议您删除云项目。
- 在 Google API 控制台中,进入管理资源页面。依次点击 菜单 > IAM 和管理 > 管理资源。
- 在项目列表中,选择要删除的项目,然后点击删除图标 。
- 在对话框中输入项目 ID,然后点击关停以删除项目。
相关主题
- Dialogflow CX 是将 Dialogflow 与聊天应用搭配使用的另一种方式。