使用流程构建代理

本指南介绍了如何使用 Dialogflow CX 控制台构建和测试使用流的衬衫订购代理。与此代理互动时,您可以查询商店位置、获取商店营业时间或订购衬衫。

下图显示了本指南的已完成代理:

代理图屏幕截图

准备工作

在阅读本指南之前,请先完成以下任务:

创建代理

为本指南创建代理:

  1. 打开 Dialogflow CX 控制台
  2. 创建或选择一个项目。
  3. 点击 Create agent
  4. 选择自行构建
  5. 填写基本代理设置表单:
    1. 输入显示名。
    2. 选择位置。如果您想要更改高级 位置信息设置,请点击 修改 按钮。
    3. 选择时区。
    4. 选择默认语言。
    5. 您也可以选择启用 Cloud Logging。
  6. 点击保存

可选的代理导入

本指南将介绍如何完成构建一个衬衫订购代理的步骤。

如需跳过控制台步骤,请下载 代理将其导入

默认流和意图

系统会自动为新代理创建以下流和意图。

如需查找意图,请依次点击管理意图 ;您 如需查找流,请点击构建

X 推荐项
默认欢迎意图 默认欢迎意图具有训练短语(例如“Hi”或“Hello”),旨在匹配初始最终用户输入。您可以根据需要修改此意图。
默认负意图 您可以使用默认负意图将训练短语添加到此意图中作为反例。
默认初始流 默认初始流可用作唯一的流。它是本指南中使用的唯一的流。对于更复杂的代理,您可以添加更多流。该流具有默认的意图路由,以默认欢迎意图 作为意图要求。

测试默认欢迎响应消息

默认流和默认意图可处理仅含有欢迎消息的基本对话。

要测试新代理,请执行以下操作:

  1. 点击测试代理 按钮以打开模拟器。
  2. 在文本字段中输入 hello,然后按 Enter 键。
  3. 代理会使用默认欢迎辞做出响应。
  4. 关闭模拟器。

模拟器屏幕截图

代理为此最终用户输入执行了以下步骤:

  1. 提供输入后,代理会评估 活跃 默认初始流流起始页范围内状态处理程序。
  2. 代理会识别与默认欢迎意图 匹配的路由并执行该路由。
  3. 代理会随机选择一条 fulfillment 响应消息,然后将 其添加到 响应队列中。
  4. 由于该路由没有转换目标,因此活跃流和活跃页面保持不变。
  5. 代理会将响应队列的内容发送给您。

修改欢迎响应消息

要修改欢迎响应消息,请执行以下操作:

  1. 点击构建标签页。
  2. 部分中选择默认初始流
  3. 点击图表中的起始页 节点。
  4. 找到具有默认欢迎意图 的路由作为意图要求,然后点击它以打开路由修改面板。
  5. 在 fulfillment 部分的代理响应子部分中,删除所有现有响应消息。
  6. 添加 Hello, this is a shirt ordering virtual agent. How can I help you? 作为唯一响应。
  7. 点击保存
  8. 关闭路由修改面板。

代理响应屏幕截图

测试更新后的欢迎响应消息

要测试更新后的响应,请执行以下操作:

  1. 点击测试代理 按钮以打开模拟器。
  2. 在文本字段中输入 hello,然后按 Enter 键。
  3. 代理会以您的新消息做出响应。
  4. 关闭模拟器。

商店位置页面

Dialogflow CX 对话(会话)可以描述并直观呈现为 状态机。CX 会话的状态由 页面表示。由于您只有一个页面,因此代理不是很有用。在本部分中,您将创建另一个页面,以处理有关商店位置的问题。

创建有意前往的地理位置意图

意图”用于对一轮对话中的最终用户 意图进行分类。

