本页面介绍了如何使用 Dialogflow 构建同时可以理解和使用自然语言响应的 Google Chat 应用。本指南使用 Dialogflow CX,该服务可与开发者预览版中的 Google Chat 直接集成。您可以按照 Dialogflow ES Google Chat 指南,使用 Dialogflow ES 构建 Dialogflow ES Google Chat 应用。
例如,假设有一个帮助用户租车的 Chat 应用。用户可能会输入“我想租一辆汽车”。Chat 应用可以回答类似于“您想在哪里取车?”这样的问题。在用户预订租车服务时,Chat 应用可理解并做出真人回应,从而与用户展开真人般的对话。
这只是一个示例。Dialogflow 聊天应用在各种互动中都很有用。如果需要自然人类语音,则需要使用 Dialogflow Chat 应用。预建代理可帮助您快速上手,并展示 Dialogflow 的功能,例如:
- 预订航班
- 预约看病
- 订外卖
- 回答有关零售商品清单的问题,例如商品是否有其他颜色可供选择
-
图 2.在 Dialogflow CX 中测试代理,确保代理的逻辑和配置按预期运行。该图显示了一组按顺序排列的主题页面,这些页面涉及对话中的特定步骤(例如为租车设置上车点和还车地点),并配置了关联这些步骤的逻辑。对话在模拟器中进行测试。 -
图 3.在 Google Cloud 控制台的 Chat API 配置页面上,配置 Chat 应用,以使用 Dialogflow CX 代理处理响应。 -
图 4.使用 Google Chat 中的 Dialogflow Chat 应用就租车预订事宜展开对话。
目标
- 设置环境。
- 创建和部署 Dialogflow CX 代理。
- 创建和部署由 Dialogflow CX 代理提供支持的聊天应用。
- 测试 Chat 应用。
前提条件
- 有权访问 Google Chat 的 Google Workspace 帐号。
- Google Cloud 项目。
- 确保为 Cloud 项目启用结算功能。了解如何验证项目的结算状态。
架构
下图显示了使用 Dialogflow 构建的 Chat 应用的架构:
在上图中,用户与 Dialogflow Chat 应用交互的用户具有以下信息流:
- 用户在 Chat 中通过私信或 Chat 聊天室向 Chat 应用发送消息。
- 位于 Google Cloud 中的 Dialogflow 虚拟客服会接收并处理消息以生成响应。
- (可选)使用 Dialogflow 网络钩子,Dialogflow 代理可以与外部第三方服务(如项目管理系统或工单工具)进行交互。
- Dialogflow 代理会将响应发回给 Chat 中的 Chat 应用服务。
- 系统会将回复发送到 Chat 聊天室。
设置环境
在使用 Google API 之前,您需要在 Google Cloud 项目中启用它们。您可以在单个 Google Cloud 项目中启用一个或多个 API。在 Google Cloud 控制台中,启用 Google Chat API 和 Dialogflow API。
确认您要在正确的 Cloud 项目中启用 API,然后点击下一步。
确认您启用了正确的 API,然后点击启用。
创建 Dialogflow CX 客服
Dialogflow CX 代理是一种虚拟客服,可处理与最终用户的并发对话。它是一种自然语言理解模块,能够理解人类语言的细微差别。Dialogflow 将在对话过程中将最终用户文本转换为应用和服务可以理解的结构化数据。您可以设计并构建一个 Dialogflow 代理来处理您的系统所需的对话类型。
Dialogflow 代理类似于人类呼叫中心的客服人员。您可以对这两者进行训练,以处理预期的对话场景,并且训练不必过于明确。
创建 Dialogflow CX 代理的方法如下:
在 Dialogflow CX 控制台中,打开 Dialogflow CX 控制台。点击 Menu 图标 > Dialogflow CX。
选择一个 Google Cloud 项目。如需查找项目,您可能需要点击 All(全部),然后搜索该项目。
现在,您可以选择预构建的代理或创建自己的代理。如果您希望稍后详细探索代理自定义,请选择一个预构建代理,这也有助于了解代理的功能。
如需选择预建代理,请按以下步骤操作:
- 点击使用预建代理。
选择预建代理。在本指南中,请选择旅行:租车。
根据代理使用的功能数量以及对话逻辑的复杂程度,代理分为初级、中级或高级三级。选择中级或高级代理可能需要特定于代理的自定义和设置,包括在 Google Cloud 控制台中启用功能和 API。
点击作为代理导入。
如需创建自己的代理,请按以下步骤操作:
- 点击创建代理。
- 选择自动生成以创建数据存储区代理,或选择构建您自己的代理以创建其他类型的代理。
如需详细了解代理构建流程,请参阅创建 Dialogflow CX 代理。
配置基本代理设置:
点击创建。Dialogflow CX 开始创建代理,然后显示该代理的默认启动流程。
(可选)自定义代理。如需详细了解代理自定义过程,请参阅创建 Dialogflow CX 代理。
最佳实践是:
- 点击测试代理。
- 选择在环境中测试代理。
- 在“环境”中,选择草稿。
- 在 Flow 中,选择 Default Start Flow(默认起始流)。
- 在页面中,选择初始页。
- 在与客服人员交谈撰写栏,输入
Hello
,然后按 Enter 键。 代理通过自我介绍来进行响应。 - 通过提供示例测试对话来完成测试。
Dialogflow CX 代理已创建。返回 Dialogflow CX 控制台。 点击 Menu 图标 > 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 代理名称。
- 将此聊天应用提供给您网域中的特定人员和群组,然后输入您的电子邮件地址。
- 在日志下,选择将错误记录到 Logging。
- 在应用名称中,输入
点击保存。
Chat 应用已准备好在 Chat 中接收和回复消息。
测试 Chat 应用
通过在 Google Chat 中发送消息来测试 Dialogflow CX Chat 应用。
使用您将自己添加为可信测试员时提供的 Google Workspace 账号打开 Google Chat。
- 点击 发起新聊天。
- 在添加 1 位或更多人字段中,输入您的 Chat 应用的名称。
从结果中选择您的 Chat 应用。系统会打开一条私信。
在与该应用的新私信对话中,输入
Hello
,然后按enter
。Dialogflow Chat 应用通过自我介绍进行回应。
- 通过提供示例测试对话来完成测试。
测试对话示例
如需在 Dialogflow CX 控制台或 Google Chat 中测试 Dialogflow CX Chat 应用,请进行以下对话。这些说明可帮助您了解 Dialogflow CX 代理如何解读用户的自然语言,并在对话的每个步骤中生成自己的自然语言响应。此示例对话基于名为“旅行:汽车租赁”的预构建代理。
对话框 | 说明 |
---|---|
最终用户:Hello 代理:Hi!我是虚拟租车经纪人。我可以帮您开始新的租车预订。您现在需要什么帮助? |
|
最终用户:我想租车。 代理:Where would you like to take the vehicle? |
|
最终用户:拉斯维加斯 代理:好的,您的上车点将在拉斯维加斯。 代理:您的下车点与上车点不同吗? |
|
最终用户:是。我会在洛杉矶还车。 代理:好的,您的下车点将在洛杉矶。 代理:您想在什么日期和时间自提车辆? |
|
最终用户:我想在 3 月 5 日中午取车。 代理:您想在什么日期和时间出发车辆? |
|
最终用户:3 月 15 日中午。 代理:请确认: You will be Picking the vehicle up in Las Vegas 2024-03-05 12:00:00 and dropping it off in Los 搜索内容 2024-03-15 12:00:00 听起来是否正确? |
|
最终用户:好的,谢谢。 代理:太棒了!现在,让我们选择一辆车。 代理:你想要经济型车还是豪华车? |
|
最终用户:请省钱。 代理:Will you like the Cymbal Car or the Cymbal Truck? |
|
最终用户:Cymbal Truck。 代理:The Cymbal Truck is $50.33 per day. 这款手表可容纳 4 人,并配有 AM/FM 收音机。 要继续付款吗? 最终用户:可以。 |
|
代理:What card type will you use? 最终用户:Altostrat 代理:请输入卡号。 最终用户:1234 1234 1234 1234 代理:What is the name on the card? 最终用户:Charlie 代理:What is the billing street address? 最终用户:1800 Amphibious Blvd. Mountain View, CA 代理:What is the billing ZIP code? 最终用户:94045 代理:You will be Picking the Cymbal Car up in Las Vegas, 2024-03-05 12:00:00 and dropping it off, 2024-03-15 12:00:00. 本次行程的总费用将是 175.38 美元。 代理:Thanks you for crawling with us, have a sure of day! |
|
从 Dialogflow 发送卡片消息
Dialogflow 可以使用文本或卡片消息进行响应。如需使用卡片消息进行响应,请在 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'
}
}
}
]
}
}
]
}
]
}
}]
}
限制和注意事项
- 对于聊天互动事件,我们仅提供有限的支持,并且有一些注意事项:
- 支持以下互动事件类型:
MESSAGE
ADDED_TO_SPACE
- 发送到 Dialogflow 代理的查询输入对应于 Chat 消息中的
argumentText
字段的值。如果消息包含斜杠命令,系统会改用text
字段的值。 - 每个聊天互动事件的完整 JSON 载荷将作为查询参数中的自定义载荷发送到 Dialogflow,并可通过查询
WebhookRequest.payload
字段的值使用 Dialogflow 网络钩子访问。
- 支持以下互动事件类型:
- 斜杠命令仅提供有限的支持:
- Dialogflow 聊天应用不支持用于打开对话框的斜杠命令。
- 当 Dialogflow 聊天应用收到包含斜杠命令的消息时,查询输入仅包含
text
字段的值。text
字段以斜杠命令的名称(例如/command
)开头,您可以使用它来配置 Dialogflow 代理的意图以检测斜杠命令。 - 如果 Dialogflow 代理需要处理 slash 命令的聊天互动事件 JSON 载荷,则可以使用 Dialogflow 网络钩子检查查询参数中的自定义载荷,从而实现此目的。
- 不支持链接预览。
- 如果 Dialogflow 代理仅返回一条消息,则该消息会同步发送到 Google Chat。如果 Dialogflow 代理返回多条消息,那么系统会通过在 Chat API 中对
spaces.messages
资源调用create
方法,为每条消息异步将所有消息发送到 Chat。
问题排查
当 Google Chat 应用或卡片返回错误时,Chat 界面会显示“出了点问题”或“无法处理您的请求”的消息。有时,Chat 界面不会显示任何错误消息,但 Chat 应用或卡片会产生意外结果;例如,卡片消息可能不会显示。
虽然 Chat 界面中可能不会显示错误消息,但当为 Chat 应用启用错误日志记录功能时,您可以借助描述性错误消息和日志数据修正错误。如需查看、调试和修正错误方面的帮助,请参阅排查并修正 Google Chat 错误。
清理
为避免因本教程中使用的资源导致您的 Google Cloud 帐号产生费用,我们建议您删除该 Cloud 项目。
- 在 Google Cloud 控制台中,前往管理资源页面。依次点击菜单图标 > IAM 和管理 > 管理资源。
- 在项目列表中,选择要删除的项目,然后点击删除 。
- 在对话框中输入项目 ID,然后点击关停以删除项目。
相关主题
- Dialogflow CX 在设计 Dialogflow 代理的过程中采用了状态机方法,可让您清晰明确地控制对话、更好的最终用户体验和更出色的开发工作流。构建 Dialogflow Chat 应用时,我们建议使用 Dialogflow CX。
- 如需详细了解如何构建和配置代理,请参阅 Dialogflow CX 代理。
- 如需查看有关如何构建和配置代理的详细演示,请参阅创建 Dialogflow CX 代理。
- Dialogflow ES 是将 Dialogflow 与聊天应用搭配使用的另一种方式。