【问题标题】:Dialog changes after user prompt用户提示后对话框更改
【发布时间】:2017-06-04 12:55:23
【问题描述】:

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

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);
}
]);

用户输入用户名后,我的对话框不会继续,而是转到根对话框并打印“我不明白,请重试”(默认消息)

谁能帮我理解我在这里做错了什么?

我的识别器配置如下

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] });

【问题讨论】:

  • 除了 Ezequiel 的回答之外,您可能不应该将识别器插入机器人然后使用 IntentDialog。您在代码中使用 IntentDialog 吗?

标签: node.js botframework azure-language-understanding


【解决方案1】:

我认为正在发生的事情是您的回复正在通过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);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多