2017-07-06 98 views
0
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

我不明白你的問題。如果你想開始一個新的對話框,使用'session.beginDialog(「dialogName」)'。有關更多信息,請參見[理解對話框](https://docs.microsoft.com/zh-cn/bot-framework/nodejs/bot-builder-nodejs-dialog-overview)。 – nilsw

回答

0

session.endDialog()將結束當前對話框(在您的示例代碼中,它將結束配置文件對話框),並將控件返回到調用它的對話框,所以(在您的示例中)控件將返回到默認對話框,喚醒詞被髮送。

您從微軟網站上獲取的示例代碼只是爲了展示一個基本示例,當然它只是有那麼幾個對話框。對於您想要構建的QnA機器人,您可能希望在該函數中啓動QnA功能/對話框,而不是簡單地將名稱回顯給用戶,這可能包括啓動另一個對話框,具體取決於您想要如何構建它。

相關問題