要创建与最终用户输入请求商店位置时匹配的意图,请执行以下操作:

  1. 选择管理 标签页。
  2. 点击意图 (Intents)。
  3. 点击创建
  4. 输入 store.location 作为意图显示名。
  5. 输入以下训练短语:
    • Where is the store?
    • Directions
    • Tell me the address
    • Where do I pick up my order?
    • How do I get there?
    • Where is the store located?
    • What street are you on?
    • What is your address?
    • How do I get to your store?
    • Where are you located?
  6. 点击保存

意图屏幕截图

创建位置页面

创建一个新页面。您可以将条目 fulfillment 添加到此页面,只要页面变为活跃页面,就会运行此页面。 此 fulfillment 条目应具有提供商店位置的响应消息。

要创建商店位置页面,请执行以下操作:

  1. 点击构建标签页。
  2. 部分中选择默认初始流
  3. 点击页面 部分中的添加 按钮。此时会显示页面显示名的文本条目。
  4. 输入 Store Location 作为页面显示名,然后按 Enter 键。
  5. 点击页面 显示名旁边的more_vert 按钮。
  6. 选择修改 以打开页面修改面板。
  7. 找到条目 fulfillment ,然后点击 Edit fulfillment
  8. 点击 +Add dialogue response ,然后在 Agent responses 部分的 Agent dialogue 字段中输入 Our store is located at 1007 Mountain Drive, Gotham City, NJ.
  9. 点击保存
  10. 关闭页面修改面板。

页面屏幕截图

向流添加有意前往的地理位置意图路由

现在,创建一个将商店位置页面作为转换目标的路由。 调用此路由时,会话将转换到商店位置页面。 此路由适用于默认初始流,因此只要该流处于活跃状态 ,它就在范围内。

对于单流代理,这意味着路由始终在范围内。在对话中的任何时间点,最终用户都可以询问商店位置,并且此路由将被调用。

如需创建路由,请执行以下操作:

  1. 点击构建 标签页。
  2. 部分中选择默认初始流
  3. 点击图表中的起始页 节点。这是默认初始流 的起始页。
  4. 添加以下意图路由:
    • 意图store.location
    • 转换页面Store Location
  5. 点击保存
  6. 关闭意图路由修改面板。

意图路由屏幕截图

关闭修改面板后,图表上会显示新页面的节点。从起始 节点到商店位置 节点的箭头显示了会话如何在节点之间转换。

测试商店位置页面

要测试您的页面,请执行以下操作:

  1. 点击测试代理 按钮以打开模拟器。
  2. 输入 What is the store location?,然后按 Enter 键。
  3. 代理会提供地址。
  4. 关闭模拟器。

代理为此最终用户输入执行了以下步骤:

  1. 提供输入后,代理会评估 活跃 默认初始流流起始页范围内状态处理程序。
  2. 代理会识别与 store.location 意图匹配的路由并执行该路由。
  3. 由于该路由没有 fulfillment 响应消息,因此代理不会向响应队列添加任何内容。
  4. 代理会将会话转换到商店位置 页面。
  5. 代理会将商店位置 页面的条目 fulfillment 响应消息添加到响应队列中。
  6. 代理会将响应队列的内容发送给您。

使用内嵌创建功能创建商店营业时间页面

在本部分中,您将创建一个商店营业时间 页面,以处理最终用户关于商店营业时间的问题。之前,您通过构建管理 标签页创建了页面和意图。本部分介绍如何使用内嵌创建功能来更快地创建这些组件。

要内嵌创建意图路由、意图和页面,请执行以下操作:

  1. 点击图表中的起始页 节点。
  2. 路由 旁边,点击 添加。 此时会打开意图路由修改面板。
  3. 意图 部分中,选择新意图 。此时会打开意图修改面板。
  4. 使用以下训练短语创建 store.hours 意图:

    • What are your store hours?
    • What time do you close?
  5. 点击保存 。意图编辑面板会关闭。

  6. 前往路由修改面板中的转换 部分。

  7. 对于页面 转换,请选择新页面

  8. 在显示的文本条目中输入 Store Hours

  9. 点击保存 。此时图表上会显示一个新页面,因为现在有一个导向它的转换。

  10. 关闭路由修改面板。

  11. 添加一个提供商店营业时间的条目 fulfillment,与为商店位置 执行的操作类似。

  12. 关闭所有打开的修改面板。

