LUIS 应用中后续问题的正确方法

Correct approach with follow-up questions in a LUIS app

我正在使用 botframework 和 NLP 服务 LUIS 开发聊天机器人。

如果你想让app/chatbot根据前一个问题的上下文回答后续问题,谁能在这里解释一下正确的方法是什么?

让我举个例子:

[me]: I want to buy a Ford car
[bot]: Here are the list of different cars we have....
[me]: what about a red one?
[bot]: sure! I added the red color to your car
[me]: I also want bluetooth
.....

如您所见,如果您不了解对话的背景,有关颜色和蓝牙或汽车可能具有的任何其他品质的问题就毫无意义。

这应该在 botframework 上使用瀑布方法完成,还是应该使用 LUIS 语句完成?我们怎样才能做到这一点?我相信它必须通过 LUIS 完成,但我不确定正确的方法。

编辑澄清:

我知道这可以按照 here 所述实现 bindingActions 来完成,但这意味着我必须为每个不同的用例编写代码(在这种情况下,我必须为颜色编写一个 bindAction,一个为 #门,一个用于电机类型等),我想要的是机器人来回答自发的问题。

下面的答案让我开始考虑实施瀑布式对话,并在对话的第二步将问题路由到具有不同答案的 QnAmaker 服务。

您使用瀑布是正确的 - 我假设您正在使用 Node.js SDK 进行开发,在这种情况下,请查看文档 here 以了解如何实施瀑布以管理你的对话。

如果您使用的是 .NET SDK,则可以使用 form flow

您的 LUIS 服务应该 return 一个 'intent' 用户希望为您的用例购买汽车,之后,您需要通过机器人中的对话引导对话流.对于 'follow up' 个问题,您当前的对话需要解决,或者您可以实施全局消息处理程序。

article 展示了 .NET 示例,但您可以对 node.js 机器人应用相同的逻辑。在那篇文章中,LUIS 用于根据 returned 意图将用户引导至不同的对话框。

希望对您有所帮助,祝您好运!