【问题标题】:How to stop QnAMaker dialog from returning to parent dialog?如何阻止 QnAMaker 对话框返回父对话框?
【发布时间】:2018-11-22 06:01:57
【问题描述】:

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

默认对话框是Prompts.choice。第一选择传递到要求Prompts.text 的新对话框。

用户输入文本,然后将其传递给我的 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');
  }
]);

【问题讨论】:

    标签: node.js botframework


    【解决方案1】:

    我想我从Bot SDK chat reference library 中找到了它这样做的原因

    摘录:

    注意:瀑布有一个隐藏的最后一步,如果您从最后一步调用提示或对话框,它将自动结束当前对话框。这在您有大量对话框并希望从堆栈上的最后一个子级调用 session.endDialog() 以结束整个堆栈的情况下很有用。最后一个孩子的关闭将触发其所有父母移动到这个隐藏的步骤,这将把关闭一直层叠到堆栈上。这通常是一种理想的行为,但如果您想避免它或在中间某处停止它,您需要在瀑布的末尾添加一个步骤,该步骤要么什么都不做,要么调用类似 session.send() 的东西,这不是t要去推进瀑布。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-01-13
      • 2016-02-09
      • 2016-12-06
      • 1970-01-01
      • 1970-01-01
      • 2011-01-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多