Вы можете сделать это с помощью подсказки. выбор. Это предоставит пользователю кнопки для каждой опции - пользователь может щелкнуть по ним или ввести ответ.
Итак, если у вас есть диалог QnAMaker определено ...
var recognizer = new cognitiveservices.QnAMakerRecognizer({
knowledgeBaseId: 'set your kbid here',
subscriptionKey: 'set your subscription key here'});
var basicQnAMakerDialog = new cognitiveservices.QnAMakerDialog({
recognizers: [recognizer],
defaultMessage: 'No match! Try changing the query terms!',
qnaThreshold: 0.3
});
bot.dialog('/QnAMakerDialogue', basicQnAMakerDialog);
Вы можете переключиться на это диалоговое окно с помощью replaceDialog, в зависимости от того, что выбрал пользователь ...
function (session, results) {
builder.Prompts.choice(session, "Hi I'm your bot you what are you looking for?", ["Ask a question", "Other cool stuff"], {listStyle: builder.ListStyle.button});
},
function (session, results) {
if(results.response) {
switch (results.response.entity) {
case 'Ask a question':
session.replaceDialog('/QnAMakerDialogue');
case 'Other cool stuff':
session.replaceDialog('/CoolStuffDialog');
default:
session.send("Something went horribly wrong");
return;
}
}
}
Если ваш пользователь ответил, что хочет задать вопрос, вам нужно будет запросить вопрос. Для этого я иногда использовал диалог оболочки QnAPromptDialogue ...
function (session,args,next) {
//if the user just entered 'ask question' or similar, prompt for the actual question
var regex = new RegExp("^ask .*");
if(regex.test(session.message.text)) {
builder.Prompts.text(session, "Go ahead, what is your question?");
} else {
next();
}
},
function (session, results) {
session.replaceDialog('/QnAMakerDialogue');
}
Может не сработать для всех, но в том числе, если это будет полезно.
person
dividor
schedule
29.12.2017