Dialogflow - 上下文



上下文允许您通过定义意图匹配所需的特定对话状态来控制对话流程。如果最终用户的短语及其训练词语可比,Dialogflow 通常会匹配意图。当上下文应用于 Dialogflow 时,只有在上下文处于活动状态时,它才会考虑意图匹配。

因此,您可以激活和停用上下文,并且还可以控制对话流程的两种上下文类型:

  • 输入上下文:只有在输入上下文处于活动状态并且最终用户表达与意图匹配时,Dialogflow 才允许匹配意图。

  • 输出上下文:当输出上下文应用于意图时,Dialogflow 允许在意图匹配后保留上下文,或者如果上下文尚未激活,则激活上下文。

上下文示例

在我们为酒店预订演示聊天机器人创建的示例中,只需提供人数和入住晚数即可进行预订。此外,我们将向我们的 webhook 添加一个新的参数,询问用户是否更喜欢拥有山景或海景的酒店 - totalPersons 和 totalNights。

1. 点击 Dialogflow 控制台中“预订信息”意图按钮。

2. 在“上下文”字段中输入 bookingInfoCtxt 作为输出上下文,然后按 Enter。

Dialogflow Context Example

3. 现在您需要转到“文本响应”部分并按如下方式创建它。由于用户在现实环境中很可能以相同的意图表达他们的愿望,因此可以以不同的方式处理。

Dialogflow Context Example

4. 转到“实现”部分并关闭:为此,激活 webhook 调用。webhook 调用将移动到新的意图。

如上所示,我们为此意图创建了一个输出上下文,该上下文将用于发送到记录用户偏好房间视图的另一个意图。让我们看看如何

  • 创建一个新的意图并将其命名为“房间视图”。

  • 在“上下文”部分,输入我们在前面步骤中创建的输入上下文的值:输入 bookingInfoCtxt 后按 Enter。

  • 我们只是为短语训练添加了“海景”和“山景”值;您可以添加更多值以提高确定用户意图的准确性。

  • 点击“保存”后,您需要通过从左侧菜单中选择“实体”来创建一个名为 room-view-preference 的新实体。该实体只是一种可以从意图中检索的类型,我使用两个值创建了它,如下所示。

Dialogflow Context Example

5. 现在您需要返回到“房间视图”意图,并像下面一样设置训练短语的实体(两者都一样)。

Dialogflow Context Example

6. 转到“操作和参数”部分,并按如下方式完成它。使用 #[ContextName].[ParamName] 来验证参数是如何从上下文中获取的。

Dialogflow Context Example

后续意图

后续意图允许您自动定义意图配对的上下文。后续意图与其相关的父意图的子意图。创建后续意图时,会向后续意图添加同名的输入上下文,并向父意图自动添加输出上下文。只有在前一轮对话中匹配父意图时,后续意图才会匹配。此外,您可以在不同级别创建嵌套的后续意图。

Dialogflow 具有针对常见最终用户响应(例如“是”、“否”或“取消”)的各种预先建立的后续意图。为了处理独特的响应,您还可以设计您自己的后续意图。

例如,以下嵌套意图可以存在于美发师 Agent 中。

意图 训练短语 输入上下文 输出上下文 意图响应
预约 你好 appointment-followup 你想预约吗?
预约 - 是 是的 appointment-followup appointment-yes-followup 你想剪头发吗?
剪发 - 是 是的 appointment-yes-followup 您的预约已设置。
剪发 - 否 appointment-yes-followup 再见。
预约 - 否 appointment-followup 再见。

管理上下文

上下文通常在设计阶段(创建 Agent 时)配置。例如,使用以下训练短语:“我想在我的购物车中添加披萨。”

在某些更复杂的情况下,您可能还想构建检索和设置运行时某些上下文的代码。例如,您可以验证设备的位置并将其添加到上下文中,以便以后可以访问它。

上下文命名

以下规则适用于上下文命名:

规则 示例
使用字母数字名称。 mycontext1
使用 - 或 _ 代替空格。 my-context-1
名称不区分大小写。 Abc123 和 abc123 被认为是等效的。
使用 API 时,所有上下文名称都为小写。 abc123
广告