#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 class” under 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 class” under 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
, поскольку у меня нет точного формата вашего значения ответа