使用流程构建代理

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

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

代理图屏幕截图

准备工作

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

创建代理

为此指南创建一个智能体:

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

可选的代理导入

本指南将引导您完成构建衬衫订购智能体的步骤。

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

默认流和意图

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

您可以依次点击管理和 intent 来查找 intent,也可以点击构建来查找 flow。

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

测试默认欢迎回复消息

默认流程和 intent 可以处理仅包含欢迎消息的基本对话。

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

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

模拟器屏幕截图

代理会针对此最终用户输入执行以下步骤:

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

修改欢迎响应消息

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

  1. 点击构建标签页。
  2. 在流部分中选择默认初始流。
  3. 点击图表中的 Start Page 节点。
  4. 找到将 Default Welcome Intent 作为意图要求的路由,然后点击该路由以打开路由编辑面板。
  5. 在执行部分中的代理回答子部分下,删除所有现有回答消息。
  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 会话的状态由页面表示。由于您只有一个页面,因此该代理用处不大。在本部分中,您将创建另一个页面,用于处理有关商店位置的问题。

创建位置意图

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

如需创建在最终用户输入请求商店位置时匹配的 intent,请执行以下操作:

  1. 选择管理标签页。
  2. 点击意图 (Intents)。
  3. 点击创建。
  4. 输入 store.location 作为 intent 显示名称。
  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,然后点击修改 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. 点击图表中的 Start Page 节点。这是默认初始流的起始页。
  4. 添加以下意图路由:
    • 意图: store.location
    • 过渡页面: Store Location
  5. 点击保存。
  6. 关闭意图路由修改面板。

意图路由屏幕截图

关闭编辑面板后,图表上会显示新页面的节点。从开始节点指向店面位置节点的箭头显示了会话如何在节点之间转换。

测试商店位置页面

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

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

代理会针对此最终用户输入执行以下步骤:

  1. 当您提供输入时,代理会评估活跃的默认起始流和流起始页范围内的状态处理程序。
  2. 代理会识别与 store.location intent 匹配的路线并执行该路线。
  3. 由于该路由没有执行方式响应消息,因此代理不会向响应队列添加任何内容。
  4. 代理会将对话转换到 Store Location 页面。
  5. 代理将店铺定位工具页面中的条目执行方式响应消息添加到响应队列。
  6. 智能体将回答队列的内容发送给您。

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

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

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

  1. 点击图表中的 Start Page 节点。
  2. 点击路由旁边的 添加。 此时会打开意图路由修改面板。
  3. 在意图部分中,选择新意图。系统会打开 intent 编辑面板。
  4. 创建一个包含以下训练短语的 store.hours 意图:

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

  6. 前往路线编辑面板中的过渡部分。

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

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

  9. 点击保存。新页面会显示在图表中,因为现在有一个指向该页面的转换。

  10. 关闭路线编辑面板。

  11. 添加一个提供营业时间的条目执行方式,就像您为商店位置所做的那样。

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

订购商品页面

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

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

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

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

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

实体 同义词
小 小
中 中、标准、平均
大 大

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

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

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

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

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

您可以通过注释部分训练短语并配置关联的意图参数,控制如何通过意图匹配提取最终用户数据。

例如,假设训练短语为“东京明天的天气预报是什么?”您可以使用 date 参数为“明天”添加注解,并使用 location 参数为“东京”添加注解。当您为训练短语的某些部分添加注释时,Dialogflow CX 会识别出这些部分只是最终用户在运行时可以提供的实际值的示例。

对于最终用户输入(例如“悉尼周五的天气预报如何?”),Dialogflow CX 可以从“Friday”中提取 date 参数,并从“Sydney”中提取 location 参数。

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

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

按照以下步骤创建名为 order.new 的 intent:

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

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

意图屏幕截图

创建订单页面

创建新订单页面:

  • 显示名称: New Order
  • 条目执行方式: Ok, let's start a new order.

向订单页面添加表单

对于每个页面,您可以定义一个表单,即应从最终用户那里收集的页面参数列表。智能体与最终用户进行多轮对话,直到收集到所有必需的表单参数(也称为页面参数)。对于每个表单参数,您还需要提供提示,供智能体用来向最终用户请求该信息。此过程称为表单填充。

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

为 New Order 页面定义两个必需的表单参数:

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

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

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

向流添加订单意图路由

向默认开始流程添加一条路由,以便在最终用户想要创建新订单时转换到新订单页面:

  • 意图:order.new
  • 转换目标页面:New Order

确认页面

最后一页会确认订单并结束会话。

创建确认页面

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

  • 显示名称: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.

创建结束会话的条件路由

将以下条件路由添加到 Order Confirmation 页面,以便在页面变为活跃状态且其条目 fulfillment 处理完毕后结束会话:

  • 条件: true
  • 过渡目标页面: End Session

测试已完成的代理

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

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

为投入生产环境做好准备

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