学习 Dialogflow 教程17 Mar 2025 | 47 分钟阅读 ![]()
在我们的 Dialogflow 教程中,我们将讨论以下主题:
什么是 DialogflowDialogflow 被定义为一个在 Google Cloud Platform 上运行的 Google 服务。Dialogflow 是一个直观易用的工具,它融合了Google 的机器学习专业知识和一些Google 产品,如 Google Cloud Speech-to-Text。它主要用于为大多数 Google Assistant 设备构建操作。 换句话说,Dialogflow 被定义为一个 NLP(自然语言处理)平台,用于开发与客户在不同语言、多平台上进行的对话和体验相关的应用程序。通过使用 Google 驱动的产品,开发人员可以设计基于文本和语音的对话界面,以便以多种语言回答客户的查询。例如 - 许多公司使用 Dialogflow 来制作消息机器人,以在 Google Assistant、Slack、Facebook Messenger、Alexa Voice Search (AVS) 等不同平台上回复客户的查询。 Dialogflow 的功能Dialogflow 有多种功能
轻松开发无服务器应用 Google Dialogflow 提供了一个统一的代码编辑器,通过它可以轻松开发原生无服务器应用,这些应用通过 Firebase Cloud Functions 连接到我们的对话界面。 提供自动电话服务 借助 Dialogflow 电话网关,我们可以在一分钟内轻松地将专用电话号码添加到我们的 Dialogflow agent 中,呼叫 agent 的用户将直接联系你的 Dialogflow agent。电话网关基于 Google 在语音识别、电话连接、语音合成、自然语言处理等方面的投入。 专为语音优先的世界而设计 通过一个 API 请求,我们就能将对话界面扩展到识别语音通信并生成语音回复。Dialogflow 支持同步模式和实时流式传输,这些都由 Google Cloud Text-to-speech 和 Cloud Text-to-Speech 提供支持。 自动拼写纠错 在聊天环境中,大多数用户都匆忙地进行交互,有时用户可能不会注意拼写或语法的准确性。因此,在这种情况下,Dialogflow 提供了一个名为自动拼写纠错的功能,它利用 Google 的搜索技术来自动纠正拼写错误。 通过内置分析提高用户体验 在 Dialogflow 中,集成的分析仪表板为你提供了对对话通信的洞察。因此,你可以自定义你的机器人,以便更好地理解和回复用户的意图。 理解用户情绪 对于每个用户的查询,Dialogflow 会进行情绪分析,这由Cloud Natural Language提供支持。情绪分析的分数可用于将未能满足需求的用户分配给实时坐席,或深入了解哪些尝试带来了最高程度的客户满意度。 跨平台和多语言部署 它支持 20 多种语言和 14 个不同的平台。 引入你的企业知识 借助 Dialogflow 知识连接器,我们可以轻松地批量增强企业中的数据,这些数据包含基于知识的文章和 FAQ。为了从数据语料库中提取正确的答案,Dialogflow 的知识连接器使用了 Google Assistant 和 Google Search 所使用的技术。 由 Google 机器学习提供支持 Dialogflow 工具由 Google 机器学习提供支持。在 Dialogflow 中,自然语言的理解识别用户意图,并帮助提取预先构建的实体,如数字、日期和时间。通过提供少量数据集,我们还可以训练 agent 来轻松识别客户的实体类型。 Dialogflow 的用例Dialogflow 有多种用例
1. 商业:- Dialogflow 用于商业。通过使用 Dialogflow,用户可以在任何他们偏好的平台上随时进行交易。如果你想向用户购买商品或安排发货,Dialogflow 为那些需要丰富和个性化回复的用户提供了自助服务体验。 2. 企业生产力:- 我们可以将 Dialogflow 用于提高企业生产力。在工作场所应用中使用对话技能,可以方便员工访问与业务相关的重要信息并提高生产力,例如:通过与本地机会相关的知识来提供销售。 3. 物联网设备:- Dialogflow 也用于 物联网设备。借助对话界面,我们可以让我们的 物联网设备更智能。Dialogflow 为智能设备增加了一个智能层,并允许设备准确理解和响应用户交互的上下文。 4. 客户服务:- 借助 Dialogflow,我们可以创建能够执行不同任务的对话界面,例如安排预约、回答一般性问题、跟进之前的订单等。 Dialogflow 的优点Dialogflow 有多种优点
1. 情绪分析:- Dialogflow 可以对用户查询进行情绪分析。 2. 用户友好:- Dialogflow 是一个用户友好的工具,采用无服务器应用程序结构和集成的代码编辑器构建。 3. 整合 Google 功能:- Dialogflow 包含 Google 的多项功能,如语音转文本和机器学习。 4. 快速高效的编码:- 通过简化编码过程,Dialogflow 帮助我们节省了开发人员的时间。开发人员可以高效地完成所有与编码相关的任务,因为系统包含一个内置的、内联的代码编辑器。通过使用它,他们的 agent 可以通过 Cloud functions 或本地连接到他们的应用程序。 5. 能够通过自然对话表达自己:- 借助 Dialogflow,我们可以创建一个聊天机器人。聊天机器人可以自然地进行对话。简单来说,即使客户与应用程序或计算机交谈,通常是为了寻求帮助或支持,他们也会获得上下文相关的回复。当您与聊天机器人交流时,您不会觉得是在与机器人或机械打交道。 6. 由 Google 机器学习提供支持:- Dialogflow 使用机器学习技术,这增强了 Dialogflow 的能力。 为什么选择 Dialogflow选择 Dialogflow 有多种原因
1. 多渠道轻松集成:- Dialogflow 提供一键式集成,可与各种最流行的消息应用程序集成,如 Twitter、Skype、Kik、Viber、Facebook Messenger、Telegram、Slack、Twilio,以及多个语音助手,如 Microsoft Cortana、Amazon Alexa 和 Google Assistant。 2. 价格:- 如果你只是学习如何创建聊天机器人,Dialogflow 的免费版本也可用。 3. 自然语言处理:- Dialogflow 使用 NLP(自然语言处理)的概念,因此 Dialogflow 提供了良好的用户体验。Dialogflow 的 agent 在 NLP 方面表现更好。 Dialogflow 基础知识在使用 Dialogflow 之前,有许多事情你应该了解。 帮助用户与技术互动传统的计算机系统需要可预测的结构化输入才能正常工作,这有时会使界面难以使用且不自然。有时,终端用户无法理解这种结构化输入,在这种情况下,终端用户会很难弄清楚该怎么做。理想情况下,界面应该能够根据用户使用的自然语言推断出用户想要什么。 例如: 假设用户的请求是 “今天天气怎么样?”,其他用户也可以问
正如你所知,对于这些简单的问题,实现对话体验是具有挑战性的。自然语言处理和解释需要一个非常强大的语言解析器。Dialogflow 为你提供了这种解析器,以便你能为终端用户提供高质量的对话体验。 Agent (代理)Dialogflow agent 被定义为一个负责管理终端用户对话的虚拟代理。Agent 是一个能够理解人类语言复杂性的模块。在对话过程中,Dialogflow 将终端用户的文本或音频转换为结构化数据,以便你的应用程序能够理解。Dialogflow agent 被设计用来管理你的系统所需的对话类型。 Dialogflow agent 就像人类呼叫中心里的代理一样。两者都经过训练以处理对话场景,并且不需要在训练中过度明确。 Intent (意图)Intent 对一个对话回合中的终端用户意图进行分类。对于每个 agent,我们需要定义各种用户,而我们组合的 agent 能够处理整个对话。当终端用户说或写出被表示为终端用户表达式的内容时,Dialogflow 会检查并将其与你 agent 的最佳 intent 进行匹配。Intent 匹配也称为意图分类。 例如: 如果你需要创建一个天气 agent,它能够识别和响应与天气相关的终端用户查询。那么你必须为天气预报问题定义一个 intent。当终端用户问“天气预报是什么?”时,Dialogflow 会检查并匹配终端用户表达式与预报 intent。如果我们想根据需要从终端用户表达式中获取重要信息,如地点、天气预报时间,那么我们必须定义我们的 intent。获取的信息对系统执行相关查询至关重要。 ![]() 基本的 intent 包含以下内容
1. 训练短语:- 训练短语是指终端用户可能说出的示例短语。如果其中一个短语与终端用户表达式相似,那么 Dialogflow 就会匹配 intent。由于 Dialogflow 内置的机器学习能力会根据你列表中的其他相关短语进行扩展,因此无需定义每一种可能的示例。 2. Action (操作):- 我们可以为 agent 定义一个操作。当匹配到一个 intent 时,Dialogflow 会将操作传递给系统,而这个操作可以用来触发系统中已定义的各种操作。 3. 参数 (Parameters):- 在运行时,如果我们想匹配一个 intent,Dialogflow 会将终端用户表达式中的值作为参数传递。每个参数都有一个称为实体类型 (entity type) 的类型,而实体类型精确地决定了数据如何被检索。参数不像终端用户的原始输入。参数表示结构化数据,用于执行逻辑或产生回复。 4. 回复 (Responses):- 我们可以定义语音、视觉或文本回复以返回给终端用户。这些回复能够回答终端用户的问题,还可以向终端用户询问更多信息,甚至可以终止对话。 下图显示了 intent 匹配并响应终端用户的基本流程。 ![]() Entities (实体)每个 intent 参数都有一个类型,称为实体类型。终端用户执行的任务是解释如何从终端用户表达式中提取数据。Dialogflow 为你提供了各种预定义的系统实体,它们能够匹配各种常见的常见数据类型。例如,有各种系统实体用于匹配电子邮件地址、颜色、时间、日期等。为了匹配自定义数据,我们也可以创建自己的自定义实体。例如:我们可以定义一个水果实体,它可以匹配杂货店 agent 处可购买的水果种类。 Dialogflow Console (控制台)Dialogflow Console 被定义为 Dialogflow 提供的 Web 用户界面。Dialogflow Console 用于构建、测试和创建 agent。Dialogflow Console 和 Google Cloud Platform Console (GCP) 是不同的。Dialogflow 的主要任务是控制 Dialogflow agent,而 Google Cloud Platform Console (GCP) 的主要任务是处理 Google Cloud Platform (GCP) Dialogflow 的设置,如账单和 Google Cloud Platform (GCP) 的其他一些资源。 借助 Dialogflow Console,我们还可以创建一个 agent。 背景Dialogflow 的上下文与自然语言上下文相同。当一个人告诉你,“他们是蓝色的”,你必须理解上下文才能知道“他们”指的是什么。同样,对于 Dialogflow,为了处理终端用户表达式,必须提供 Dialogflow 上下文才能正确匹配 intent。 上下文用于处理对话流程。通过设置由字符串名称识别的输入和输出上下文,我们可以为 intent 配置上下文。如果 intent 匹配,那么对于该 intent,任何配置的输出上下文都将处于活动状态。当上下文处于活动状态时,Dialogflow 会尝试匹配配置的 intent,该 intent 的输入上下文对应于当前处于活动状态的上下文。 下图显示了一个使用上下文的银行 agent 的示例。 ![]()
Follow-up Intents (后续 Intent)后续 Intent 可用于自动创建 Intent 对的上下文。后续 Intent 意味着它是与其关联父 Intent 的子项。当创建后续 Intent 时,将自动向父 Intent 添加一个输出上下文,并在后续 Intent 中添加一个具有相同名称的输入上下文。只有在一种情况下才会匹配后续 Intent,那就是父 Intent 在上一个对话回合中。Dialogflow 中也可以创建多个嵌套级别的后续 Intent。 在 Dialogflow 中,有多种预定义的后续 Intent,用于处理常见的终端用户回复,如取消、是、否等。为了管理客户的回复,我们也可以创建自己的后续 Intent。 用户与集成的交互Dialogflow 可以与多种对话平台集成,例如 Facebook、Slack、Google Assistant 等。要为任何平台创建一个 agent,你可以从各种集成选项中选择一个。Dialogflow 具有处理直接终端用户交互的功能,因此你可以更专注于创建 agent。 用户与 API 的交互如果你不使用任何集成选项,那么你必须编写可以与终端用户直接交互的代码。对于每个对话回合,你都需要直接与 Dialogflow API 交互,以便发送终端用户表达式并获得 intent 匹配。 下图显示了与 API 交互时的处理流程。 ![]()
集成的 Fulfillment (履行)默认情况下,agent 将以静态响应来回应匹配的 intent。如果你使用了集成选项之一,则可以通过 fulfillment 获得更动态的响应。对于启用了 fulfillment 的 intent,Dialogflow 会通过调用你定义的那个服务来响应 intent。例如:如果终端用户希望在周一安排购物,那么你的服务将搜索你的数据库,并向终端用户提供有关周一可用性的详细信息。 要启用 fulfillment,每个 intent 都包含一个设置选项。当 intent 需要动态响应或你的系统执行操作时,你必须为该 intent 启用 fulfillment。如果 intent 在未启用 fulfillment 的情况下匹配,则意味着 Dialogflow 使用你为该 intent 定义的静态响应。 如果启用了 fulfillment,并且 intent 匹配,则 Dialogflow 将发送包含匹配 intent 相关信息的消息。你的系统能够执行任何需要的操作,并向 Dialogflow 提供信息以继续进行。 下图显示了 fulfillment 的处理流程。 ![]()
Dialogflow 的组成部分Dialogflow 有多种组成部分
1. Entity (实体):- 实体被定义为 agent 用于回答用户问题的知识库。有多种系统实体,如天气、地点、日期等。 2. Invocation (调用):- 调用就像对朋友说你好一样。 3. Fulfillment Request (履行请求):- Dialogflow 发送请求以检索必要的数据(发送到 webhook),webhook 执行任务,例如确定如何响应以及如何发送回 Dialogflow。 4. Intents (意图):- Intents 包含解析用户信息所需的逻辑和元素。它有助于将用户所说的内容与响应进行映射。Intent 中有多种组成部分,如事件、响应、用户说、上下文和操作。 5. Response (响应):- 后端系统将生成一组响应,包括用户调用、webhook、意图、实体等。 6. Context (上下文):- 上下文用于存储多个 intent 的参数值。借助上下文,还可以修复中断的对话。 7. User Says (用户说):- User Says 指用户可能提出的同一问题的各种形式。我们可以添加更多变体,以便 agent 能更好地理解。 如何创建你的第一个 Dialogflow Agent创建第一个 Dialogflow agent 有多种步骤 1. 首先,我们必须登录 Dialogflow。我们可以通过链接 https://dialogflow.com/ 登录 Dialogflow。成功登录后,我们必须点击立即免费注册。 然后我们必须连接到 Google 账户。如果你想使用 Dialogflow,那么拥有 Google 账户是必须的。 ![]() 2. 接下来,我们必须点击创建 agent 来创建一个新的 agent。为此,首先选择三个内容:语言、默认时区和新 bot 的名称。 ![]() 3. 然后,创建 bot 的打招呼。bot 目前不知道如何响应用户输入。教它如何行为的旅程才刚刚开始。首先,你必须对 bot 的个性进行一些建模,并向它打招呼,然后介绍你自己。 4. 点击名为Default Welcome Intent 的选项。 ![]() 5. 接下来,我们必须添加“hello”和“hi”作为训练短语,这些将是文本形式,然后点击 enter 键。 ![]() 6. 接下来,我们必须向下滚动到名为Responses 的选项,然后删除现有的。 ![]() 7. 然后,点击ADD RESPONSES,然后我们必须点击Text response,然后输入你想要的回复。 ![]() 8. 当你正确输入回复后,你必须通过点击Save 按钮来保存回复。 ![]() 如何将示例文件导入到你的 Agent将示例文件导入到你的 agent 有多种步骤 1. 首先,你必须下载 new-agent.zip 文件。 2. 然后进入 Dialogflow Console。 3. 然后,选择一个 agent。 4. 接下来,点击 agent 名称旁边的设置图标。 ![]() 5. 然后,选择Export and Import ![]() 6. 最后,选择 Restore from Zip 选项,然后按照每一步的说明来恢复你下载的文件。 ![]() 如何创建新的 Intent在本节中,我们将创建一个能够回答“你叫什么名字?”这类问题的 agent。对于每个 intent,我们必须定义各种训练短语。训练短语也称为终端用户表达式。它是终端用户可以对 agent 说或写的可能问题的示例。我们可以定义任意数量的训练短语,为 Dialogflow 提供必须与 intent 匹配的不同类型的表达式。 创建新 intent 的步骤如下: 1. 首先,我们必须点击左侧边栏菜单中 intents 旁边的 add intent + 按钮。 ![]() 2. 接下来,点击Intent name 中的get-agent-name。 3. 然后,点击Training Phrases 中的Add training phrases 选项。 ![]() 4. 接下来,根据 Intent 的要求输入训练短语。然后我们必须在每次输入后点击 enter。
![]() 注意:在大多数情况下,我们必须输入至少 10-20 个训练短语,以确保 intent 匹配可靠。5. 然后,在Response section 中,我们必须在Text Response section 中输入回复,例如“我的名字是 ABC”。 ![]() 6. 点击 Save 按钮。 ![]() 7. 然后,我们必须等待 Agent Training 对话框显示training is complete。 ![]() 在模拟器中输入“你叫什么名字?”。点击 Enter。 你的 agent 会对表达式给出正确的回复,即使表达式与你提供的训练短语略有不同。 对于机器学习模型,Dialogflow 使用训练短语作为示例,将终端用户表达式与 intent 进行匹配。在 agent 中,模型会针对每个 intent 测试表达式,然后为每个 intent 提供一个分数,得分最高的 intent 将被匹配。 当得分最高的 intent 分数非常低时,将匹配 fallback intent。 如何在 Dialogflow 中创建参数每当在运行时匹配到一个 intent 时,Dialogflow 就会将从终端用户表达式中提取的值作为参数提供。每个参数都有一个称为实体类型 (entity type) 的类型。实体类型精确地决定了数据的提取方式。 创建参数的步骤如下: (创建一个带参数的新 intent) 1. 首先,我们必须点击左侧边栏菜单中 intents 旁边的 add intent + 按钮。 ![]() 2. 然后,我们必须给 intent 命名,名称为set-language,它出现在 intent 表单的顶部。 ![]() 3. 现在,我们必须添加以下训练短语:
![]() 4. 现在,我们点击Save 按钮,然后等待Agent Training 对话框显示Agent training completed。 ![]() Dialogflow 会自动识别训练短语中的参数,这些参数被称为系统实体。这些是 Dialogflow 为日期、颜色、位置等各种常见数据类型提供的实体。 注意:如果我们的训练短语没有被自动标注,我们可以手动标注训练短语。在Action and parameters 表格中,Dialogflow 会创建一个行,该行位于Training phrases 下方。 ![]()
注意:如果实体未被自动检测到,我们也可以手动标注训练短语中的实体。测试你的参数如果你想测试你的参数,那么首先必须输入“I Know French”然后按回车键。 ![]() 我们可以轻松发现 Dialogflow 适当地提取了参数 language,值为 Spanish,并且 Spanish 被适当地插入到响应中使用参数引用的地方。 如何创建你自己的实体Dialogflow 为你提供了创建实体的功能,因为有时你可能需要从用户那里收集系统实体未提供的数据。因此,为了处理这种情况,你可以创建一个自定义实体。 创建自己的实体的步骤如下: 1. 首先,你必须点击左侧边栏菜单中 Entities 旁边的 add entity + 按钮。 ![]() 2. 然后,为实体输入language-programming。 ![]() 3. 现在,添加以下实体条目: ![]() 4. 然后,点击Save 按钮,然后等待Agent Training 对话框显示Agent training completed。 ![]() Dialogflow 可以轻松处理一些事情,如大小写和复数,但对于条目,你必须添加所有可能的同义词。如果你添加更多同义词,那么 agent 将能够更快地确定实体。 如何使用你的新实体如果你想使用新实体,那么你必须将训练短语添加到 set-language。 使用新实体的步骤如下: 1. 首先,点击左侧边栏菜单中的“Intents”选项。 ![]() 2. 然后,点击 intent set-language。 ![]() 3. 接下来,你必须添加各种训练短语:
![]() 4. 注意,这些训练短语中的编程语言已被自动标注并添加到Action and Parameters 部分。 5. 接下来,你必须添加另一个测试响应,$language-programming 是一个更好的编程语言。 ![]() 6. 然后,点击Save 按钮,然后等待Agent Training 对话框显示Agent training completed。 ![]() 测试你的新实体如果你想测试你的新实体,那么输入I know how to code in py 并按回车键。我们可以轻松地看到 Dialogflow 从参数language-programming 中提取了py,并将其识别为Python 实体,然后将值插入到响应中。 ![]() 上下文 (Contexts)我们可以使用上下文来管理对话的流程。 如何添加后续 Intent后续 Intent 用于处理对话。在此,无需手动创建上下文即可处理对话。 当创建后续 Intent 时,将自动向父 Intent 添加一个输出上下文。在后续 Intent 中,将添加一个具有相同名称的输入上下文。只有在一种情况下,后续 Intent 才会匹配,那就是父 Intent 在上一个对话回合中匹配。 向 set-language intent 添加后续 Intent 的步骤如下: 1. 首先,选择之前创建的 intent Set-language。 ![]() 2. 然后,我们必须更新Response 中的测试响应。 哇!太棒了!我不知道你懂 $language。 ![]() 3. 然后,点击Save 按钮,然后等待Agent Training 对话框显示Agent training completed。 4. 现在,点击左侧边栏菜单中的Intents 选项。 ![]() 5. 将鼠标悬停在名为 set-language 的 intent 上,然后点击Add follow-up intent。 ![]() 6. 然后,在显示的列表中,点击Custom。 ![]() 7. 最后,点击Save 按钮,然后等待Agent Training 对话框显示Agent training completed。 Dialogflow 会自动为后续 Intent 命名,名称为set-language-custom。 ![]() 如何自定义默认欢迎 Intent如果你想自定义默认欢迎 Intent,那么有几点你需要注意你的问候语,那就是设定期望、让用户掌控以及欢迎用户。 自定义默认欢迎 Intent 的步骤如下: 1. 首先,点击Default Welcome Intent。 ![]() 2. 接下来,导航到Responses 部分。 ![]() 3. 现在,删除Text response 中的所有默认回复。 4. 然后,在Test Response 中,输入诸如“欢迎。我可以告诉你商店的营业时间,或者我可以安排一个预约。你想要哪个?”之类的回复。点击Save 按钮。 ![]() 5. 现在,使用模拟器测试自定义的默认欢迎 Intent。 ![]() 如何创建响应变体创建新的问候语短语后,下一步是创建其他变体。默认欢迎 Intent 包含各种变体回复:
![]() 如果你为 intent 添加了许多响应,那么 Dialogflow 会以随机方式从列表中选择一个响应。 如何创建自定义 Intent这里我们以一家汽车修理厂的 agent 为例,我们希望该 agent 完成两项任务
现在,我们首先为客户构建一个 intent,该 intent 帮助用户了解汽车修理厂的营业时间。 我们可以通过编写一个非常简单的 Dialogflow 示例来实现这一点,如下所示: 用户:你们几点开门。 Agent:我们每天早上 10 点到晚上 8 点营业。还有什么我需要为你做的吗? 我们必须执行以下步骤来创建能够处理此 Dialogflow 的 intent。 1. 首先,我们必须创建一个新的 intent,并为新 intent 命名为 Hours。 ![]() 2. 现在,我们在 hours intent 的训练短语部分输入各种训练短语。你们几点开门。 ![]() 3. 接下来,在Response 部分,我们必须在Text response 表格中输入回复:我们每天早上 10 点到晚上 8 点营业。还有什么我需要为你做的吗? ![]() 4. 然后,我们必须点击 Save 按钮。 添加更多训练短语之前,我们只为 Hours intent 添加了一个训练短语。即“你们几点开门。”。此 intent 没有足够的知识来识别其他具有相似含义的词语。因此,我们必须为 intent 提供更多训练短语,以便 agent 能够匹配表达相似意图的不同类型的用户词语。 用自然语言构成具有相同含义的短语有很多方法。我们建议每个 intent 从至少 10-20 个训练短语开始,具体取决于 intent 的复杂性。当我们开始测试 agent 时,使用 Dialogflow 的训练工具,添加更多训练短语。 使用训练短语“你们几点开门?”,我们可以添加用户可能会说的各种变体:
执行这些步骤来添加以上变体: 1. 首先,点击我们已经创建的 intent,即 Hours。 ![]() 2. 然后在Training phrases 中输入上述短语。 ![]() 3. 现在,点击Save。 ![]() 4. 然后,我们使用 Dialogflow console 中的模拟器测试 intent。 ![]() 如何自定义默认回复 (Fallback) Intent在 Dialogflow 中,有一个 Fallback Intent,当用户的话语没有匹配到其他 intent 时,就会匹配到它。与 Default Welcome Intent 一样,fallback intent 的名称是 Default Fallback Intent。 Fallback intent 是一个提示用户 whose utterances are formed in such a way that the agent can understand it easily 的 intent。 自定义 fallback intent 的步骤如下: 1. 首先,我们必须点击Default Fallback Intent。 ![]() 2. 然后,转到Responses。 3. 现在,删除 Test response 部分中存在的所有默认回复。 4. 接下来,我们必须在 Text response 部分中添加以下训练短语: ![]() 5. 点击 Save 按钮。 ![]() 创建带参数的 Intent现在我们将构建一个能够为汽车修理厂安排预约的 intent。它不像我们之前创建的 intent。此 intent 可以帮助执行更复杂的任务。 让我们讨论以下用户-agent 交互: 用户:你好。 Agent:欢迎。我可以告诉你商店的营业时间,或者我可以帮你安排一个预约。你想要哪个? 用户:我想在今天下午 5 点安排一个预约。 Agent:好的,我已为您安排在 7 月 1 日星期一,下午 5 点的预约。再见。 Dialogflow 中用户的陈述“我想在今天下午 5 点安排一个预约”包含一些重要信息,即“下午 5 点”和“今天”。它有助于确定用户需要访问自行车店的日期和时间。agent 的响应包含用户陈述中提到的日期和时间信息,即“好的,我已为您安排在 7 月 1 日星期一,下午 5 点的预约。再见。” 识别重要信息对人类来说很容易,但对机器来说却不是一件容易的事。因此,我们必须为 intent 提供从用户陈述中提取重要信息(参数)的能力。 使用实体和参数提取信息在 Dialogflow 中,存在实体和参数的概念。实体和参数用于从用户的陈述中提取信息,然后将提取的信息转换为一组参数,之后这些参数可以被系统或函数处理以执行各种任务。 创建带有参数的新 intent 的步骤如下: 1. 首先,我们创建一个新的 intent,并为 intent 提供一个名称,即Make Appointment。 ![]() 2. 然后,在Training phrases 部分添加以下训练短语: ![]() 3. 接下来,我们验证系统实体 @sys.time 和 @sys.date 是否出现在Action and Parameters 中。 ![]() 4. 然后,我们在 Test response 部分添加以下响应短语: ![]() 5. 然后,点击Save。 通过这种设置,Make Appointment intent 会验证用户语句,捕获映射到 Dialogflow 内置系统实体 @sys.time 和 @sys.date 的词语。然后,将所有捕获的值放入 $date 和 $time 参数中。因此,我们在响应中使用 $time 和 $date 系统实体来获取用户语句或陈述中的时间和日期值。“好的,我已为您安排在 7 月 1 日星期一,下午 5 点的预约。再见。” 在 Dialogflow 中,我们也可以创建自定义实体来提取未分类或不常见的参数。但在我们的例子中,系统实体足以捕获日期和时间等常见参数。 使用 Slot-Filling 获取必需参数除了当前的训练短语外,现在我们需要根据上一节的最佳实践“我想在今天下午 5 点安排一个预约”来包含更多训练短语。 现在我们添加各种训练短语:
![]() 到目前为止,每个训练短语都包含日期和时间等信息,如明天下午 6 点、今天下午 5 点、星期一中午。但在现实世界中,用户陈述并不一定总是包含所有必需的参数。 现在添加以下训练短语:
![]() 我们上面使用的短语表明用户需要预约。因此,新的 intent 能够匹配这些短语来处理预约调度的工作。但是,时间日期信息并未包含在短语中。这些类型的短语会造成问题,因为如果没有时间和日期信息,intent 就无法安排预约。 因此,为了解决这个问题,Dialogflow 提供了一个 Slot-filling 功能,它确保用户获得所有必需的信息。如果我们想启用 slot-filling 功能,那么我们必须标记必需的参数。 假设一个 intent 包含必要的参数,但它与用户陈述相符,而该陈述缺少任何必需的参数。在这种情况下,intent 会立即查询用户以获取所有必需的参数。 让我们看下面的例子: 用户:你好。 Agent:欢迎。我可以告诉你商店的营业时间,或者我可以帮你安排一个预约。你想要哪个? User:我想修理我的车。 Agent:好的,我来帮你。你想哪天来? User:星期一 Agent:什么时候对你比较方便? User:下午 5 点 Agent:好的,我明白了。我已为你安排在 7 月 14 日星期一,下午 5 点的预约。早点见。拜拜。 我们必须按照以下步骤使 $time 和 $date 参数可用,并包含关于这些参数的提示问题: 1. 首先,我们必须点击名为 Make Appointment 的 intent。 ![]() 2. 然后我们在Actions and Parameters 中勾选 $time 和 $date 参数的必需复选框。然后,创建名为 PROMPTS 的列。 ![]() 3. 接下来,我们检查 $date 参数是否位于 $time 参数下方的表格中,然后我们将 $date 参数行拖到 $time 参数上方。(提示问题提出的顺序由表格中的位置决定。) ![]() 5. 对于 $date 参数,我们必须点击PROMPTS 列中名为Define prompts 的链接,然后添加以下提示:
![]() 5. 然后,对于 $time 参数,我们必须点击PROMPTS 列中名为Define prompt 的链接,然后添加以下提示:
![]() 6. 点击 Save 按钮。 ![]() 7. 现在,借助模拟器,我们在 Dialogflow console 中测试 slot-filling 的设置。 现在我们有一个 intent 来确保日期和时间信息被检索,直到用户陈述他们需要预约。 然而,目前,该 intent 只能响应模拟响应;实际预约无法安排。现在需要进行后端流程 fulfillment,它能够执行在 Google Calendar 上安排预约的任务。 Dialogflow 中的知识库 (Knowledgebase)在 Dialogflow 中,有一个知识库的概念。我们可以将知识库定义为提供给 Dialogflow 的一组知识文档。知识文档包含对终端用户对话有用的信息。Dialogflow 的一些功能在搜索终端用户表达式的响应时会使用知识库的概念。 如何创建知识库创建知识库的步骤如下: 1. 首先,转到Dialog Console。 2. 然后选择 agent。 3. 现在,点击菜单栏左侧的knowledge 选项。 4. 接下来,点击Create Knowledge Base。 ![]() 5. 然后输入知识库的名称,然后点击 Save 按钮。 ![]() 如何将文档添加到知识库目前,新知识库中没有文档。因此,我们需要根据需要将文档添加到知识库。 将文档添加到知识库的步骤如下:
![]() 管理知识文档管理知识文档包含两个基本要点。
1. 更新知识文档内容:- 如果你想更新知识文档的内容,那么你无法自动刷新你的知识文档。 你必须调用 Document 类型上的 Reload 方法来刷新公共 URI 文档或云存储的内容。 如果你想刷新上传的原始内容,请使用 Document 类型上的 delete 和 create 方法重新构建你的文档。 2. 删除知识文档:- 如果你想删除知识文档,那么你必须调用 Document 类型上的delete 方法。 3. 列出知识文档:- 如果你想列出你所有的知识文档,那么在 Document 类型上,使用 API 并调用 list 方法。 支持的内容 支持多种知识文档类型:
下表显示了按源和知识类型支持的 MIME 类型:
Dialogflow 中的训练 (Training)在训练 agent 以主要为 agent 开发机器学习模型后,Dialogflow 使用训练数据。如果你想直接提供训练数据,那么 Dialogflow 为你提供了训练短语功能,通过它可以直接将训练数据输入到 intents 中。在 Dialogflow 中,有一个训练工具,我们还可以使用它来改进、导出和导入实际的对话数据,并分析我们的训练数据。 如何执行训练在 Dialogflow 中,每当我们保存 agent 时,训练都会自动执行。Dialogflow 在你保存 agent 时提供训练状态,状态以弹出通知的形式出现。在测试 agent 之前,我们必须等到训练完成。 当我们的 agent 包含超过 780 个 intents,或者自动训练状态设置被禁用时,我们可以手动执行训练。 执行训练的步骤如下: 1. 首先,转到Dialogflow Console。 2. 然后,选择 agent。 3. 现在,点击 agent 名称旁边的设置按钮。 ![]() 4. 然后,点击 ML Settings Tab。 ![]() 5. 点击页面底部的 Train 按钮。 如果我们想通过 API 执行训练,那么我们必须调用 agent 类型上的 train 方法。 ![]() Training Tool (训练工具)借助训练工具,我们可以改进训练数据。它用于审查 agent 与终端用户的对话。 借助训练工具,我们可以做到以下几点:
如果你想使用训练工具,那么必须启用日志记录,因为训练工具使用 agent 数据历史来加载对话。训练工具仅显示终端用户的表达式。通过更完整的 agent 历史记录,我们可以查看 agent 和终端用户的对话数据。 打开训练工具的步骤如下。
![]() Conversation List (对话列表)当我们打开训练工具时,它会显示对话列表。此列表包含所有最近的对话,但顺序是反 chronological order。在列表中,每一行都为你提供对话的摘要。 ![]() 下表描述了 UI 的每个元素。
带后续 Intents 的 Intent 匹配后续 Intent 在父 Intent 匹配后进行匹配。因此,intent language-custom 仅在 set-language intent 匹配后才进行匹配。假设用户刚问了一个问题:“你知道 $language 多久了?”现在我们可以为可能的答案添加训练短语。 Intent 匹配后续 Intents 的步骤如下: 1. 首先,点击菜单栏左侧的Intents 选项。 ![]() 2. 然后,点击名为set-language-custom 的 intent。 ![]() 3. 接下来,添加各种训练短语:
![]() 4. 最后,点击Save 按钮,然后等待Agent Training 对话框显示Agent training completed。 ![]() 测试你的后续 Intent如果你想测试你的后续 Intent,那么在模拟器中输入I Know Spanish, 然后回答“How long did you know Spanish”这个问题,回答“about 4 weeks”。 正如我们所知,对于表达式about 4 weeks,没有响应,我们可以轻松地看到表达式正确地匹配到了准确的 intent set-language-custom。持续时间参数被正确解析(4 weeks)。 上下文和参数在上下文中存储参数的值。当 set language intent 的输出上下文处于活动状态时,我们可以访问在 Set-language intent 中定义的参数值。 在 set-language-custom 中,我们只能问一个问题,那就是用户知道该语言的持续时间。 我们必须执行以下步骤来引用响应中的语言: 1. 首先,更新 intent set-language-custom 以响应文本,响应为I cannot believe you know #set-language-followup.language for $duration! ![]() 2. 然后点击Save 按钮,然后等待Agent Training 对话框显示Agent training completed。 ![]() #set-language-followup.language 引用被称为活动上下文的参数引用。 测试上下文参数如果你想测试上下文参数,那么在模拟器中输入I know French。然后回答问题“one week”。请注意,参数的值是从上下文中接收的。 ![]() 与集成的交互Dialogflow 可以与多种对话平台集成,例如 Facebook、Slack、Google Assistant 等。要为任何平台创建一个 agent,你可以从各种集成选项中选择一个。Dialogflow 具有处理直接终端用户交互的功能,因此你可以更专注于创建 agent。 如何启用集成启用集成的步骤如下: 1. 首先,转到 Dialogflow Console。 2. 然后,选择一个 agent。 3. 接下来,点击左侧边栏菜单中的 Integration 选项。 ![]() 4. 然后,启用Web Demo 集成。 ![]() 启用 Web Demo 后,Dialogflow 窗口会提供以下内容:
![]() 如何与你的 Agent 互动如果你想与你的 agent 互动,请使用上面提供的链接,打开 agent 的网页。这个网页提供了一个文本聊天界面。你必须输入“what's your name”然后按回车键。然后 agent 会给出你在上一个 QuickStart 中设置的响应。 ![]() 如何构建用于 Google Assistant 的简历聊天机器人构建用于 Google Assistant 的简历聊天机器人的步骤如下: 1. Google 注册首先,登录 Dialogflow。我们可以通过链接 https://dialogflow.com/ 登录 Dialogflow。成功登录后,我们必须点击立即免费注册。 然后我们必须连接到 Google 账户。如果你想使用 Dialogflow,那么拥有 Google 账户是必须的。 ![]() 2. Agent 创建如果我们要开发一个新的聊天机器人,那么我们必须创建一个 agent。要创建 agent,首先点击“create agent”选项,然后给我们的 agent 命名,然后我们必须根据需要选择各种内容,如默认时区和默认语言。 ![]() 3. 创建新的 Intent接下来,我们必须创建一个新的 intent。我们可以通过点击 intents 选项旁边的 + 符号,或者通过点击 Dialogflow 窗口顶部的CREATE INTENT 按钮来创建新的 intent。 ![]() 输入 intent 名称(Introduction)并点击 Save 按钮。 ![]() 然后,在训练短语部分,有一个文本框。所以,在文本框中添加用户表达式,然后回车,点击 Save 按钮。 ![]() 根据 intent,我们需要输入训练短语。我们必须决定哪种用户输入会触发这个 intent。例如,对于Introduction intent,我们添加了“Introduce Yourself”和“Tell me about yourself”。 然后我们进入responses 部分。每个 intent 至少需要一个响应。所以,我们必须在Text response 框中输入响应,然后按回车键。输入文本响应后,点击Save 按钮。也可以在 responses 部分添加多个响应。Intent 会以随机方式从我们输入的响应列表中选择响应。 ![]() 4. Rich Responses (富响应)Dialogflow 中有不同类型的响应可用。我们可以为不同的目的使用它们,以便我们的信息能够以好的方式显示。例如:有时我们可能需要显示一些图片、外部链接或项目列表。这些情况会导致富响应。 根据 Google、Telegram、Slack、Facebook Messenger 等聊天平台,有多种富响应选项可用,但并非所有类型都在各种聊天平台上都受支持。 ![]() 现在,我们需要点击响应部分中默认选项旁边的“+”符号,然后从列表中选择 Google Assistant 选项。 然后点击“添加响应”按钮,我们可以看到各种响应类型。 ![]() 5. 欢迎意图中建议芯片建议芯片用作进一步对话的指南。建议芯片有助于指示下一步的操作,例如“介绍”、“经验”、“项目”、“联系”。 ![]() 6. 创建介绍意图对于介绍意图,我们可以添加各种训练短语,例如:
![]() 我们可以使用各种类型的响应,例如简单响应/基本卡片/列表/轮播。但在此意图中,我们使用简单响应。 ![]() 7. 创建经验意图我们可以为经验意图添加各种训练短语,例如:
![]() 我们可以使用表格卡片和简单响应进行响应。 如果我们要以数据形式表示数据,则使用表格卡片,它还提供静态数据。 注意:如果我们想使用表格卡片响应,则至少需要一个简单响应。8. 创建项目意图对于项目意图,我们可以使用各种短语,例如:
![]() 我们可以使用简单响应或浏览器轮播卡片进行响应。 我们可以水平滚动浏览器轮播卡片。我们在浏览器中使用此卡片来打开网站选定的外部链接。 9. 创建职业目标意图对于职业目标意图,我们可以使用各种训练短语,例如:
![]() 我们可以使用建议芯片/简单响应进行响应。 ![]() 10. 创建兴趣领域意图对于兴趣领域意图,我们可以添加各种训练短语,例如:
![]() 我们可以使用建议芯片或简单响应进行响应。 ![]() 11. 创建教育资格意图对于教育资格意图,我们可以使用各种训练短语,例如:
![]() 对于响应,我们有各种选项,如建议芯片、简单响应和基本卡片。 要显示图像、文本描述、标题、副标题,我们可以使用基本卡片响应。 12. 创建优势和劣势意图对于优势和劣势意图,我们可以使用各种训练短语,例如:
![]() 我们可以使用列表和简单响应进行响应。借助列表响应,我们可以像列表一样显示各种项目。 我们可以在下面的图片中看到,在响应中我们添加了所需的值。这意味着如果用户点击特定项目,下一个用户输入将是该项目的键。 ![]() 13. 创建联系意图对于联系意图,我们可以使用各种训练短语,例如:
![]() 对于响应,我们有不同种类的选项,如文本响应/简单响应/浏览器轮播卡片。 14. 创建推荐意图对于推荐意图,我们可以使用训练短语,例如: 你的推荐是什么 ![]() 对于响应,我们可以使用基本卡片、简单响应、链接建议和建议芯片。我们使用了链接建议,因为我们想链接外部网站 URL。锚文本将是链接的标题。 15. 创建退出意图对于退出意图,我们可以使用各种训练短语,例如:
![]() 我们可以使用文本响应/简单响应进行响应。 我们可以在下图看到,对于这个意图的对话结束,我们选择/打开“将此意图设置为对话结束:开关/按钮/选项。” 如果用户输入或键入“good bye”、“bye bye”或“bye”,则会显示简单响应。当我们把意图设置为“对话结束”时,我们的对话就会结束,用户就会退出应用程序。现在我们的简历聊天机器人已经创建好了。 ![]() 如何使用 Dialogflow 构建预约调度器使用 Dialogflow 构建约会调度器有多种步骤
1. 创建 Dialogflow 代理如果我们要使用 Dialogflow 构建约会调度器,那么我们首先需要创建一个 Dialogflow 代理。 创建 Dialogflow 代理有多种步骤
在 Dialogflow 中,作为代理的一部分,有两种默认意图: ![]() 1. 默认回退意图:- 它有助于捕获机器人不理解的问题。 2. 默认欢迎意图:- 每当最终用户与您的代理开始对话时,都会匹配默认欢迎意图。 测试代理Dialogflow 控制台有一个测试面板,用于测试代理。测试面板出现在 Dialogflow 控制台窗口的右侧。 ![]() 输入“Hi”来测试代理。然后代理会响应默认的问候语,该问候语定义在默认欢迎意图中。它会说:“Greetings! Hello! How can I help you?” 我们可以更新此响应。 ![]() 如果我们输入“set an appointment”,那么代理将无法对此做出响应,因为代理不知道该怎么做,所以它会提供在默认回退意图中定义的响应。因为我们没有创建捕获此特定问题的意图。 ![]() 2. 创建意图创建代理后,我们需要创建意图。 创建意图有多种步骤 (a) 首先,点击 Dialogflow 窗口左侧的“意图”选项,然后点击“创建意图”。 ![]() (b) 然后,点击“训练短语”并输入各种短语:
![]() 当我们输入上述短语时,我们会看到日期和时间被自动识别为系统实体,即@sys.date 和@sys.time。 (c) 接下来,转到“响应”,在文本响应部分,输入“您一切就绪,到时候见!我们也可以用另一种方式写,例如“您已定于 $date 的 $time。”如果我们添加美元($)符号,系统就可以轻松访问实体值,然后点击“添加响应”。 ![]() (e) 然后,点击保存按钮。然后,我们将测试代理。 ![]() 槽填充现在,将测试“set an appointment”。这并不清楚,您也不需要处理这种情况。因此,默认回退意图会处理这种情况,我们可以为此目的使用槽填充。 槽填充使您能够在单个意图中构建参数-值集合的对话流程。在无法完成操作而没有一组参数值的情况下,槽填充非常有用。 设置槽填充有多种步骤: 1. 首先,点击“Action and Parameter”选项。创建所需的实体,并在 Dialogflow 中询问日期和时间,然后再给出响应。 2. 对于日期,我们输入或键入“什么日期?” ![]() 3. 对于时间,我们输入或键入“您想在什么时间过来?” ![]() 4. 然后,我们点击“保存”按钮。 ![]() 4. 测试您的聊天机器人现在,我们的约会调度器聊天机器人已准备就绪,现在我们来测试聊天机器人。要测试聊天机器人,我们需要在 Dialogflow 控制台的测试面板中输入各种对话。
![]()
![]()
![]()
![]() 现在,我们可以在上面的截图看到,我们开发的聊天机器人正在正常工作。 5. 启用一键式 Web 集成如果我们要与他人共享日程安排,请使用名为“一键式 Web 集成”的选项。在 Dialogflow 中,有各种类型的集成可用于聊天机器人。看看聊天机器人 Web 用户界面的示例。 使用一键式 Web 集成有多种步骤: 1. 在 Dialogflow 中,点击 ![]() 2. 然后启用 Web 演示。 ![]() 3. 接下来,要启动 Web 演示,请点击 URL。 ![]() 执行完上述步骤后,我们就可以使用聊天界面了。我们可以通过在标有“Ask Something”的地方输入内容来使用聊天界面。 使用下面的对话,我们可以开始使用聊天界面。 1. 输入“Hi”。当您输入“Hi”或类似内容时,聊天机器人会做出回应。 ![]() 2. 然后,输入“明天下午 6 点安排约会”,然后聊天机器人会做出回应。 ![]() 如何使用 Dialogflow 构建 FAQ 聊天机器人使用 Dialogflow 构建 FAQ 聊天机器人有多种步骤:
创建代理如果我们要使用 Dialogflow 构建 FAQ 聊天机器人,则需要创建一个代理,要创建代理,我们需要遵循各种步骤。
现在,我们可以通过点击左侧边栏菜单上的“创建新代理”选项来创建代理。 ![]() (b) 接下来,给代理命名。我们正在为 FAQ 构建一个代理。因此,我们为此提供了一个相关的名称,如FAQ_agent。点击“CREATE”按钮。 ![]() 启用 Beta 功能和 API我们启用了 Beta 功能和 API。启用 Beta 功能和 API 后,我们就可以创建知识连接器了。 ![]() 创建知识库创建知识库的步骤如下: (a) 首先,点击名为“创建知识库”的选项。 ![]() (b) 然后,给知识库命名,然后点击“SAVE”按钮保存。 ![]() (c) 接下来,需要一个知识文档,我们将使用该文档来自动生成 FAQ 聊天机器人。我们使用此 FAQ 作为示例。为此,我们也可以使用我们的文档。 (d) 现在,回到 Dialogflow 代理,然后构建我们的第一个知识连接器。 ![]()
![]() 现在,Facebook 的 FAQ 聊天机器人已通过知识连接器创建,点击 Facebook FAQ。 ![]() 我们可以看到问题被解析为请求和答案。 ![]() 现在,为了启用自动响应,我们必须点击“添加响应”,然后点击“保存”。 ![]() 在开始测试我们的代理之前,首先启用聊天机器人。要启用聊天机器人,请勾选 FAQ 名称旁边的复选框,然后按“启用”。 ![]() 处理响应创建知识库并添加 FAQ 后,我们的下一步是在“响应”部分添加一些变体,以检查聊天机器人如何呈现知识库的响应。 以下响应已添加到响应部分:
![]() 测试您的聊天机器人现在,借助模拟器,我们可以测试聊天机器人。要测试聊天机器人,请在与 FAQ 相关的模拟器中输入一些内容。在此示例中,我们为 Facebook 创建了一个 FAQ 聊天机器人。要测试聊天机器人,我们必须输入与 Facebook FAQ 聊天相关的问题,例如“我的应用程序可以使用标准消息和消息标签发送消息吗?” 输入此问题后,我们将从机器人那里收到响应。然后,我们也可以尝试一些其他示例,例如“如果我的机器人在一个 24 小时的标准消息窗口之外多次给某人发消息,会发生什么?” 我们会注意到,即使我们没有键入 FAQ 中的特定问题,正确的意图仍然被映射。这就是知识连接器的特殊之处。 ![]() |
我们请求您订阅我们的新闻通讯以获取最新更新。