dialogflow-es - 为什么 Dialogflow 两次询问相同的后续意图?
问题描述
我第一次创建了一个非常简单的 Dialogflow 项目,但我的后续意图之一遇到了问题。它两次询问相同的后续问题。
我正在 Dialogflow 中对此进行测试。你有什么建议我可以试试吗?
非常感谢
解决方案
问题归结为后续意图如何在幕后工作以及 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 可用于处理用户的下一个回复。
推荐阅读
- r - 如何创建按PERMNO分组并在R中按日期排列的累积变量
- python - 我正在尝试从我的用户那里获取:first_name 和 last_name,并注意到在我的 html 代码中正在改进
- android - 为什么我的位图图像出现在警报对话框后面?
- ios - 根据用户选择从数据模型中列出和过滤 - SwiftUI
- excel - 如何从 Excel 中的文本字符串中提取特定数字?
- swift - UITableViewCell 内的 UICollectionView 缓慢滚动
- .net-core - 依赖注入 - .NET Core Windows 窗体
- compilation - 用 openmpi-4.0.5 编译的 Quantum esspresso-6.7.0 问题
- react-native - 如何访问从子到父反应原生的状态变量?
- html - 为什么 CSS 变换会影响站点宽度?