Организация вашего кода, как показано ниже, должна работать.Я протестировал это с помощью веб-чата и эмулятора с положительными результатами.
По сути, bot.recognizer действует как промежуточное ПО, передавая возвращенное намерение LUIS в бот и сопоставляя его с любыми триггерами, которым назначено одинаковое значение.Для QnA передача связанного распознавателя в диалоговое окно позволяет сопоставить ввод пользователя в базе знаний QnA, а затем вернуть соответствующий ответ.
var bot = new builder.UniversalBot(connector);
bot.set('storage', new builder.MemoryBotStorage());
var luisAppId = process.env.LuisAppId;
var luisAPIKey = process.env.LuisAPIKey;
var luisAPIHostName = process.env.LuisAPIHostName // 'westus.api.cognitive.microsoft.com';
const LuisModelUrl = 'https://' + luisAPIHostName + '/luis/v2.0/apps/' + luisAppId + '?subscription-key=' + luisAPIKey;
var luisRecognizer = new builder.LuisRecognizer(LuisModelUrl);
var qnarecognizer = new cognitiveservices.QnAMakerRecognizer({
knowledgeBaseId: process.env.QnAKnowledgebaseId,
authKey: process.env.QnAAuthKey,
endpointHostName: process.env.QnAEndpointHostName
});
var basicQnAMakerDialog = new cognitiveservices.QnAMakerDialog({
recognizers: [qnarecognizer],
defaultMessage: 'No match! Try changing the query terms!',
qnaThreshold: 0.3
});
bot.recognizer(luisRecognizer);
bot.dialog('/', basicQnAMakerDialog);
bot.dialog('GreetingDialog',[
(session) => {
session.send('You reached the Greeting intent. You said \'%s\'.', session.message.text);
builder.Prompts.text(session, "What is your name?");
},
(session, results) => {
session.userData.name = results.response;
session.send("Glad you could make it, " + session.userData.name);
builder.Prompts.text(session, "Ask me something!");
},
(session, results) => {
session.conversationData.question = results.response;
session.send(session.conversationData.question + " is an interesting topic!")
session.endDialog();
}
]).triggerAction({
matches: 'Greeting'
})
bot.dialog('HelpDialog',
(session) => {
session.send('You reached the Help intent. You said \'%s\'.', session.message.text);
session.endDialog();
}
).triggerAction({
matches: 'Help'
})
Вы должны знать, что SDK v3 будут терять своиподдержка наступит в декабре 2019 года. В то время новые боты v3 не будут доступны через Azure.Я бы порекомендовал вам рассмотреть возможность создания своего бота с использованием более новой v4 SDK .Вы можете прочитать больше об этом в реализации v4 здесь .
Надежда на помощь!