Как мне проанализировать вопрос, содержащий escape-последовательности из Microsoft QnA Maker в моем проекте бота?

#c# #visual-studio #botframework #qnamaker

#c# #visual-studio #botframework #qnamaker

Вопрос:

Я тестирую и обучаю нового QnA-бота для своего веб-приложения и хочу распечатать правильный формат ответа, когда он столкнется с escape-последовательностями. Как я могу реализовать такой подход, чтобы бот распознал escape-последовательности, которые я добавил? Эмулятор бота добавляет дополнительный «» в начале » n n’

Я использую эмулятор Bot Framework для sdvk 3 и веб-сайта QnA Maker, мой ответ следующий:

 nn 1. Visit the heroes Portal website.nn 2. Select the create button.nn 3. Click “choose classunder the classes n your heroes section.nn 4. Follow the instructions provided.n If you require further assistance, please email us n at ###@$$$.comn 
  
 using Microsoft.Bot.Builder.CognitiveServices.QnAMaker;
using System;

namespace heroes.ChatBot.Dialogs.QnA
{
    [Serializable]
    [QnAMaker("####", "###",
        "Sorry I could not find an answer to your  question", 0.5, 1, "website" )]
    public class QnAHeroesDialog : QnAMakerDialog
    {

    }
}
  
 1.Visit the heroes Portal website.

2.Select the create button.

3.Click “choose classunder the classes n your heroes section.

4.Follow the instructions provided.n
  If you require further assistance,n
  please follow instruction.
  

Ответ №1:

То, что вы ищете, — это переопределение ответа, предоставленного QnAMaker . Есть несколько примеров, доступных в официальном репозитории Github: https://github.com/Microsoft/BotBuilder-CognitiveServices/blob/master/CSharp/Samples/QnAMaker/QnABotWithOverrides/Dialogs/QnADialogWithOverrides.cs

В нескольких словах, переопределите RespondFromQnAMakerResultAsync , чтобы справиться с этой проблемой «double n»

Это будет выглядеть следующим образом:

 [Serializable]
[QnAMaker("####", "###",
    "Sorry I could not find an answer to your  question", 0.5, 1, "website" )]
public class QnAHeroesDialog : QnAMakerDialog
{
    protected override async Task RespondFromQnAMakerResultAsync(IDialogContext context, IMessageActivity message, QnAMakerResults results)
    {
        if (results.Answers.Count > 0)
        {
            var foundReply = results.Answers.First().Answer;
            var response = $"{foundReply.Replace("nn", "n")}";
            await context.PostAsync(response);
        }
    }
}
  

Мой код может потребовать быстрой настройки Replace , поскольку у меня нет точного формата вашего значения ответа