用户提示后对话框发生变化

Dialog changes after user prompt

我有一个如下对话框来从用户那里获取用户名和密码

bot.dialog('/getUsernamePassword', [
function (session) {
    builder.Prompts.text(session, 'Please enter your username');
},
function (session, results) {
    session.userData.name = results.response;
    builder.Prompts.text(session, 'Please enter your password');
},
function (session, results) {
    session.userData.password = results.response;
    session.endDialogWithResult(results);
}
]);

用户输入用户名后,我的对话框不会继续,而是转到根对话框并打印 "I didn't understand please try again"(默认消息)

任何人都可以帮助我了解我在这里做错了什么吗?

我的识别器配置如下

var model = 'https://westus.api.cognitive.microsoft.com/luis/..;
var recognizer = new builder.LuisRecognizer(model);
bot.recognizer(recognizer);
// Add regular expression recognizer to bot
var helpRecognizer = new builder.RegExpRecognizer('HelpIntent', /^(help|options)/i);
var cancelRecognizer = new builder.RegExpRecognizer( "CancelIntent", /^(cancel|nevermind)/i);
bot.recognizer(helpRecognizer);
bot.recognizer(cancelRecognizer);
var intents = new builder.IntentDialog({ recognizers: [helpRecognizer,cancelRecognizer,recognizer] });

我认为正在发生的事情是您的回复正在经历 LUIS

为了避免这种情况,请将 LuisRecognizer 的定义更新为以下内容:

var model = 'https://westus.api.cognitive.microsoft.com/luis/..;
var recognizer = new builder.LuisRecognizer(model).onEnabled((context, callback) => {
    var enabled = context.dialogStack().length === 0;
    callback(null, enabled);
});
bot.recognizer(recognizer);