在 Dialogflow 中,新创建的代理包含两项默认意图,即“默认欢迎意图”和“默认后备意图”。除了创建新意图之外,构建代理的初始步骤还涉及自定义这些默认意图,以便使其与代理的目的和角色相一致。
准备工作
在学习本教程之前,您应该熟悉一下快速入门中的 Dialogflow 基础知识。
创建代理
使用 Dialogflow 控制台创建名为“MarysBikeShop”的代理。如果您不确定如何操作,请再次参阅快速入门。
自定义“默认欢迎意图”
我们先根据 Google 对话设计最佳做法来自定义“默认欢迎意图”的响应。按照最佳做法,建议您通过问候语实现三个主要目标:欢迎用户;设定对话的预期方向;以及让用户掌握话语主动权。
我们可以按照这种最佳做法来编写代理的问候语:
Welcome. I can tell you the shop hours, or I can set up an appointment. Which would you like?
要更新“默认欢迎意图”响应,请执行以下步骤:
- 点击“默认欢迎意图”。
- 转到 Responses(响应)部分。
- 在 Text response(文本响应)表中,删除所有默认响应。
在 Text response(文本响应)表中,复制并粘贴以下响应:
Welcome. I can tell you the shop hours, or I can set up an appointment. Which would you like?
点击保存。
使用 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?
要创建可以处理该对话的意图,请执行以下步骤:
- 创建名为
Hours
的新意图。 - 在 Hours 意图的训练短语 (Training phrases) 部分,输入以下训练短语:
When are you open?
- 在响应 (Responses) 部分的文本响应 (Text response) 表中输入以下响应:
We're open from 9 AM to 6 PM every day. Is there anything else I can do for you?
点击保存。
图 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?
如需将这些变体添加为训练短语,请执行以下步骤:
- 点击 Hours 意图。
- 在 Training phrases(训练短语)部分,复制并粘贴上面的每条语句。
- 点击保存。
通过 Dialogflow 控制台中的模拟器,用各种用户话语来测试该意图。
到目前为止,我们的代理可以问候和欢迎用户,并可识别和解决用户的特定请求。但是,如果用户讲出某些话后代理无法理解,会发生什么情况呢?
在下面这个部分中,我们将探讨一种用于处理不匹配的话语的特殊意图,即“后备意图”。
自定义后备意图
后备意图是一种特殊的意图,当用户话语与任何其他意图都不匹配时,便会与后备意图相匹配。与“默认欢迎意图”一样,每个代理都包含一项名为“默认后备意图”的通用后备意图。
后备意图可以提示用户以代理能够理解的方式讲话。要更新“默认后备意图”响应,请执行以下步骤:
- 点击“默认后备意图”。
- 转到 Responses(响应)部分。
- 在 Text response(文本响应)表中,删除所有默认响应。
在 Text response(文本响应)表中,复制并粘贴以下响应:
Sorry, did you want to hear our hours, or set up an appointment?
点击保存。
图 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。