首页 > 解决方案 > 为什么 Dialogflow 两次询问相同的后续意图?

问题描述

我第一次创建了一个非常简单的 Dialogflow 项目,但我的后续意图之一遇到了问题。它两次询问相同的后续问题。

在此处输入图像描述

在此处输入图像描述 在此处输入图像描述

在此处输入图像描述

在此处输入图像描述

我正在 Dialogflow 中对此进行测试。你有什么建议我可以试试吗?

非常感谢

标签: dialogflow-es

解决方案


问题归结为后续意图如何在幕后工作以及 Dialogflow 用来执行它们的机制。

它们之所以起作用,是因为 Base Intent 将设置一个输出上下文,并且有效的后续 Intent 仅针对相同的输入上下文触发。所以check意图设置了一个check-followup上下文,而check-no意图取决于check-followup被设置的意图。类似地,check-no意图设置check-no-followup上下文并且check-no-no意图期望设置check-no-followup上下文。

但是,这些 Context 的生命周期最初设置为 2,并且每次处理 Intent 时都会递减。因此,在check-no处理完意图后,我们将设置两个上下文:check-followup check-no-followup.

当用户再次说“不”时,这将成为两难选择。这匹配两个 Intent,并且这两个 Intent 都有一个当时有效check-no的上下文:(因为check-followup上下文仍然处于活动状态)和check-no-no(因为check-no-followup上下文刚刚被激活)。由于不止一个 Intent 可能是有效的 - 不确定哪一个会被调用。这就是为什么它适用于您一直在尝试的其他测试用例。

在您的情况下,一个合理的解决方案是确保您希望这两个上下文中的哪个上下文在那时有效。在这种情况下,在您希望匹配它们的 Intent 之后关闭 Context 是有意义的。所以这意味着如果check-no上下文被触发,那么您将设置check-followup为具有一个重要区别的输出上下文 -您应该明确地将其生命周期设置为 0。这将删除该上下文,因此不会混淆哪些 Intent 可用于处理用户的下一个回复。


推荐阅读