尝试了解MS Bot Framework并构建我的第一个机器人。
默认对话框为Prompts.choice
。第一个选择转到要求Prompts.text
的新对话框。
用户输入文本然后将其传递给我的QnAMaker,QnAMaker查找答案并将其返回。这可以按预期工作。
在回答答案后,我的机器人关闭了QnAMaker对话框,然后返回默认对话框,机器人从头开始。 我不希望这种情况发生。
如何让用户保持在QnAMaker对话框中,以便他们可以不断询问QNAMaker问题,直到完成并想在机器人中做其他事情?
终端输出的屏幕截图。代码如下。谢谢!
bot.dialog('rentalHelp', [
function(session) {
builder.Prompts.text(session, "In which state do you live? (please spell out)");
},
function(session, results) {
// start the QnA bot dialog
session.beginDialog('QnAMaker');
}
]);
答案 0 :(得分:0)
我想我从Bot SDK chat reference library
中找出了这样做的原因摘录:
注意:瀑布有一个隐藏的最后一步,如果从最后一步调用提示或对话框,它将自动结束当前对话框。如果您有一堆深的对话框,并希望从堆栈中的最后一个子节点调用session.endDialog()以结束整个堆栈,则此选项非常有用。最后一个孩子的关闭将触发其所有父母移动到这个隐藏的步骤,该步骤将关闭一直向上堆叠。这通常是一种理想的行为,但是如果你想避免它或者在中间的某个地方停止它,你需要在瀑布的末尾添加一个步骤,它既不会做任何事情,也不会调用像session.send()这样的东西。我要向前推进瀑布。
如果有人确认这是问题或者帮助我改进我的代码,那就太好了。