Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
ОБЛАСТЬ ПРИМЕНЕНИЯ: ПАКЕТ SDK версии 4
В этой статье описывается, как отлаживать бота с помощью промежуточного ПО для инспекции. Эта функция позволяет эмулятору Bot Framework отлаживать трафик в бот и из него и просматривать текущее состояние бота. Вы можете использовать сообщение трассировки для отправки данных в эмулятор, а затем проверить состояние бота в любой момент беседы.
Мы используем EchoBot, созданный локально с помощью Bot Framework версии 4 в кратком руководстве по созданию бота, чтобы показать, как отлаживать и проверять состояние сообщения бота. Отладку бота также можно выполнять с помощью IDE или Bot Framework Emulator, но для отладки состояния в бота нужно добавить проверяющее ПО промежуточного слоя. Примеры бота проверки доступны для C#, JavaScript, JavaScript и Python.
Это важно
Пакет SDK Bot Framework и эмулятор Bot Framework были архивированы на GitHub. Проект больше не обновляется или не поддерживается. Запросы на поддержку пакета SDK Bot Framework больше не будут обслуживаться с 31 декабря 2025 г.
Чтобы создавать агенты с помощью выбранной службы ИИ, оркестрации и знаний, рекомендуется использовать пакет SDK для агентов Microsoft 365. Пакет SDK для агентов поддерживает язык C#, JavaScript или Python. Дополнительные сведения о пакете SDK для агентов см. в aka.ms/agents. Если у вас есть существующий бот, созданный с помощью пакета SDK Bot Framework, вы можете обновить бота до пакета SDK для агентов. Ознакомьтесь с основными изменениями и обновлениями в руководстве по миграции с Bot Framework SDK на Agents SDK.
Если вы создаете агент для совместной работы в Microsoft Teams, рассмотрите возможность использования пакета SDK Teams. Он предоставляет интерфейсы API, поддержку адаптивных карт и встроенную оркестрацию ИИ для агентов, работающих в среде Teams. Дополнительные сведения см. в пакете SDK Teams (библиотека ИИ Teams).
Если вы ищете платформу агента на основе SaaS, рассмотрите microsoft Copilot Studio.
Предварительные условия
- Знание о промежуточном слое бота и об управлении состоянием
- Знание о том, как отлаживать бота, основанного на SDK, и тестировать и отлаживать с помощью эмулятора
- Установка эмулятора Bot Framework
- Установка Dev Tunnel (если вы хотите выполнить отладку бота, настроенного в Azure для использования других каналов)
- Копия примера бота проверки для C#, JavaScript, Java или Python
Обновление эмулятора до последней версии
Перед использованием промежуточного ПО для отладки бота обновите эмулятор до версии 4.15 или более поздней. Проверьте последнюю версию на наличие обновлений.
Чтобы проверить версию эмулятора, выберите "Справка", а затем "Сведения " в меню. Вы увидите текущую версию эмулятора.
Изменение кода бота
Состояние проверки и промежуточное программное обеспечение для проверки настраиваются в файле Startup.cs, а затем используется адаптером.
Startup.cs
});
services.AddSingleton<ConversationState>();
// Create the Bot Framework Authentication to be used with the Bot Adapter.
AdapterWithInspection.cs
{
public class AdapterWithInspection : CloudAdapter
{
public AdapterWithInspection(BotFrameworkAuthentication auth, IConfiguration configuration, InspectionState inspectionState, UserState userState, ConversationState conversationState, ILogger<IBotFrameworkHttpAdapter> logger)
: base(auth, logger)
{
// Inspection needs credentials because it will be sending the Activities and User and Conversation State to the emulator
var credentials = new MicrosoftAppCredentials(configuration["MicrosoftAppId"], configuration["MicrosoftAppPassword"]);
Use(new InspectionMiddleware(inspectionState, userState, conversationState, credentials));
OnTurnError = async (turnContext, exception) =>
{
// Log any leaked exception from the application.
logger.LogError(exception, $"[OnTurnError] unhandled error : {exception.Message}");
// Send a message to the user
await turnContext.SendActivityAsync("The bot encountered an error or bug.");
await turnContext.SendActivityAsync("To continue to run this bot, please fix the bot source code.");
// Send a trace activity, which will be displayed in the Bot Framework Emulator
await turnContext.TraceActivityAsync("OnTurnError Trace", exception.Message, "https://www.botframework.com/schemas/error", "TurnError");
};
}
Обновите класс бота в файле EchoBot.cs.
EchoBot.cs
protected override async Task OnMessageActivityAsync(ITurnContext<IMessageActivity> turnContext, CancellationToken cancellationToken)
{
var conversationStateProp = _conversationState.CreateProperty<CustomState>("customState");
var convProp = await conversationStateProp.GetAsync(turnContext, () => new CustomState { Value = 0 }, cancellationToken);
var userStateProp = _userState.CreateProperty<CustomState>("customState");
var userProp = await userStateProp.GetAsync(turnContext, () => new CustomState { Value = 0 }, cancellationToken);
await turnContext.SendActivityAsync(MessageFactory.Text($"Echo: {turnContext.Activity.Text} conversation state: {convProp.Value} user state: {userProp.Value}"), cancellationToken);
convProp.Value++;
userProp.Value++;
}
Локальное тестирование бота
После обновления кода можно локально запустить бота и проверить функцию отладки с помощью двух эмуляторов: один для отправки и получения сообщений, а другой — для проверки состояния сообщений в режиме отладки. Чтобы протестировать бот локально, выполните следующее:
Перейдите в каталог бота в терминале и выполните следующую команду, чтобы запустить бот локально:
dotnet runОткройте эмулятор. Выберите "Открыть бот". Заполните URL-адрес бота значениями
http://localhost:3978/api/messagesи MicrosoftAppPassword. Если у вас имеется JavaScript-бот, вы можете найти эти значения в файле .env вашего бота. Если у вас есть бот C#, эти значения можно найти в файле appsettings.json . Для бота Java эти значения можно найти в файле application.properties . Нажмите Подключиться.Теперь откройте другое окно эмулятора. Второе окно эмулятора будет работать в качестве отладчика. Следуйте инструкциям, описанным выше. Установите флажок "Открыть в режиме отладки" и нажмите кнопку "Подключить".
На этом этапе вы увидите команду с уникальным идентификатором (
/INSPECT attach <identifier>) в отладчике эмулятора. Скопируйте всю команду с идентификатором из эмулятора отладки и вставьте ее в окно чата первого эмулятора.Примечание.
Уникальный идентификатор создается каждый раз, когда эмулятор запускается в режиме отладки после добавления посредующего программного обеспечения проверки в код бота.
Теперь вы можете отправлять сообщения в поле чата первого эмулятора и проверять сообщения в эмуляторе отладки. Чтобы проверить состояние сообщений, выберите "Состояние бота" в эмуляторе отладки и разверните значения в правом окне JSON. Вы увидите состояние бота в эмуляторе отладки:
Проверка состояния бота, настроенного в Azure
Если вы хотите проверить состояние бота, настроенного в Azure, и подключиться к каналам (например, Teams), необходимо установить и запустить туннели разработки.
Запуск devtunnel
На этом этапе вы обновили эмулятор до самой последней версии и добавили посредника для инспекции в код бота. Следующим шагом является запуск devtunnel и настройка локального бота. Перед запуском devtunnel необходимо локально запустить бот.
Чтобы запустить бот локально, выполните следующее:
Перейдите в папку бота в терминале и задайте регистрацию npm, чтобы использовать последние сборки
Запустите бот на локальном компьютере. Вы увидите, что бот предоставляет номер порта, например
3978.Откройте другую командную строку и перейдите в папку проекта бота. Выполните следующую команду:
devtunnel host -a -p 3978Devtunnel теперь подключен к локально работающему боту. Скопируйте общедоступный URL-адрес безопасности (HTTPS).
Обновление ресурса бота
Теперь, когда локальный бот подключен к devtunnel, вы можете настроить ресурс бота в Azure для использования URL-адреса devtunnel.
Перейдите к ресурсу бота в Azure. В меню слева в разделе "Параметры" выберите "Конфигурация".
Задайте для конечной точки обмена сообщениями URL-адрес devtunnel, скопированный вами. При необходимости добавьте /api/messages после IP-адреса. Например,
https://0qg12llz-3978.usw2.devtunnels.ms/api/messages.Выберите Включить потоковую конечную точку.
Щелкните Применить, чтобы сохранить изменения.
Совет
Если Применить не активно, снимите флажок с Включить конечную точку потоковой передачи и выберите Применить. Затем снова установите флажок на Включить конечную точку потоковой передачи и снова выберите Применить. Убедитесь, что флажок Включить конечную точку потоковой передачи установлен, а конфигурация конечной точки сохранена.
Перейдите в группу ресурсов бота.
Выберите Развертывание и выберите ресурс бота, который ранее успешно развернут. Выберите шаблон из меню слева, чтобы получить MicrosoftAppId и MicrosoftAppPassword для веб-приложения, связанного с ботом.
Обновите файл конфигурации бота (appsettings.json для C#или .env для JavaScript) с помощью MicrosoftAppId и MicrosoftAppPassword.
Запустите эмулятор, выберите "Открыть бот" и введите
http://localhost:3978/api/messagesURL-адрес бота. Заполните идентификатор приложения Майкрософт и пароль приложения Майкрософт тем же microsoftAppId и MicrosoftAppPassword , которые вы добавили в файл конфигурации нашего бота. В этом случае выберите Подключиться.Запущенный бот теперь подключен к ресурсу бота в Azure. Чтобы протестировать бота в Azure в Веб-чат, перейдите в ресурсы бота, выберите "Тест в Веб-чат" и отправьте сообщения боту.
Включение режима отладки
В эмуляторе выберите "Отладка" и "Начать отладку".
Введите URL-адрес devtunnel (не забудьте добавить /api/messages) для URL-адреса бота (например,
https://4jj51x75-51865.usw2.devtunnels.ms/api/messages).- Для идентификатора приложения Майкрософт введите идентификатор приложения бота.
- Для пароля приложения Microsoft App введите секрет приложения бота.
- Также убедитесь, что флажок Открыть в режиме отладки установлен.
- Нажмите Подключиться.
С включенным режимом отладки эмулятор создает идентификатор UUID. UUID — это уникальный идентификатор, создаваемый при каждом запуске режима отладки в эмуляторе.
Скопируйте и вставьте UUID в поле чата Веб-чат, чтобы протестировать поле чата вашего канала. Вы увидите сообщение "Присоединено к сеансу, весь трафик реплицируется для проверки" в поле чата.
Чтобы начать отладку бота, отправьте сообщения в настроенное поле чата канала. Локальный эмулятор автоматически обновит сообщения со всеми сведениями об отладке. Чтобы проверить состояние сообщений бота, выберите "Состояние бота" и разверните значения в правом окне JSON.
Следующие шаги
- Узнайте, как дебаггировать вашего бота, используя файлы транскриптов.
- Узнайте, как выполнить отладку навыка или использователя навыков.