如何阻止QnAMaker对话框返回父对话框?

时间:2017-08-30 14:30:43

标签: node.js botframework

尝试了解MS Bot Framework并构建我的第一个机器人。

默认对话框为Prompts.choice。第一个选择转到要求Prompts.text的新对话框。

用户输入文本然后将其传递给我的QnAMaker,QnAMaker查找答案并将其返回。这可以按预期工作。

在回答答案后,我的机器人关闭了QnAMaker对话框,然后返回默认对话框,机器人从头开始。 我不希望这种情况发生。

如何让用户保持在QnAMaker对话框中,以便他们可以不断询问QNAMaker问题,直到完成并想在机器人中做其他事情?

终端输出的屏幕截图。代码如下。谢谢!

enter image description here

    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');
  }
]);

1 个答案:

答案 0 :(得分:0)

我想我从Bot SDK chat reference library

中找出了这样做的原因

摘录:

  

注意:瀑布有一个隐藏的最后一步,如果从最后一步调用提示或对话框,它将自动结束当前对话框。如果您有一堆深的对话框,并希望从堆栈中的最后一个子节点调用session.endDialog()以结束整个堆栈,则此选项非常有用。最后一个孩子的关闭将触发其所有父母移动到这个隐藏的步骤,该步骤将关闭一直向上堆叠。这通常是一种理想的行为,但是如果你想避免它或者在中间的某个地方停止它,你需要在瀑布的末尾添加一个步骤,它既不会做任何事情,也不会调用像session.send()这样的东西。我要向前推进瀑布。

如果有人确认这是问题或者帮助我改进我的代码,那就太好了。