如何结束对话框并启动另一个对话框?

时间:2017-07-06 19:33:51

标签: node.js botframework

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,不应该回到第一个询问用户名的函数。

1 个答案:

答案 0 :(得分:0)

session.endDialog()将结束当前对话框(在您的示例代码中,它将结束配置文件对话框),并将控件返回到调用它的对话框,因此(在您的示例中)控件将返回到默认对话框在发送唤醒字后启动。

您从Microsoft站点获取的示例代码只是为了显示一个基本示例,因此它当然只有少数几个对话框。对于您想要构建的QnA bot,您可能希望在该函数中启动QnA功能/对话框,而不是简单地将名称回显给用户,这可能包括启动另一个对话框,具体取决于您希望如何构建它。