订购商品页面

接下来,创建一个使用表单参数的页面。 当您请求新的衬衫订单时,会话将转换到此页面,该页面会收集衬衫订单的尺寸和颜色。

为衬衫尺寸创建自定义实体类型

实体类型用于控制 最终用户输入数据的提取方式。Dialogflow CX 提供预定义的系统实体,这些实体与常见数据类型(例如日期、时间、颜色和电子邮件地址)相匹配。您还可以为特定数据创建自定义实体。

对于此代理,您可以将系统实体用于衬衫颜色,但您需要为衬衫尺寸创建自定义实体。

尺寸实体类型应具有以下实体条目:

实体 同义词
媒介 中、标准、平均

如需创建实体,请执行以下操作:

  1. 选择管理 标签页。
  2. 点击实体类型
  3. 点击创建
  4. 将显示名设置为 size
  5. 添加表中列出的实体条目。
  6. 点击保存

使用意图参数创建订单意图

您需要一个在最终用户请求新衬衫订单时匹配的意图。如果最终用户最初提供了所选衬衫颜色或尺寸,此意图还应选择捕获这些信息。

参数用于捕获和 引用最终用户在会话期间提供的值。每个参数都有一个显示名和一个实体类型。与原始的最终用户输入不同,参数是结构化数据,您可以用于执行逻辑或生成响应。

您可以通过 为部分训练短语添加注释 并配置关联的 意图参数来控制提取最终用户数据的方式。

例如,假设有一条训练短语为“What is the forecast tomorrow for Tokyo?” 您可以为“tomorrow”添加 date 参数注释,并为“Tokyo”添加 location 参数注释。当您为训练短语的特定部分添加注释后,Dialogflow CX 会识别出这些部分只是最终用户可在运行时提供的实际值的示例。

对于“What is the forecast on Friday for Sydney?”这样的最终用户输入, Dialogflow CX 可以从“Friday”中提取 date 参数,并从“Sydney”中提取 location 参数。

如需在控制台中为训练短语添加注释,请执行以下操作:

  1. 突出显示要添加注释的训练短语部分。
  2. 从列表中选择所需的实体类型。
  3. Dialogflow 会在下表中创建一个参数。

按照以下步骤创建一个名为 order.new 的意图:

  1. 对于包含颜色的每个短语,请使用 color 参数和 @sys.color 系统实体类型为颜色添加注释。
  2. 对于包含衬衫尺寸的每个短语,请使用 size 参数和 @size 您之前创建的自定义实体类型来为尺寸添加注释。

训练短语和参数应如下所示:

意图屏幕截图

创建订单页面

创建新订单页面:

  • 显示名New Order
  • 条目 fulfillmentOk, let's start a new order.

向订单页面添加表单

您需要为每个页面定义一个表单, 该表单上列出应从该页面的最终用户处收集的 参数。代理会与最终用户进行多轮对话, 直到收集到所有必需的表单参数(也称为页面 参数)。您还需要针对每个表单参数提供“提示”,供代理用于向最终用户询问该信息。 此过程称为“表单填充”。

当最终用户提供意图匹配的意图参数时,意图 参数将成为会话参数。 当页面最初处于活跃状态时,其所有表单参数都会预填充任何同名的会话参数。因此,如果最终用户在 order.new 意图匹配时提供尺寸或颜色,系统将自动填充这些值。

为“新订单”页面定义两个必需的表单参数:

必填 显示名 实体类型 为列表 Prompt
color @sys.color 您想要哪种颜色?
尺寸 @size 您想要哪种尺寸?

