0

我们有一个聊天机器人和一个按钮,可以在英语和法语之间更改机器人的语言。我还有一个包含英语和法语问题的 QnAmaker。有没有办法让我们只在机器人处于英语模式时处理英语问题?法语也是如此。

Note: my bot react like this:
    user: what is teww?
                       Do you mean this, select one of question below: BOT
                         1. French question
                         2. English question
                         3  French question

我想防止这种情况发生,我正在考虑为法语创建两个 qnamaker 一个用于英语。但是我不知道如何处理 azure bot 服务中的这种 qna 更改?有没有办法解决它?

平台:Azure Bot Service Node.JS Microsoft QnA Maker

4

1 回答 1

3

是的,您可以为您的英语和法语问题分别创建 2 个 QnAMaker 知识库。您可以利用文本分析 API检测机器人中间件中的用户输入语言,该recevie中间件显示在使用分析确定语言环境中

请参考以下代码片段:

var recognizer1 = new cognitiveservices.QnAMakerRecognizer({
    knowledgeBaseId: <knowledgeBaseId_1>,
    subscriptionKey: <subscriptionKey_1>,
    top: 4
});

var basicQnAMakerDialog = new cognitiveservices.QnAMakerDialog({
    recognizers: [recognizer1],
    qnaThreshold: 0.3,
});
var recognizer2 = new cognitiveservices.QnAMakerRecognizer({
    knowledgeBaseId: <knowledgeBaseId_2>,
    subscriptionKey: <subscriptionKey_2>,
    top: 4
});

var basicQnAMakerDialog2 = new cognitiveservices.QnAMakerDialog({
    recognizers: [recognizer2],
    qnaThreshold: 0.3,
});

bot.dialog('en', basicQnAMakerDialog);
bot.dialog('zh', basicQnAMakerDialog2);

bot.dialog('/', [(session, args) => {
    switch (session.preferredLocale()) {
        case 'zh':
            session.replaceDialog('zh', args)
            break;
        case 'en-US':
        default:
            session.replaceDialog('en', args)
            break;
    }
}])

bot.use({
    receive: function (event, next) {
        if (event.text) {
            var options = {
                method: 'POST',
                url: 'https://westus2.api.cognitive.microsoft.com/text/analytics/v2.0/languages?numberOfLanguagesToDetect=1',
                body: {
                    documents: [{
                        id: 'message',
                        text: event.text
                    }]
                },
                json: true,
                headers: {
                    'Ocp-Apim-Subscription-Key': '230f82f08c014accbd067ddc2c0ea98f'
                }
            };
            request(options, function (error, response, body) {
                if (!error && body) {
                    if (body.documents && body.documents.length > 0) {
                        var languages = body.documents[0].detectedLanguages;
                        if (languages && languages.length > 0) {
                            event.textLocale = languages[0].iso6391Name;
                        }
                    }
                }
                next();
            });
        } else {
            next();
        }
    }
});
于 2018-04-09T02:51:13.600 回答