首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >快速选择bot框架

快速选择bot框架
EN

Stack Overflow用户
提问于 2018-10-11 18:07:52
回答 1查看 576关注 0票数 2

我有两个问题。

  1. My retryPrompt无法正常工作。用户的输入与LUIS的意图匹配,而不是重新提示问题。

Desire:当用户输入"5“时,将重新提示问题。

实际:当用户输入"5“时,将与LUIS意图匹配。

  • 在确定重新提示问题或启动另一个对话框之前,是否可以验证用户输入的内容?

Desire:如果用户输入"carrot",它会发送一条消息"carrot is it“,随后会再次提示相同的问题。但是,如果用户输入"5",它将再次提示用户回答相同的问题。

请参考下面的代码。

代码语言:javascript
复制
var luisAppId = process.env.LuisAppId;
var luisAPIKey = process.env.LuisAPIKey;
var luisAPIHostName = process.env.LuisAPIHostName || 'southeastasia.api.cognitive.microsoft.com';

const LuisModelUrl = 'https://' + luisAPIHostName + '/luis/v2.0/apps/' + 
luisAppId + '?subscription-key=' + luisAPIKey;

// Create a recognizer that gets intents from LUIS, and add it to the bot
var recognizer = new builder.LuisRecognizer(LuisModelUrl);
bot.recognizer(recognizer);

bot.dialog('pets', [
function (session, args, next) {
    builder.Prompts.choice(session, 'which pet do you prefer?\n1. rabbit?\n2. dog?\n3. cat?\n', ['1', '2', '3'], {
        retryPrompt: "sorry please pick.\n1. rabbit?\n2. dog?\n3. cat?",
        maxRetries: 1
    });
},
function (session, args, next) {
    if (args.response) {
        var choice = args.response.entity;
        switch (choice) {
            case '1':
                session.replaceDialog('rabbit');
                break;
            case '2':
                session.replaceDialog('dog');
                break;
            case '3':
                session.replaceDialog('cat');
                break;
            default: 
                session.send('sorry!!');
                break;
        }
    }
    else {
        session.send("Invalid");
    }
}
]);
EN

回答 1

Stack Overflow用户

发布于 2018-10-17 07:29:16

识别器的.onEnabled方法可用于禁用LUIS识别器:

代码语言:javascript
复制
var recognizer = new builder.LuisRecognizer(LuisModelUrl)
.onEnabled(function (context, callback) {
    var enabled = context.dialogStack().length === 0;
    callback(null, enabled); 
});

您还可以检查dialogData选项的选项,以确定当前文本是否为当前对话框的有效选项:

代码语言:javascript
复制
var recognizer = new builder.LuisRecognizer(LuisModel)
.onEnabled(function (context, callback) {
    var enabled = context.dialogStack().length === 0;
    if(context.dialogData && context.dialogData.options && context.dialogData.options.choices){
        if(!context.dialogData.options.choices.includes(context.message.text)){
            //text is not in current dialog options
        }
    }

    callback(null, enabled); 
});
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52757437

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档