什么';Bot框架(node.js)中endDialog()和endConversion()的区别是什么?
在使用bot框架时,我会混淆什么';Bot框架(node.js)中endDialog()和endConversion()的区别是什么?,node.js,botframework,Node.js,Botframework,在使用bot框架时,我会混淆endDialog()和endConversion() 他们之间有什么区别 如果我不调用它们,就使用send()?约束是什么?在对话框中,可以调用其他对话框。例如 bot.dialog("/", [ function(session, data, next()){ session.send("Hi"); if(session.message.text === "hello"){ // start
endDialog()
和endConversion()
他们之间有什么区别
如果我不调用它们,就使用
send()
?约束是什么?在对话框中,可以调用其他对话框。例如
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
}
])
当用户输入为hello时,输出为
- 嗨
- 在hello对话框中
- “根目录结束”对话框
- 嗨
- “根目录结束”对话框
session.endDialog
结束当前对话框,并恢复父对话框。
session.endConversation
结束会话本身
在技术术语中,当调用对话框时,该对话框将移动到称为dialogStack的堆栈中。当从当前对话框调用另一个对话框时,该新对话框将放置在dialogStack的顶部。此新对话框完成其操作后,将从堆栈中弹出此对话框,并恢复最后一个对话框
调用
session.endConversation
时,对话框堆栈会立即清空(但这是一个我不完全确定的行为)如果我将endDialog()
替换为endConversion()
,在您的示例中,输出是hello对话框中的Hi
-->。没有根对话框的结尾,是真的吗?是的。虽然我还没有测试(现在无法测试),但我只是检查了session.endConversation的源代码,它确实会清除对话框堆栈。因此,不应该有根目录结束对话框
。