如何在不触发 Microsoft Bot Framework 中的新意图的情况下使用 Prompts.text
How to use Prompts.text without triggering new intent in Microsoft Bot Framework
我有多个由 triggerAction
触发的对话框。我使用 LUIS trigger/match 特定对话的话语。
每个对话框有两个步骤(功能):
- 如果实体是有效的查询数据库并结束对话,否则使用
Prompts.text()
提示用户输入缺少的实体之一并继续下一步
- 设置对话状态并使用
next()
* 从步骤 1 开始重复对话
我的问题是,对于某些提示输入(即实体值),LUIS 会触发新的不相关对话框。在这些情况下,对话堆栈会丢失(因为我使用 triggerAction
)并且对话流会中断。
如何确保缺少实体的提示不会触发新的对话框?我的对话流程有问题吗?
对于每个意图,我已经有很多经过训练的话语。我猜我的 LUIS 模型 "loose" 足以将多个单词实体(在提示后输入)与(简短的)意图话语相匹配。
* 来自 docs:当机器人在没有结束对话的情况下到达瀑布的尽头时,来自用户的下一条消息将在瀑布的第一步重新启动该对话。
您可以使用 LuisRecognizer.onEnabled()
在 dialogStack 中,甚至在对话中禁用 LUIS 调用。这将解决当您处于提示中间时识别意图的问题。
这是我在使用RegExpRecognizer
(.onEnabled()
继承自IntentRecognizer
)时写的关于实现该方法的example。
这是我写的一个 的 Stack Overflow 问题。
我有多个由 triggerAction
触发的对话框。我使用 LUIS trigger/match 特定对话的话语。
每个对话框有两个步骤(功能):
- 如果实体是有效的查询数据库并结束对话,否则使用
Prompts.text()
提示用户输入缺少的实体之一并继续下一步 - 设置对话状态并使用
next()
* 从步骤 1 开始重复对话
我的问题是,对于某些提示输入(即实体值),LUIS 会触发新的不相关对话框。在这些情况下,对话堆栈会丢失(因为我使用 triggerAction
)并且对话流会中断。
如何确保缺少实体的提示不会触发新的对话框?我的对话流程有问题吗?
对于每个意图,我已经有很多经过训练的话语。我猜我的 LUIS 模型 "loose" 足以将多个单词实体(在提示后输入)与(简短的)意图话语相匹配。
* 来自 docs:当机器人在没有结束对话的情况下到达瀑布的尽头时,来自用户的下一条消息将在瀑布的第一步重新启动该对话。
您可以使用 LuisRecognizer.onEnabled()
在 dialogStack 中,甚至在对话中禁用 LUIS 调用。这将解决当您处于提示中间时识别意图的问题。
这是我在使用RegExpRecognizer
(.onEnabled()
继承自IntentRecognizer
)时写的关于实现该方法的example。
这是我写的一个