Ваш бот QnA - это просто бот, который взаимодействует с API QnA Maker.
Таким образом, в вашем случае более простой способ обработки - это перевод полученного сообщения непосредственно перед запросом QnA Maker, а затем обратное действие. переводите его ответы, как только вы его получили.
Если вы посмотрите образцы Bot Builder для QnA Maker здесь , вы можете увидеть запрос, который использует Microsoft.Bot.Builder.AI.QnA
:
protected override async Task OnMessageActivityAsync(ITurnContext<IMessageActivity> turnContext, CancellationToken cancellationToken)
{
var httpClient = _httpClientFactory.CreateClient();
var qnaMaker = new QnAMaker(new QnAMakerEndpoint
{
KnowledgeBaseId = _configuration["QnAKnowledgebaseId"],
EndpointKey = _configuration["QnAEndpointKey"],
Host = _configuration["QnAEndpointHostName"]
},
null,
httpClient);
_logger.LogInformation("Calling QnA Maker");
// The actual call to the QnA Maker service.
var response = await qnaMaker.GetAnswersAsync(turnContext);
if (response != null && response.Length > 0)
{
await turnContext.SendActivityAsync(MessageFactory.Text(response[0].Answer), cancellationToken);
}
else
{
await turnContext.SendActivityAsync(MessageFactory.Text("No QnA Maker answers were found."), cancellationToken);
}
}
Как видите, вызов await qnaMaker.GetAnswersAsync(turnContext)
напрямую использует turnContext
, а не сам текст.
Вы должны изменить текст Activity перед выполнением этого вызова. Здесь вы можете использовать Translator Text API от Microsoft, чтобы сделать перевод. Он может автоматически определять язык ввода (но если вы уже знаете его, лучше указать это значение).
Затем вам необходимо перевести response[0].Answer
в ответе.
Ссылка наИнтерфейс API переводчика здесь: https://docs.microsoft.com/en-us/azure/cognitive-services/translator/reference/v3-0-translate
Примечание: есть библиотека, которая в настоящее время является экспериментальной в образцах Bot Builder относительно перевода: https://github.com/microsoft/BotBuilder-Samples/tree/master/experimental/multilingual-luis/csharp_dotnetcore/Libraries/Microsoft.Bot.Builder.AI.Translation
Я не упомянулэто в моем ответе, так как я не успел проверить и в силу своего экспериментального статуса.