创建和自定义代理

在 Dialogflow 中,新创建的代理包含两项默认意图,即“默认欢迎意图”和“默认后备意图”。除了创建新意图之外,构建代理的初始步骤还涉及自定义这些默认意图,以便使其与代理的目的和角色相一致。

准备工作

在学习本教程之前,您应该熟悉一下快速入门中的 Dialogflow 基础知识。

创建代理

使用 Dialogflow 控制台创建名为“MarysBikeShop”的代理。如果您不确定如何操作,请再次参阅快速入门

自定义“默认欢迎意图”

我们先根据 Google 对话设计最佳做法来自定义“默认欢迎意图”的响应。按照最佳做法,建议您通过问候语实现三个主要目标:欢迎用户;设定对话的预期方向;以及让用户掌握话语主动权。

我们可以按照这种最佳做法来编写代理的问候语:

Welcome. I can tell you the shop hours, or I can set up an appointment. Which would you like?

要更新“默认欢迎意图”响应,请执行以下步骤:

  1. 点击“默认欢迎意图”。
  2. 转到 Responses(响应)部分。
  3. Text response(文本响应)表中,删除所有默认响应。
  4. Text response(文本响应)表中,复制并粘贴以下响应:

    Welcome. I can tell you the shop hours, or I can set up an appointment. Which would you like?

  5. 点击保存

  6. 使用 Dialogflow 控制台中的模拟器测试更新后的响应。

    图 2.显示了“欢迎”意图及其匹配话语和响应的流程图。

创建响应变体

在编写一条新的问候语之后,我们需要创建其他变体。请在“默认欢迎意图”中添加以下变体作为响应:

  • Welcome. I can tell you the shop hours, or I can make an appointment. What can I do for you?
  • Hello there. I can tell you the shop hours, or I can schedule an appointment. How may I help you today?

如果我们为一项意图提供了多种响应,Dialogflow 会从列表中随机选择一种响应变体。不过请注意,在我们开始为 fulfillment 编写代码后,便可以使用更复杂的方法来处理响应变体,从而使意图可采用复杂的逻辑。Dialogflow 的 fulfillment 组件将在后面的部分中介绍。

在我们的响应变体中,问候语以问题结尾,例如“Which would you like?”以及“What can I do for you?”。此时,代理期待用户给予答复,用户的答复应该会表明他们希望代理帮助做些什么。在下一部分中,我们将创建代理的首项自定义意图,该意图可以识别和解决用户的请求。

创建自定义意图

我们希望自行车店代理执行两项任务:

  • 告知客户营业时间
  • 为客户安排预约

我们先创建一项意图,用于告知用户自行车店的营业时间。我们可以从为该意图编写示例对话开始:

用户:When are you open?

代理:We're open from 9 AM to 6 PM every day. Is there anything else I can do for you?

要创建可以处理该对话的意图,请执行以下步骤:

  1. 创建名为 Hours 的新意图。
  2. 在 Hours 意图的训练短语 (Training phrases) 部分,输入以下训练短语:When are you open?
  3. 响应 (Responses) 部分的文本响应 (Text response) 表中输入以下响应:We're open from 9 AM to 6 PM every day. Is there anything else I can do for you?
  4. 点击保存

    图 3.显示“默认欢迎意图”和新自定义意图 Hours 的流程图。

上面的设置提供了一个有效的基本意图。当用户询问“When are you open?”的时候,Dialogflow 将用户话语与自定义意图 Hours 相匹配。然后,意图用“We're open from 9 AM to 6 PM every day.Is there anything else I can do for you?"进行响应。

添加更多训练短语

由于 Hours 意图目前只有一条训练短语“When are you open?”,因此意图没有足够的信息来识别具有相同含义的其他类似话语。我们需要提供更多训练短语,以便代理能够匹配表达相同意图的各种用户话语。

在自然语言中,我们几乎总是可以用不同的语句来表达同样的意思。我们建议一开始就为每项意图添加至少 10-20 条(具体取决于意图的复杂程度)训练短语。当您开始测试代理时,请继续使用 Dialogflow 的训练工具添加更多训练短语。

对于语句“When are you open?”,我们能够想到以下 10 种用户可能会使用的变体形式:

  • Are you open today?
  • How late are you open on weekends?
  • When do you close?
  • What time do you open tomorrow morning?
  • Are you open now?
  • Business hours.
  • How early can I drop in?
  • Tell me your opening hours.
  • What are your hours?
  • How late can I come in?

如需将这些变体添加为训练短语,请执行以下步骤:

  1. 点击 Hours 意图。
  2. Training phrases(训练短语)部分,复制并粘贴上面的每条语句。
  3. 点击保存
  4. 通过 Dialogflow 控制台中的模拟器,用各种用户话语来测试该意图。

到目前为止,我们的代理可以问候和欢迎用户,并可识别和解决用户的特定请求。但是,如果用户讲出某些话后代理无法理解,会发生什么情况呢?

在下面这个部分中,我们将探讨一种用于处理不匹配的话语的特殊意图,即“后备意图”。

自定义后备意图

后备意图是一种特殊的意图,当用户话语与任何其他意图都不匹配时,便会与后备意图相匹配。与“默认欢迎意图”一样,每个代理都包含一项名为“默认后备意图”的通用后备意图。

后备意图可以提示用户以代理能够理解的方式讲话。要更新“默认后备意图”响应,请执行以下步骤:

  1. 点击“默认后备意图”。
  2. 转到 Responses(响应)部分。
  3. Text response(文本响应)表中,删除所有默认响应。
  4. Text response(文本响应)表中,复制并粘贴以下响应:

    Sorry, did you want to hear our hours, or set up an appointment?

  5. 点击保存

    图 4.在左上角显示了后备意图的流程图。

后备响应中的提示问题 (“did you want to hear our hours, or set up an appointment?”) 会引导用户说出可识别的话语。代理会期待用户用以下某一话语进行回复:“I want to know the hours”或“I want to set up an appointment”。

此时,代理没有能够处理话语的意图“我想进行预约。”在下一部分中,我们将创建一个可以解决预约预约问题的高级 intent。