what can do for you? => User Bot: Which city? -6ren">
gpt4 book ai didi

node.js - 如何在Chatbot中实现 "Back"对话

转载 作者:太空宇宙 更新时间:2023-11-04 02:11:26 25 4
gpt4 key购买 nike

我希望在 MS botframework 中实现以下场景对话

Bot: =>  what can do for you?            => User
Bot: <= I want to rent a house <= User
Bot: => Which city? => User
Bot: <= London <= User
Bot: => How many bedrooms => User
Bot: <= Ops, I want a home in New York <= User #User wish to change the topic here..

在 MS botframework 中,如何使用 waterfall 对话框来实现上述故事?有什么建议吗?

最佳答案

我认为通过合理的努力不可能用 waterfall 方法来实现它。在简单的情况下,您可以尝试分析响应,在您的情况下,它是多个卧室,如果它不是数字,您可以检查另一个请求的响应。这里的问题是,您应该对所有回复执行此操作,而对于开放文本回复,将很难区分合法答案或主题更改。

因此,您应该使用意图方法来实现它。

首先,您需要一个意图检测器,您可以使用 Luis,因为它与机器人框架高度集成,或者实现您自己的意图检测器。

在您的情况下,此检测器应该检测意图 - I want to rent a house (汽车等)。

var intents = new builder.IntentDialog({ recognizers: [luis] });

参见https://docs.botframework.com/en-us/node/builder/chat/IntentDialog这些代码示例适用于 Node.Js,但相同的方法也适用于 .Net。

然后,对于每个意图,您应该注册一个适当的操作来启动获取所有必要数据的 waterfall 对话框。

bot.beginDialogAction("RentHouseAction", RentHouseDialog.name+":/", { matches: "RentHouseAction"});

其中 RentHouseAction 是您在 Luis 中定义的操作RentHouseDialog 是一个驻留在库中的 waterfall 对话框。

bot.library(RentHouseDialog);

请注意,当 RentHouseDialog 对话框完成时,它将返回到前一个对话框停止的位置。所以,它再次询问 - How many bedrooms 。为了防止这种行为,您应该检测到您之前的对话尚未完成(您可以使用收集答案的状态)并调用 session.replaceDialog('<>'); .

希望对你有帮助。

关于node.js - 如何在Chatbot中实现 "Back"对话,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41908795/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com