Bot-Framework(node.js)中的endDialog()和endConversion()有什么区别?

时间:2018-08-15 02:56:23

标签: node.js botframework

使用机器人框架时,我对endDialog()endConversion()感到困惑。

它们之间有什么区别?

enter image description here

enter image description here

如果我不调用它们,仅使用send()?什么约束?

1 个答案:

答案 0 :(得分:1)

在对话框中,您可以调用其他对话框。例如。

   bot.dialog("/", [
    function(session, data, next()){
        session.send("Hi");
        if(session.message.text === "hello"){
            // starts a new dialog
            session.beginDialog("helloDialog");
            next();
        } else {
            next();
        }
    }, function(sesion, data){
        session.send("end of root dialog");
    }
]);

bot.dialog("helloDialog",[
    function(session){
        session.send("inside the hello dialog");
        session.endDialog(); // explicitly ends the dialog
    }
])

当用户输入为你好时,输出为

  • 在“您好”对话框中
  • 根对话框结束

当用户输入为其他内容时,输出为

  • 根对话框结束

session.endDialog结束当前对话框,并继续父对话框。 session.endConversation结束对话本身。

用技术术语来说,当调用一个对话框时,该对话框将移入名为dialogStack的堆栈中。当从当前对话框中调用另一个对话框时,该新对话框将放在dialogStack的顶部。当此新对话框完成其操作时,将从堆栈中弹出该对话框,并继续显示最后一个对话框。

调用session.endConversation时,对话框堆栈立即被清空(尽管这种行为不能完全确定)