Использование Text Translator для создания многоязычного бота QnA - PullRequest
0 голосов
/ 16 октября 2019

У меня есть бот QnA, для которого я пытаюсь добавить двуязычную поддержку. Моя цель - использовать когнитивную службу «Переводчик текста» в Azure, чтобы определить язык пользователя на основе его первоначального контакта, перевести его на английский для поиска в базе знаний QnA, а затем перевести ответ обратно на язык пользователя.

Бот QnA размещается в Azure как веб-служба. У меня есть знания начального уровня в программировании, и некоторая поддержка, которую я нашел в сети, идет мне на ум.

Как лучше всего интегрировать переводчик текста с ботом QnA?

1 Ответ

1 голос
/ 17 октября 2019

Ваш бот 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

Я не упомянулэто в моем ответе, так как я не успел проверить и в силу своего экспериментального статуса.

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