var bot = new builder.UniversalBot(connector, [
function (session, args, next) {
if (!session.userData.name) {
session.beginDialog('profile');
} else {
next();
}
},
function (session, results) {
session.send('Hello %s!', session.userData.name);
}]);bot.dialog('profile', [
function (session) {
builder.Prompts.text(session, 'Hi! What is your name?');
},
function (session, results) {
session.userData.name = results.response;
session.endDialog();
}]);
以上代码取自Microsoft bot框架文档。在这里,我无法理解session.endDialog()的目的。运行此代码后,它会询问用户名并获取输入并以“hello user input”回复。会发生什么,它会一次又一次地循环。 我想在获取用户名后启动qnamaker对话框,它应该继续qnamaker,不应该回到第一个询问用户名的函数。
答案 0 :(得分:0)
session.endDialog()
将结束当前对话框(在您的示例代码中,它将结束配置文件对话框),并将控件返回到调用它的对话框,因此(在您的示例中)控件将返回到默认对话框在发送唤醒字后启动。
您从Microsoft站点获取的示例代码只是为了显示一个基本示例,因此它当然只有少数几个对话框。对于您想要构建的QnA bot,您可能希望在该函数中启动QnA功能/对话框,而不是简单地将名称回显给用户,这可能包括启动另一个对话框,具体取决于您希望如何构建它。