QnAmaker меняет ответ по умолчанию, когда QnAmaker не имеет никакого ответа - PullRequest
0 голосов
/ 09 мая 2018

Как изменить ответ по умолчанию, если QnAmaker не имеет ответа для отображения диалогового окна с подсказкой.

Например:

Пользователь1: Привет
Бот: Привет! !!
Пользователь1: Вы продаете автомобили?
Бот: Подходящего совпадения не найдено!

Вместо Подходящего совпадения не найдено , бот должен предложить список доступных услуг.

Кроме того, каждый раз, когда совпадение не найдено, бот должен снова предложить список доступных услуг.

Как этого достичь?

Ответы [ 2 ]

0 голосов
/ 10 мая 2018

Поскольку существует несколько разных способов использования QnA maker вместе с бот-фреймворком, есть довольно много разных предложений по проблеме, которая у вас есть в данный момент, но не так много правильных рекомендаций от Microsoft в настоящее время. (По крайней мере, я не нашел)

Я сталкивался с этой проблемой, перечисленной в репозитории git QnA makers: найден здесь. Есть несколько разных предложений, поэтому я перечислю их ниже от минимального до максимального усилия.

Вариант 1: [Предполагается, что вы создаете базовый класс диалога, который соединяется с создателем QnA]

public BasicQnAMakerDialog() : base(new QnAMakerService(new QnAMakerAttribute(ConfigurationManager.AppSettings["QnASubscriptionKey"], ConfigurationManager.AppSettings["QnAKnowledgebaseId"], "No good match in FAQ")))

Вариант 2: [Просто найдите конкретную строку, которая возвращается по умолчанию, и переопределите ее]

protected override async Task RespondFromQnAMakerResultAsync(IDialogContext context, IMessageActivity message, QnAMakerResults result)
{
    var answer = result.Answers.First().Answer;
    Activity reply = ((Activity)context.Activity).CreateReply();
    if (reply.Text.equals("Not Match Found!))
         reply.Text = "No good match in FAQ";
    await context.PostAsync(reply);
}   

Были случаи, когда QnAMaker все еще находился в предварительном просмотре, что опция 1 не будет работать должным образом. Вариант 2, на мой взгляд, не так удобен, но это неплохая работа.

Как сказал Эрик в своем ответе, в их git-репо существует активный запрос на извлечение информации, ожидающий объединения с этой проблемой. Так что со временем это будет проще. До тех пор, пока эти два варианта помогут.

0 голосов
/ 10 мая 2018

QnAMakerAttribute имеет параметр defaultMessage, позволяющий настроить текст ответа «нет совпадения»: https://github.com/Microsoft/BotBuilder-CognitiveServices/blob/7866f5a1bc970bdd0be341b9ba24c74067edf57c/CSharp/Library/QnAMaker/QnAMaker/QnAMakerService/QnAMakerAttribute.cs

public class BasicQnAMakerDialog : QnAMakerDialog 
{ 
  public BasicQnAMakerDialog() : base(
         new QnAMakerService(
                new QnAMakerAttribute(
                      Utils.GetAppSetting("QnASubscriptionKey"),
                      Utils.GetAppSetting("QnAKnowledgebaseId"),
                      "**List of services: one, two three**",
                      0.30,
                      8))) {} 
}

Существует также запрос на получение, ожидающий слияния, который позволит переопределить отправку сообщения по умолчанию: https://github.com/Microsoft/BotBuilder-CognitiveServices/pull/87 До тех пор, кажется, ваш единственный вариант - дублировать QnAMakerDialog в вашем собственном кодовая база: источник QnAMakerDialog

...