本页介绍了如何构建同时支持 Google Chat 和 Google Chat 的 Google Chat 应用。 使用自然语言理解和响应 Dialogflow。本指南使用的是 Dialogflow CX, 直接与 Google Chat 集成您还可以使用 Dialogflow ES,用于构建 Dialogflow ES Google Chat 应用 该 Dialogflow ES Google Chat 指南。
以一款可帮助用户租借聊天内容的 Chat 应用为例, 汽车。用户可能会这样写:“我想租车”。通过 Chat 应用可能会回答如下问题: “您想要去哪里取车?”这会启动一个 Chat 应用同时与用户进行了对话, 能够理解并用人类语音做出响应,让您在预约租车时也能轻松做出响应。
这只是一个示例。Dialogflow 聊天应用 各种互动如果需要自然人类语音,则需要 Dialogflow Chat 应用。通过 预建代理 可帮助您快速上手,并展示 Dialogflow 的功能,例如:
- 预订航班
- 预约医生
- 订外卖
- 回答有关零售商品清单的问题,例如商品是否 有其他颜色可供选择
- <ph type="x-smartling-placeholder">
-
图 2.在 Dialogflow CX 中测试代理,以确保代理的逻辑和配置按预期运行。该图显示了一组连续的主题页面,这些页面涉及对话中的特定步骤(例如为租车设置上车点和还车地点),并配置了连接这些点的逻辑。系统将在模拟器中测试对话。 -
图 3.在 Google Cloud 控制台的 Chat API 配置页面上配置 Chat 应用以使用 Dialogflow CX 代理处理响应。 -
图 4.在 Google Chat 中使用 Dialogflow Chat 应用,讨论租车事宜。
目标
- 设置环境。
- 创建和部署 Dialogflow CX 代理。
- 创建和部署由 Dialogflow CX 代理。
- 测试 Chat 应用。
前提条件
- Business 或 Enterprise 有权访问以下内容的 Google Workspace 账号: Google Chat。
- 启用了结算功能的 Google Cloud 项目。如需检查现有项目是否已启用结算功能,请执行以下操作: 请参阅验证 项目的结算状态。如需创建项目并设置结算信息,请参阅 创建 Google Cloud 项目。
架构
下图显示了 使用 Dialogflow 构建的聊天应用:
在上图中,用户与 Dialogflow 交互 Chat 应用具有以下信息流:
- 用户在 Chat 中向 聊天应用(可通过私信或 Chat 聊天室。
- Dialogflow 虚拟客服位于 Google Cloud 中, 并处理消息以生成响应。
- (可选)使用 Dialogflow webhook, Dialogflow 代理可以与外部第三方服务交互, 作为项目管理系统或工单工具。
- Dialogflow 代理将响应发送回 Chat 中的 Chat 应用服务。
- 系统会将回复发送到 Chat 聊天室。
设置环境
在使用 Google API 之前,您需要先在 Google Cloud 项目中启用这些 API。 您可以在单个 Google Cloud 项目中启用一个或多个 API。在 Google Cloud 控制台中,启用 Google Chat API 和 Dialogflow API。
确认您是在正确的 Cloud 项目,然后点击下一步。
确认您启用的 API 正确无误,然后点击启用。
创建 Dialogflow CX 客服
答 Dialogflow CX 代理 是处理并发对话的虚拟客服 与您的最终用户互动它是一个自然语言理解模块, 能够理解人类语言的细微差别。Dialogflow 翻译最终用户文本 您的应用和服务会在对话期间访问结构化数据 可以理解。您可以设计和构建一个 Dialogflow 代理来处理 个会话。
Dialogflow 代理就像人类呼叫中心的客服人员。你对两者都进行了训练 处理预期的对话场景, 过于明确。
以下是创建 Dialogflow CX 代理的方法:
在 Dialogflow CX 控制台中,打开 Dialogflow CX 控制台。点击 菜单 > Dialogflow CX。
选择一个 Google Cloud 项目。要查找您的项目,您可能需要 点击全部,然后进行搜索。
现在,您可以选择预构建的代理或 创建您自己的模板。如果您想探索代理 请选择 预建代理 这也有助于了解代理的功能。
如需选择预建代理,请按以下步骤操作:
- 点击使用预建代理。
选择预建代理。在本指南中,请选择 旅行:租车。
代理被评为新手, 中级或高级(取决于代理使用的功能数量) 以及其对话逻辑的精密程度。选择一个 中级或高级代理可能需要特定于代理 自定义和设置,包括在 Google Cloud 控制台中启用功能和 API Google Cloud 控制台。
点击作为代理导入。
如需创建您自己的代理,请按照下列步骤操作:
- 点击创建代理。
- 选择自动生成 数据存储区代理 或选择自行构建以创建其他类型的代理。
有关代理构建流程的详细演示,请参阅 创建一个 Dialogflow CX 代理。
配置基本的代理设置:
点击创建。Dialogflow CX 开始创建代理,然后 显示代理的默认启动流程。
(可选)自定义代理。如需详细了解代理 自定义流程,请参阅 创建一个 Dialogflow CX 代理。
最佳实践是,测试代理:
- 点击 Test agent。
- 选择在环境中测试代理。
- 在“环境”中,选择草稿。
- 在“流”中,选择默认启动流。
- 在“页面”中,选择初始页。
- 在与代理交谈的撰写栏中,输入
Hello
并按 Enter 键。 代理通过自我介绍来进行回应。 - 通过测试示例对话完成测试。
Dialogflow CX 代理已创建。返回到 Dialogflow CX 控制台。 点击菜单图标 > Dialogflow CX。
在代理下,点击 > 复制名称。将此名称另存为 您在配置 Chat 应用时需要使用。
创建一个聊天应用并将其与 Dialogflow 代理连接
创建 Dialogflow CX 代理后,请按照以下步骤将其转换为 Chat 应用:
在 Google Cloud 控制台中,前往 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
。 - 在功能下,选择接收 1 对 1 消息,然后 加入聊天室和群组对话。
- 在连接设置下,选择 Dialogflow。
- 在 Dialogflow 设置下,选择 Dialogflow CX。
- 在代理或环境资源名称中,粘贴 Dialogflow CX 代理 复制的名称 创建一个 Dialogflow CX 代理。
- 将此 Chat 应用设为可供特定用户和群组使用 ,然后输入您的电子邮件地址。
- 在日志下,选择将错误记录到 Logging。
- 在应用名称中,输入
点击保存。
Chat 应用现在可以接收和回复了 Chat 中的消息。
测试 Chat 应用
通过发送消息来测试 Dialogflow CX Chat 应用 Google Chat。
使用您用于登录的 Google Workspace 账号打开 Google Chat 在您添加为可信测试员时提供的凭据。
- 点击 发起新对话。
- 在添加一人或多人字段中,输入 Chat 应用。
从结果中选择您的 Chat 应用。直接客户 消息会打开。
在与应用的新私信对话中,输入“
Hello
”并 按enter
。Dialogflow Chat 应用通过引入 本身。
- 使用 测试对话示例。
测试对话示例
要测试 Dialogflow CX Chat 应用,请在 在 Dialogflow CX 控制台或 Google Chat 中进行以下对话。 该说明有助于您了解 Dialogflow CX 代理如何解读 并生成自己的自然语言响应, 对话中的每个步骤。此示例对话基于 预构建代理 名为旅行:租车。
对话框 | 说明 |
---|---|
最终用户:Hello 代理:Hi!我是虚拟租车代理人。我可以 帮您开始新的租车预订。我能提供什么帮助 你今天呢? |
|
最终用户:我想租车。 代理:Where would you like to take up the vehicle? |
|
最终用户:拉斯维加斯 代理:好的,您的上车点将在拉斯维加斯。 代理:Is your sales off location different from your 自提地点? |
|
最终用户:是。我会在洛杉矶还车。 代理:好的,您的下车点将在洛杉矶。 代理:What date and time would you like to take up the vehicle? |
|
最终用户:我想在 3 月 5 日中午取车。 代理:What date and time would you like to off the vehicle? |
|
最终用户:3 月 15 日中午。 代理:请确认: 您将于以下时间后上车 拉斯维加斯 2024-03-05 12:00:00 还车 洛杉矶 2024 年 3 月 15 日 12:00:00 您觉得可以吗? |
|
最终用户:是,谢谢。 代理:Great!现在,让我们选择一辆车。 代理:Are you like an Economic 或 Lux 车辆? |
|
最终用户:请尽量经济。 代理:您希望 Cymbal Car or the Cymbal Truck? |
|
最终用户:Cymbal Truck。 代理:The Cymbal Truck is $50.33 per day. 该设备可容纳 4 人,并配有 AM/FM 收音机。 要继续付款吗? 最终用户:是的,谢谢。 |
|
代理:What card type will you are using? 最终用户:Altostrat 代理:请输入卡号。 最终用户:1234 1234 1234 1234 代理:What is the name on the card? 最终用户:Charlie 代理:What is the billing street address? 最终用户:1800 Amphibious Blvd.加利福尼亚州山景城 代理:What is the billing ZIP code? 最终用户:94045 代理:You will be Picking the Cymbal Car 2024-03-05 12:00:00 还在, 2024-03-15 12:00:00。此行程的总费用为 175.38 美元。 代理:感谢您与我们租房,祝您度过愉快的一天! |
|
通过 Dialogflow 发送卡片消息
<ph type="x-smartling-placeholder">Dialogflow 可以 text 或 卡片消息。用卡片回复 消息,请将其指定为 自定义载荷 在 fulfillment。
以下 JSON 展示了如何将卡片消息作为自定义载荷发送 执行方式:
json
{
'cardsV2': [{
'cardId': 'createCardMessage',
'card': {
'header': {
'title': 'A card message!',
'subtitle': 'Sent from Dialogflow',
'imageUrl': 'https://developers.google.com/chat/images/chat-product-icon.png',
'imageType': 'CIRCLE'
},
'sections': [
{
'widgets': [
{
'buttonList': {
'buttons': [
{
'text': 'Read the docs!',
'onClick': {
'openLink': {
'url': 'https://developers.google.com/workspace/chat'
}
}
}
]
}
}
]
}
]
}
}]
}
限制和注意事项
- 聊天互动事件
获得有限的支持和一些注意事项:
<ph type="x-smartling-placeholder">
- </ph>
- 以下
互动事件类型
:
<ph type="x-smartling-placeholder">
- </ph>
MESSAGE
ADDED_TO_SPACE
CARD_CLICKED
- 对于
MESSAGE
或ADDED_TO_SPACE
事件,发送到 Dialogflow 代理对应于argumentText
Chat 消息。如果邮件包含 斜杠命令,则该值 而是改为使用text
字段。 - 对于
CARD_CLICKED
事件,发送到 Dialogflow 代理的查询输入 格式为CARD_CLICKED.functionName
,其中functionName
对应function
字段的值 Action 对象 附加至互动卡片元素(如按钮)的卡片。 - 每个 Chat 互动事件的完整 JSON 载荷
作为查询参数中的自定义载荷发送到 Dialogflow;
访问
Dialogflow webhook
查询
WebhookRequest.payload
字段的值。
- 以下
互动事件类型
:
<ph type="x-smartling-placeholder">
- 回复时的注意事项
斜杠命令和
从卡片或对话框接收数据:
- 当 Dialogflow Chat 应用收到包含斜杠的消息时
命令,查询输入仅包含
text
字段的值。text
字段以斜杠命令的名称开头(例如,/command
),可用于配置 Dialogflow 代理的 intent 来检测斜杠命令 - 如果 Dialogflow 代理需要处理 聊天互动事件 JSON 载荷, 它可以通过使用 Dialogflow webhook 检查查询参数中的自定义载荷。
- 如需显示对话框,请执行以下操作:
Dialogflow 代理的单个自定义 JSON 载荷进行响应,
包含包含“
DIALOG
”的消息 操作响应。 - 为了处理从卡片输入的数据,Dialogflow 代理可以检测
以文本
CARD_CLICKED
开头并以 包含适当的 action。
- 当 Dialogflow Chat 应用收到包含斜杠的消息时
命令,查询输入仅包含
- 不支持链接预览。
- 如果 Dialogflow 代理只响应一条消息,该消息
会同步发送到 Google Chat。如果 Dialogflow 代理响应,
处理多条消息,则所有消息都会发送到 Chat
来异步加载
create
针对 Chat API 中的spaces.messages
资源调用 1 次 消息。 - 将 Dialogflow CX 与 Chat 集成使用时, 您必须设置 Dialogflow 代理和 Chat 应用 在同一 Google Cloud 项目中运行。如果您需要设置 Dialogflow 和聊天,然后就可以 设置中间服务器以方便连接。要了解如何操作, 看看这个 适用于 Dialogflow CX 的 Chat 集成示例 。
问题排查
当 Google Chat 应用或 card 会返回错误, 聊天界面会显示一条内容为“出了点问题”的消息。 或“无法处理您的请求”。有时,Chat 界面 不会显示任何错误消息,但 Chat 应用或 卡片会产生意外结果;例如,卡片消息 。
虽然 Chat 界面中可能不会显示错误消息, 提供描述性错误消息和日志数据,以帮助您修正错误 启用 Chat 应用的错误日志记录时。如需观看方面的帮助, 请参阅 排查并修正 Google Chat 错误。
清理
为避免系统因 我们建议您删除 Cloud 项目中。
-
在 Google Cloud 控制台中,前往管理资源页面。点击
菜单 > IAM 和管理员
> 管理资源。
<ph type="x-smartling-placeholder"></ph> 前往 Resource Manager
- 在项目列表中,选择要删除的项目,然后点击 删除 。
- 在对话框中输入项目 ID,然后点击关停以删除项目 项目。
相关主题
- Dialogflow CX 可将
状态机
可帮助您设计 Dialogflow 代理的方法,
更好的最终用户体验,以及更好的
开发工作流。构建 Dialogflow 时
聊天应用,建议使用 Dialogflow CX。
- 如需详细了解如何构建和配置代理,请参阅 Dialogflow CX 代理。
- 有关如何构建和配置 请参阅 创建一个 Dialogflow CX 代理。
- 使用 Gemini 构建 Google Chat 应用。 Codelab:有关如何构建 Dialogflow CX 数据的示例 商店客服人员,请查看 Chat 知识应用 此 Codelab
- 使用 Gemini 构建 Google Chat 应用。 Codelab:有关如何构建 Dialogflow CX 的示例 对话代理,请参阅反馈聊天应用 此 Codelab
- Dialogflow ES 是将 Dialogflow 与聊天应用结合使用的另一种方式。