Общие сведения об устранении неполадок для ботов azure ai Служба Bot
ОБЛАСТЬ ПРИМЕНЕНИЯ: ПАКЕТ SDK версии 4
Ответы на эти часто задаваемые вопросы помогут вам устранить распространенные проблемы, связанные с разработкой или эксплуатацией ботов.
Как можно устранить неполадки с ботом?
- Выполните отладку исходного кода бота в Visual Studio Code или Visual Studio.
- Протестируйте бота с помощью эмулятора Bot Framework перед развертыванием в облаке.
- Разверните бот на облачной платформе размещения, например Azure, а затем протестируйте подключение к боту с помощью встроенного элемента управления веб-чата на панели мониторинга бота в портал Azure. При возникновении проблем с ботом после его развертывания в Azure рекомендуетм обратиться к записи блога Understanding Azure troubleshooting and support (Общие сведения об устранении неполадок и поддержке в Azure).
- Исключите аутентификацию как возможную проблему.
- Протестируйте работу бота в Web Chat, Teams или любом другом канале, который вы будете использовать с этим ботом. Это поможет проверить полное взаимодействие с пользователем.
- Рассмотрите возможность тестирования бота на каналах с дополнительными требованиями к проверке подлинности, такими как Direct Line или Веб-чат.
- Воспользуйтесь инструкциями по отладке бота и прочитайте другие статьи об отладке в этом разделе.
Как устранить неполадки, связанные с проверкой подлинности?
Дополнительные сведения об устранении неполадок бота, связанных с аутентификацией, см. в статье Устранение неполадок проверки подлинности Bot Framework.
Разделы справки проверить сетевое подключение между ботами и каналом?
Вы можете использовать IP-адреса, созданные приведенными ниже инструкциями, чтобы проверить, есть ли какое-либо правило, блокирующее подключение с этими адресами. См. раздел "Проверка трассировок брандмауэра" для неудачных подключений.
Тестирование подключения от бота к каналу
В браузере перейдите на портал Azure.
Выберите бот Служба приложений, подключение которого требуется проверить.
В левой области в разделе "Средства разработки" выберите "Дополнительные инструменты".
В правой области нажмите кнопку "Перейти". Отображается страница сведений Kudu.
В верхней строке меню выберите консоль отладки. Затем в раскрывающемся меню выберите CMD. Откроется консоль веб-приложения бота Kudu. Дополнительные сведения см. в разделе Kudu.
Запустите
nslookup directline.botframework.com
и проверьте, работает ли разрешение DNS. Обратите внимание, чтоnslookup
(поиск сервера имен) — это средство командной строки администрирования сети для запроса системы доменных имен (DNS), чтобы получить доменное имя или сопоставление IP-адресов или другие записи DNS. Если разрешение DNS работает, ответ на эту команду будет содержать соответствующие сведения.Средство поиска IP-адресов WHOIS полезно для получения сведений о IP-адресах.
Запустите
curl -I directline.botframework.com
. (Параметр-I
используется для получения ответа, содержащего только заголовок.) Дважды убедитесь, что возвращается состояние HTTP 301, чтобы проверить наличие подключения.
Тестирование подключения из канала к боту
Так как curl не имеет доступа к рабочему сайту и directline.botframework.com
находится в общедоступном Интернете, необходимо использовать curl в режиме моделирования. Выполните действия, приведенные ниже за пределами виртуальной частной сети ( виртуальной сети), например с помощью хот-спота мобильного телефона. См. также сведения о том, что такое Azure виртуальная сеть?.
Запустите
nslookup ivr-sr-bot.botapps.amat.com
. Разрешение DNS работает, если ответ на эту команду содержит соответствующие сведения.Запустите
curl -I https://ivr-sr-bot.botapps.amat.com/api/messages
и проверьте, возвращается ли соответствующий код состояния HTTP (например, метод 405 не разрешен). Метод, указанный в запросе, не допускается для ресурса, определяемого указанным URI. Это просто способ проверить наличие подключения.Если ответ от бота не получен, запишите IP-адрес клиента.
Проверка трассировок брандмауэра на неудачных подключениях
Используйте IP-адреса из nslookup ivr-sr-bot.botapps.amat.com
и nslookup directline.botframework.com
проверьте, есть ли правило, блокирующее подключение с этими адресами в любом направлении.
Я использую пакет SDK Bot Framework для .NET. Как можно устранить неполадки с ботом?
Поиск исключений
В Visual Studio 2019 щелкните Отладка>Windows>Параметры исключений. В окне Параметры исключений установите флажок Break When Thrown (Прерывать при возникновении) рядом с полем Исключения среды CLR. При наличии возникших или необработанных исключений в окне выходных данных могут отображаться результаты диагностики.
Посмотрите на стек вызовов
В Visual Studio можно выбрать, выполняется ли отладка только my Code или нет. Изучение полного стека вызовов может обеспечить более подробные сведения о любых проблемах.
Убедитесь, что все методы диалогов заканчиваются планом для обработки следующего сообщения
Все шаги диалога должны передавать управление следующему шагу каскада или завершать текущий диалог для выхода из стека. Если шаг не правильно обработан, беседа не будет продолжаться, как вы ожидаете. Прочитайте статью о концепциях диалогов, чтобы лучше изучить эту тему.
Почему возникает ошибка с кодом состояния HTTP 429 "Слишком много запросов"?
Сообщение об ошибке с кодом состояния HTTP 429 указывает, что в течение заданного промежутка времени было отправлено слишком много запросов. Текст ответа должен содержать описание проблемы. В нем также может указываться минимальный обязательный интервал между запросами.
Почему сообщения моего бота не попадают к пользователю?
Действие сообщения, созданное в ответе, должно быть правильно устранено, в противном случае оно не будет поступать в его предполагаемое назначение. В большинстве случаев вам не нужно обрабатывать это явно; Пакет SDK отвечает за обращение к действиям сообщения.
Чтобы правильно решить действие, добавьте соответствующие сведения об идентификаторе беседы, а также сведения о отправителе. В большинстве случаев действие сообщения отправляется в ответ на поступившее сообщение. Это означает, что все данные для направления можно получить из входящего действия.
Изучив трассировки или журналы аудита, можно убедиться в правильности направления сообщений. Если что-то работает неправильно, создайте в боте точку останова и проверьте, где для сообщения задаются идентификаторы.
Как выполнять фоновые задачи в ASP.NET?
В некоторых случаях может потребоваться запустить асинхронную задачу, которая в течение нескольких секунд находится в режиме ожидания, а затем выполняет код для очистки профиля пользователя или сброса состояния диалога или беседы. Дополнительные сведения о том, как это сделать, см. в статье о выполнении фоновых задач в ASP.NET. В частности, рассмотрите возможность использования HostingEnvironment.QueueBackgroundWorkItem.
Мой бот медленно реагирует на первое получаемое сообщение. Как повысить его быстродействие?
Боты — это веб-службы и некоторые платформы размещения, включая Azure, автоматически помещают службу в спящий режим, если он не получает трафик в течение определенного периода времени. Если это происходит с вашим ботом, его необходимо перезапустить с нуля при очередном получении сообщения, значительно замедляющего его ответ по сравнению с тем, как если бы он был уже запущен.
Некоторые платформы размещения позволяют настроить службу таким образом, чтобы она не была включена в спящий режим. Если бот размещен в Azure AI Служба Bot веб-приложения, перейдите в службу бота в портал Azure, выберите параметры приложения и выберите Always on. Этот параметр доступен в большинстве, но не во всех планах обслуживания.
Как гарантировать определенный порядок доставки сообщений?
По возможности Bot Framework будет поддерживать порядок доставки сообщений. Например, если вы отправляете сообщение A и ожидаете завершения этой операции HTTP, прежде чем инициировать другую операцию HTTP для отправки сообщения B. Некоторые каналы, такие как SMS и электронная почта, не гарантируют порядок, в котором пользователь получит сообщения.
Почему отбрасываются части текста сообщения?
Bot Framework и многие каналы интерпретируют текст так, как если бы он был отформатирован с помощью Markdown. Проверьте, содержит ли текст символы, которые могут быть интерпретированы как синтаксис Markdown.
Каким образом можно поддерживать несколько ботов в одной конечной точке службы ботов?
В этом примере показана настройка Conversation.Container
с правильным классом MicrosoftAppCredentials
и использование простого MultiCredentialProvider
для проверки подлинности нескольких идентификаторов приложений и паролей.
Как работают идентификаторы в Bot Framework?
Дополнительные сведения об идентификаторах в Bot Framework см. в этом руководстве.
Как получить доступ к идентификатору пользователя?
Каналы Bot Framework предоставляют идентификатор пользователя в поле from.Id
для любого действия, отправленного пользователем. SMS-сообщения и сообщения электронной почты предоставляют в этом свойстве необработанный идентификатор пользователя. Некоторые каналы скрывают from.Id
свойство, поэтому оно содержит уникальный идентификатор пользователя, который отличается от идентификатора пользователя в канале. Чтобы подключиться к существующей учетной записи, можно использовать карточку для входа и реализовать собственный поток OAuth для подключения идентификатора пользователя к своему ИД пользователя службы.
Почему имена пользователей Facebook больше не отображаются?
Вы меняли пароль для Facebook? Это приведет к недопустимости маркера доступа, и вам потребуется обновить параметры конфигурации бота для канала Facebook Messenger в портал Azure.
Как использовать прошедшие проверку подлинности службы из бота?
Сведения о проверке подлинности идентификатора Microsoft Entra см. в руководстве по добавлению проверки подлинности в бот .
Примечание.
При добавлении в бот функций проверки подлинности и безопасности следует убедиться, что шаблоны, реализуемые в коде, соответствуют стандартам безопасности, которые подходят для вашего приложения.
Как можно предоставить доступ к боту только предопределенному списку пользователей?
Некоторые каналы, такие как SMS и электронная почта, предоставляют неограниченный диапазон адресов. В этих случаях сообщения от пользователя будут содержать неформатированный идентификатор пользователя в свойстве from.Id
.
Другие каналы, такие как Facebook и Slack, предоставляют область действия или арендаторские адреса таким образом, чтобы бот не мог прогнозировать идентификатор пользователя заранее. В таких случаях необходимо пройти проверку подлинности пользователя через ссылку входа или общий секрет, чтобы определить, разрешено ли им использовать бот.
Почему диалог Direct Line 1.1 начинается заново после каждого сообщения?
Примечание.
Этот раздел не применяется к последней версии протокола Direct Line, 3.0
Если диалог Direct Line начинается заново после каждого сообщения, скорее всего, свойство from
отсутствует или имеет значение null
в сообщениях, которые клиент Direct Line отправил боту. Когда клиент Direct Line отправляет сообщение с отсутствующим или имеющим значение null
свойством from
, служба Direct Line автоматически выделяет идентификатор, поэтому каждое отправляемое клиентом сообщение будет считаться сообщением от нового пользователя.
Чтобы устранить эту проблему, задайте свойству from
в каждом сообщении, отправленном клиентом Direct Line, постоянное значение, однозначно представляющее пользователя, который отправляет сообщение. Например, если пользователь уже выполнил вход на веб-страницу или в приложение, этот существующий идентификатор можно использовать в качестве значения свойства from
в сообщениях, отправляемых пользователем. Кроме того, можно создать произвольный идентификатор пользователя при загрузке страницы или загрузке приложения, сохранить этот идентификатор в файле cookie или состоянии устройства и использовать его в качестве значения свойства from
в сообщениях, отправляемых пользователем.
По какой причине служба Direct Line 3.0 отвечает с кодом состояния HTTP 502 "Недопустимый шлюз"?
Direct Line 3.0 возвращает код состояния HTTP 502 при попытке связаться с ботом, но запрос не завершается успешно. Эта ошибка означает, что бот вернул ошибку или истекло время ожидания запроса. Дополнительные сведения об ошибках, создаваемых ботом, перейдите на панель мониторинга бота в портал Azure и выберите ссылку "Проблемы" для затронутого канала. Если вы настроили Application Insights для бота, вы также можете найти подробные сведения об ошибках.
Почему при создании бота возникает исключение Authorization_RequestDenied?
Разрешение на создание ботов azure ai Служба Bot управляется с помощью портала идентификатора Microsoft Entra. Если разрешения не настроены должным образом в Центре администрирования Идентификатора Microsoft, пользователи получат исключение Authorization_RequestDenied при попытке создать службу бота.
Сначала проверьте, является ли вы гостевым каталогом:
- Войдите на портал Azure.
- Выберите все службы и найдите активные.
- Выберите Microsoft Entra ID.
- Выберите Пользователи.
- Найдите пользователя из списка и убедитесь, что тип пользователя не является гостевым.
Убедившись, что вы не являетесь гостевым, чтобы убедиться, что пользователи в Active Directory могут создавать службу ботов, администратор каталога должен настроить следующие параметры:
- Войдите в Центр администрирования Идентификатора Microsoft Entra. В колонке Пользователи и группы выберите Параметры пользователей.
- В разделе Регистрация приложения задайте параметру Пользователи могут регистрировать приложения значение Да. После этого пользователи в вашем каталоге смогут создавать службу ботов.
- В разделе Внешние пользователи задайте параметру Разрешения для гостей ограничены значение Нет. После этого гостевые пользователи в вашем каталоге смогут создавать службу ботов.
Почему не удается перенести бот?
Если бот зарегистрирован на dev.botframework.com и вы хотите перенести его в Azure, проблемы с миграцией бота могут возникать в том случае, если бот входит в каталог, отличный от каталога по умолчанию. Попробуйте выполнить следующие действия.
В целевом каталоге добавьте нового пользователя (через адрес электронной почты), который не является членом каталога по умолчанию, предоставьте роль участника пользователя для подписок, которые являются целью миграции.
На портале разработки добавьте адрес электронной почты пользователя в качестве совладельцев бота, который необходимо перенести. Затем выполните выход.
Войдите на портал разработчика в качестве нового пользователя и начните процесс миграции бота.
Где можно получить дополнительную помощь?
- Найдите ранее ответы на вопросы в Stack Overflow или опубликуйте собственные вопросы с помощью тега
botframework
. Stack Overflow содержит такие рекомендации, как требование описательного заголовка, полного и краткого оператора проблемы, а также достаточных сведений для воспроизведения проблемы. В данном документе не рассматриваются запросы функций или слишком общие вопросы. Для получения дополнительных сведений новым пользователям необходимо посетить центр справки Stack Overflow. - Чтобы найти информацию по известным проблемам с пакетом SDK Bot Framework или сообщить о новой проблеме, перейдите на соответствующую страницу для BotBuilder на сайте GitHub.
- Обсуждение сообщества BotBuilder по Gitter.