要添加此表单,请执行以下操作:

  1. 点击图表中的新订单 页面。
  2. 点击参数 添加按钮 以打开参数编辑面板。
  3. 按照上表中的说明添加参数。
  4. 点击保存
  5. 关闭参数编辑面板。

向流添加订单意图路由

默认初始流 添加一个路由,当最终用户想创建新订单时,该路由会转换到新订单 页面:

  • 意图:order.new
  • “转换目标”页面:新订单

确认页面

最终页面会确认订单并结束会话。

创建确认页面

创建一个确认页面,其中包含使用会话参数确认订单的响应:

  • 显示名:Order Confirmation
  • 条目履行:You can pick up your order for a $session.params.size, $session.params.color shirt in 7 to 10 business days. Goodbye.

向订单页面添加条件路由

您可以使用条件来确定 是否调用某个路由。条件通常用于检查表单是否完成,或者配置为在评估时始终调用。

如需在控制台中设置条件,请参阅 设置条件文档。

将以下路由添加到订单页面,系统会在填写订单页面表单时调用该路由。此条件路由会在对最终用户的响应中使用参数引用,并将会话转换到订单确认 页面。

  • 条件: $page.params.status = "FINAL"
  • 代理说You have selected a $session.params.size, $session.params.color shirt.
  • 转换页面Order Confirmation

将以下路由添加到订单页面。当页面处于活跃状态且评估条件路由时,此路由会在每轮对话中运行。在评估和调用上述条件时,页面会变为非活跃状态,因此不会评估此 true 条件路由:

  • 条件true
  • 代理说I'd like to collect a bit more information from you.

创建结束会话的条件路由

将以下条件路由添加到订单确认 页面,以在该页面变为活跃状态并处理其条目 fulfillment 后结束会话:

  • 条件true
  • 转换目标页面End Session

测试已完成的代理

使用以下对话框测试代理:

对话框 说明
最终用户: 你好
客服: 你好,这里是衬衫订购虚拟客服。您需要什么帮助?
  1. 系统调用默认初始流 中的默认欢迎意图 路由。
  2. 此状态处理程序的 fulfillment(“你好,这里是…”)已添加到响应队列中。
  3. 代理将响应队列发送给最终用户。
最终用户:我想买件蓝色衬衫
代理:好的,我们来创建一个新订单。
代理:我想从您那里收集更多信息。
代理:您想选择哪种尺寸?
  1. 系统会评估默认初始流 中的 order.new 意图路由。
  2. order.new 意图匹配, 且 color 意图参数设置为 "blue"。
  3. 会话转换到新订单 页面, 而 color 意图参数则成为会话参数。
  4. 新订单页面包含一个 fulfillment 条目(“好的,让我们开始…”)因此,它会添加到响应队列中。
  5. color 会话参数用于填充相似名称的表单参数。
  6. 新订单页面中的真实条件路由将进行评估和调用。其中包含一条响应消息(“我想收集…”)因此,它会添加到响应队列中。
  7. 页面的表单未填写,因此代理会使用尺寸提示(“多大尺寸…”)并将其添加到响应队列中。
  8. 代理将响应队列发送给最终用户。
最终用户:大
代理:您选择了大尺寸蓝色衬衫。
代理:您可以在 7 到 10 个工作日内为这一款大尺寸蓝色衬衫下订单。再见。
  1. 最终用户输入填充了尺寸参数 代理在上一轮对话中请求的。
  2. 系统会评估并调用新订单页面中的表单完成路由。它具有一个 fulfillment(即“您已选择…”),它会添加到响应队列中,其参数引用解析为最终用户提供的实际值。
  3. 会话转换到订单确认 页面。
  4. 订单确认 页面包含一个履单条目 (“您可以自提…”),该条目已添加到响应队列。
  5. 代理将响应队列发送给最终用户。
  6. 会话转换到结束会话

为生产做好准备

在生产环境中运行代理之前,请实施 生产环境最佳实践