Ошибка «не удалось отправить повтор» в веб-чате для вопросов, которых нет в базе знаний - PullRequest
0 голосов
/ 17 июня 2019

Я создал бота с Azure в C #. Этот бот работает нормально на вопрос, который присутствует в моей базе знаний. Но когда я пытаюсь ответить на другой вопрос, он выдает ошибку couldn't send retry ниже этого вопроса и отвечает на этот вопрос как Sorry, my bot code is having an issue. Он должен ответить No match found вместо Sorry, my bot code is having an issue. Еще одна проблема заключается в том, что этот бот иногда дает случайный ответ в форме KB для некоторых вопросов, которых нет в килобайтах вместо No answer found in KB.

В канале веб-чата отображается следующая проблема - There was an error sending this message to your bot: HTTP status code InternalServerError. Любая помощь будет оценена.

1 Ответ

0 голосов
/ 17 июня 2019

Прежде всего, относительно этого учебника :

В этой статье используется Bot Framework v3 SDK.Пожалуйста, ознакомьтесь с этой статьей Bot Framework, если вас интересует версия этой информации для Bot Framework v4 SDK.

Она старая и использует V3 из Bot Framework SDK.Я настоятельно рекомендую создавать любые новые боты в V4.Используйте Добавить учебник по пониманию естественного языка .


InternalServerError указывает, что где-то есть проблема с вашим бот-кодом.

Вот несколько вещей, которые выможет попробовать, что, вероятно, вызывает проблему:

Написать код, который имеет дело с Нет ответа

Официальный Пример QnAMaker делает это здесь :

// Query QnAMaker for Answer
var response = await qnaMaker.GetAnswersAsync(turnContext);
// If we have an answer, send it to the user
if (response != null && response.Length > 0)
{
    await turnContext.SendActivityAsync(MessageFactory.Text(response[0].Answer), cancellationToken);
}
// If we don't have an answer, tell that to the user
else
{
    await turnContext.SendActivityAsync(MessageFactory.Text("No QnA Maker answers were found."), cancellationToken);
}

Убедитесь, что у вашей службы QnAMaker есть DefaultAnswer

Вероятно, это проблема только в том случае, если вы настроили своего бота на получение ответа по умолчанию от службы QnAMaker.

В Azure Portal > Resource Group > QnA App Service > Configuration (примечание: это НЕ служба приложения вашего бота; она предназначена только для QnAMaker), убедитесь, что установлено DefaultAnswer:

enter image description here

Отладка

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

Visual Studio / C # :

  1. В Visual Studio запустите своего бота, нажав F5 или нажав:

enter image description here

Откройте свой бот в эмуляторе

В Visual Studio перейдите на Debug > Windows > Exception Settings:

enter image description here

В окне «Настройки исключений» установите флажок «Общие исключения во время выполнения»

enter image description here

В эмуляторе сделайте то, что заставит вашего бота сломаться.Бот должен автоматически остановиться при появлении ошибки.Здесь я заставил один:

enter image description here

Как вы можете видеть, он говорит System.IndexOutOfRangeException: 'Index was outside the bounds of the array.' Это означает, что мой массив, response не имеет 0-го элемента, потому что ответы не были возвращены.

Другие проблемы будут отображать другие ошибки.Обычно вы можете довольно точно определить проблемы, прочитав подробности об ошибках и выполнив поиск по сети для кода ошибки, если вам нужны дополнительные сведения.

VS Code

  1. В VS Code запустите своего бота, нажав F5 и выбрав «Node.js» (для ботов Node / TypeScript) или .NET Core (для ботов C #):

enter image description here

Откройте своего бота в эмуляторе

В VS Code откройте меню «Отладка»:

enter image description here

В разделе «BREAKPOINTS» установите флажок «Все исключения» (Примечание: важно запустить вашего бота, прежде чем ставить этот флажок, потому что есть нормальные исключения, возникающие при запуске бота):

enter image description here

В эмуляторе сделайте то, что заставит вашего бота сломаться.Бот должен автоматически остановиться при появлении ошибки.Здесь я заставил один:

enter image description here

Как вы можете видеть, он говорит Exception has occurred: TypeError TypeError: Cannot read property 'answer' of undefined Это означает, что qnaResults[0] не определено, или не существует, что указывает на то, что ответы не были возвращены.

Другие проблемы будут отображать другие ошибки.Обычно вы можете довольно точно определить проблемы, прочитав подробности об ошибках и выполнив поиск по сети для кода ошибки, если вам нужны дополнительные сведения.

...