Есть несколько общих способов сделать это, но в конечном итоге вы, как разработчик бота, должны решить, как его структурировать.
Общий обзор представлен в документации здесь, но если вам нужен пример, более ориентированный на код, это сообщение в блоге должно помочь вам -
Управление диалогом с QnA, Luis и Scorables а>
В этом примере LuisDialog действует как своего рода контроллер сообщений, который направляет пользователя к определенному диалогу на основе намерения. Это также можно использовать для направления пользователя к диалоговому окну QnA ->
[Serializable]
[LuisModel("YourLuisAppID", "YourLuisSubscriptionKey")]
public class LuisDialog : LuisDialog<object>
{
// methods to handle LUIS intents
[LuisIntent("")]
[LuisIntent("None")]
public async Task None(IDialogContext context, LuisResult result)
{
// You can forward to QnA Dialog, and let Qna Maker handle the user's
query if no intent is found
await context.Forward(new QnaDialog(), ResumeAfterQnaDialog,
context.Activity, CancellationToken.None);
}
[LuisIntent("Some-Intent-Like-Get-Weather")]
public async Task GetWeather(IDialogContext context, LuisResult result)
{
....
// some tasks, forward to other dialog, etc
}
}
Это один из самых популярных способов сделать это. В этой настройке, если LUIS не обнаружит намерения, он направит запрос пользователя в диалоговое окно QnA для службы Qna (которую вы обучаете), чтобы ответить.
В качестве альтернативы вы можете создать специально «Намерение вопроса» и попытаться переслать его в QnA таким образом, если намерением пользователя было задать вопрос. Однако это сложнее, поскольку этот метод требует, чтобы вы вручную создавали собственный код для управления «оценками» ответов.
Надеюсь, этого было достаточно, чтобы помочь вам получить то, что вам нужно!
РЕДАКТИРОВАТЬ - извинения, исправлена первая ссылка.
Кроме того, я просто вставлю 3 распространенных сценария, перечисленных в документации, как способы использования LUIS + QnA:
1) Вызовите QnA Maker и LUIS одновременно и ответьте пользователю, используя информацию из первого, которая возвращает оценку определенного порога.
2) Сначала вызовите LUIS, и если ни одно намерение не соответствует определенному пороговому баллу, т. Е. Инициировано намерение «Нет», затем вызовите QnA Maker. В качестве альтернативы создайте намерение LUIS для QnA Maker, снабдив вашу модель LUIS примерами вопросов QnA, которые отображаются в «QnAIntent».
3) Сначала вызовите QnA Maker, и если ни один ответ не соответствует определенному пороговому баллу, затем вызовите LUIS.
person
Matthew S
schedule
14.12.2017