本页介绍了如何使用 Dialogflow 构建一个 Google Chat 应用,该应用可以理解自然语言并以自然语言做出回复。本指南使用 Dialogflow CX,该工具可与 Google Chat 直接集成。您还可以按照 Dialogflow ES Google Chat 指南,使用 Dialogflow ES 构建 Dialogflow ES Google Chat 应用。
例如,假设某个 Chat 应用可帮助用户租车。用户可能会写“我要租车”。Chat 应用可能会回答“您想在哪里取车?”这样的问题,从而与用户开始像人一样的对话,在预订租车时,Chat 应用既能理解用户的语音,也能用语音做出回应。
这只是一个示例。Dialogflow Chat 应用适用于各种类型的交互。如果需要自然的人类语音,则需要使用 Dialogflow Chat 应用。预构建的代理可帮助您快速上手,并展示 Dialogflow 的功能,例如:
- 预订机票
- 预约医生预约
- 下单外卖
- 回答有关零售商品目录的问题,例如商品是否有其他颜色
-
图 2. 在 Dialogflow CX 中测试客服,确保其逻辑和配置能按预期运行。该图显示了一组有关对话中特定步骤(例如设置租车的取车和还车地点)的主题页面,并配置了将这些页面关联起来的逻辑。对话是在模拟器中进行测试的。 -
图 3. 在 Google Cloud 控制台中的 Chat API 配置页面上,配置 Chat 应用以使用 Dialogflow CX 代理处理回答。 -
图 4. 在 Google Chat 中使用 Dialogflow Chat 应用就预订租车事宜进行对话。
目标
- 设置环境。
- 创建和部署 Dialogflow CX 客服。
- 创建并部署由 Dialogflow CX 客服提供支持的 Chat 应用。
- 测试 Chat 应用。
前提条件
- 拥有对 Google Chat 访问权限的商务版或企业版 Google Workspace 账号。
- 启用了结算功能的 Google Cloud 项目。如需检查现有项目是否已启用结算功能,请参阅验证项目的结算状态。如需创建项目并设置结算信息,请参阅创建 Google Cloud 项目。
架构
下图展示了使用 Dialogflow 构建的 Chat 应用的架构:
在上图中,与 Dialogflow Chat 应用互动的用户的信息流如下所示:
- 用户在 Chat 中通过私信或聊天室向 Chat 应用发送消息。
- 位于 Google Cloud 中的 Dialogflow 虚拟客服人员会接收并处理消息,以生成响应。
- (可选)Dialogflow 智能客服可以使用 Dialogflow Webhook 与外部第三方服务(例如项目管理系统或工单工具)进行交互。
- 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 控制台。依次点击菜单 > Dialogflow CX。
选择一个 Google Cloud 项目。如需查找您的项目,您可能需要点击全部,然后搜索该项目。
现在,您可以选择预构建的代理,也可以自行创建代理。如果您想稍后详细了解如何自定义客服人员,请选择一个预构建客服人员,这也有助于您了解客服人员可以执行哪些操作。
如需选择预构建的客服人员,请按以下步骤操作:
- 点击使用预构建代理。
选择一个预构建的代理。在本指南中,选择旅游:汽车租赁。
代理的级别分为初级、中级和高级,具体取决于代理使用的功能数量以及其对话逻辑的复杂程度。选择中级或高级代理可能需要进行特定于代理的自定义和设置,包括在 Google Cloud 控制台中启用功能和 API。
点击以代理身份导入。
如需创建自己的代理,请按以下步骤操作:
- 点击创建代理。
- 选择自动生成以创建数据存储区代理,或选择自行构建以创建其他类型的代理。
如需详细了解客服构建流程,请参阅创建 Dialogflow CX 客服。
配置基本代理设置:
点击创建。Dialogflow CX 会开始创建客服,然后显示客服的默认开始流程。
(可选)自定义代理。如需详细了解客服自定义流程,请参阅创建 Dialogflow CX 客服。
最佳实践是测试代理:
- 点击 Test agent。
- 选择在环境中测试代理。
- 在“环境”中,选择草稿。
- 在“流”中,选择默认初始流。
- 在“页面”中,选择首页。
- 在与客服人员聊天撰写栏中,输入
Hello
,然后按 Enter 键。 客服人员会自我介绍作为回应。 - 通过进行示例测试对话来完成测试。
Dialogflow CX 客服已创建。返回 Dialogflow CX 控制台。 依次点击菜单 > Dialogflow CX。
在客服人员下,依次点击 > Copy name(复制名称)。请保存此名称,因为您在配置 Chat 应用时需要使用它。
创建一个 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
。 - 在功能下,选择接收一对一消息和加入聊天室和群组对话。
- 在连接设置下,选择 Dialogflow。
- 在 Dialogflow 设置下,选择 Dialogflow CX。
- 在代理或环境资源名称中,粘贴您在创建 Dialogflow CX 客服末尾复制的 Dialogflow CX 客服名称。
- 面向您网域中的特定人员和群组提供此 Chat 应用,然后输入您的电子邮件地址。
- 在日志下,选择将错误记录到 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 客服如何在对话的每个步骤中解读用户的自然语言并生成自己的自然语言回答。此对话示例基于名为旅游:租车的预构建客服人员。
对话框 | 说明 |
---|---|
最终用户:您好 客服人员:您好!我是虚拟租车代理。我可以帮助您开始新的租车预订。今天需要我做些什么? |
|
最终用户:我想租车。 客服人员:您想在哪里取车? |
|
最终用户:拉斯维加斯 客服人员:好的,您的上门取件地点是拉斯维加斯。 客服人员:您的下车地点与上车地点不同吗? |
|
最终用户:是。我会在洛杉矶还车。 客服人员:好的,您的下车点是洛杉矶。 客服人员:您想在哪一天的什么时间取车? |
|
最终用户:我想在 3 月 5 日中午提车。 客服人员:您想在哪一天的什么时间还车? |
|
最终用户:3 月 15 日中午。 客服人员:确认一下:您将于 2024 年 3 月 5 日 12:00:00 在拉斯维加斯上车,并于 2024 年 3 月 15 日 12:00:00 在洛杉矶下车,对吗? 对吗? |
|
最终用户:是的,谢谢。 客服:太棒了!现在,我们来选择一辆车。 客服人员:您想要经济型车还是豪华车? |
|
最终用户:经济配送,谢谢。 客服人员:您想订购 Cymbal Car 还是 Cymbal Truck? |
|
最终用户:Cymbal Truck。 客服人员:Cymbal Truck 的每日费用为 50.33 美元。 可容纳 4 人,并配有调幅、调频收音机。 要继续付款吗? 最终用户:是的,请问。 |
|
客服人员:您将使用哪种类型的卡? 最终用户: Altostrat 客服人员: 请输入卡号。 最终用户: 1234 1234 1234 1234 客服人员: 银行卡上的名字是什么? 最终用户:Charlie 客服人员:请问账单邮寄地址是什么? 最终用户:1800 Amphibious Blvd. Mountain View, CA 客服人员:邮寄地址的邮政编码是什么? 最终用户: 94045 客服人员:您将于 2024 年 3 月 5 日 12:00:00 在拉斯维加斯上车,并于 2024 年 3 月 15 日 12:00:00 下车。此行程的总金额为 175.38 美元。 客服人员:感谢您与我们租车,祝您度过愉快的一天! |
|
从 Dialogflow 发送卡片消息
Dialogflow 可以使用文本或卡片消息进行响应。如需使用卡片消息进行响应,请在执行中将其指定为自定义载荷。
以下 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
CARD_CLICKED
- 对于
MESSAGE
或ADDED_TO_SPACE
事件,发送到 Dialogflow 代理的查询输入对应于 Chat 消息中的argumentText
字段的值。如果消息包含正斜线命令,系统会改用text
字段的值。 - 对于
CARD_CLICKED
事件,发送到 Dialogflow 代理的查询输入的格式为CARD_CLICKED.functionName
,其中functionName
对应于附加到交互式卡片元素(例如按钮)的 Action 对象的function
字段的值。 - 每个 Chat 互动事件的完整 JSON 载荷都会作为查询参数中的自定义载荷发送到 Dialogflow,并且可以通过查询
WebhookRequest.payload
字段的值来使用 Dialogflow webhook 访问。
- 支持以下互动事件类型:
- 响应斜杠命令和从卡片或对话框接收数据时需要注意的事项:
- 当 Dialogflow Chat 应用收到包含正斜线命令的消息时,查询输入仅包含
text
字段的值。text
字段以斜杠命令的名称(例如/command
)开头,您可以使用该名称配置 Dialogflow 代理的意图以检测斜杠命令。 - 如果 Dialogflow 代理需要处理聊天互动事件 JSON 载荷,可以使用 Dialogflow Webhook 检查查询参数中的自定义载荷。
- 如需从 Dialogflow 代理显示对话框,请使用包含消息的单个自定义 JSON 载荷进行响应,其中消息包含
DIALOG
操作响应。 - 为了处理从卡片输入的数据,Dialogflow 客服人员可以检测以文本
CARD_CLICKED
开头的意图,并使用包含适当操作的单个自定义 JSON 载荷进行响应。
- 当 Dialogflow Chat 应用收到包含正斜线命令的消息时,查询输入仅包含
- 不支持链接预览。
- 如果 Dialogflow 客服人员只回复一条消息,则该消息会同步发送到 Google Chat。如果 Dialogflow 客服人员以多条消息进行回复,则系统会针对每条消息在 Chat API 中的
spaces.messages
资源上调用create
方法一次,以异步方式将所有消息发送到 Chat。 - 将 Dialogflow CX 与 Chat 集成时,必须在同一 Google Cloud 项目中设置 Dialogflow 代理和 Chat 应用。如果您需要在不同的 Cloud 项目中设置 Dialogflow 和 Chat,则可以设置中间服务器以便于连接。如需了解具体方法,请参阅 GitHub 上的 Dialogflow CX 聊天集成示例。
问题排查
当 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 客服。
- 使用 Gemini 为 Google Chat 构建应用中的知识 Chat 应用。 Codelab:如需查看有关如何构建 Dialogflow CX 数据存储代理的示例,请参阅 Codelab
- 使用 Gemini 构建 Google Chat 应用中的反馈 Chat 应用。 Codelab:如需查看如何构建 Dialogflow CX 对话式客服的示例,请参阅 Codelab
- Dialogflow ES 是将 Dialogflow 与 Chat 应用搭配使用的另一种方式。