Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
ОБЛАСТЬ ПРИМЕНЕНИЯ: ПАКЕТ SDK версии 4
Шаблоны и примеры Bot Framework написаны для ASP.NET (C#), restify (JavaScript) и aiohttp (Python). Однако функции веб-службы не являются частью пакета SDK Bot Framework, но частью веб-платформы, которую вы решили использовать.
Все приложения бота используют некоторые общие функции.
Функция | Описание |
---|---|
Подготовка ресурсов | Бот в качестве веб-приложения должен создать веб-службу, адаптер бота и объект бота. |
Конечная точка обмена сообщениями | Веб-приложение должно реализовать конечную точку обмена сообщениями, в которой будут приниматься действия и пересылать действия адаптеру бота. |
Адаптер бота | Адаптер получает действия из конечной точки обмена сообщениями, перенаправляет их в обработчик хода бота и перехватывает все ошибки или исключения, которые логика бота не перехватывает. |
Объект бота | Объект бота обрабатывает мышление или логику бота для данного хода. |
Вы можете создать эхо-бот из шаблонов, как описано в разделе "Создание бота" или скопировать проект эхо-бота из репозитория Microsoft/BotBuilder-Samples .
Шаблоны C# и JavaScript поддерживают встроенные подключения потоковой передачи. Однако в этой статье не рассматриваются функции потоковой передачи.
Примечание.
Чтобы создавать агенты с помощью выбранной службы ИИ, оркестрации и знаний, рекомендуется использовать пакет SDK для агентов Microsoft 365. Пакет SDK для агентов поддерживает C#, JavaScript или Python. Дополнительные сведения о пакете SDK для агентов см. в aka.ms/agents. Если вы ищете платформу агента на основе SaaS, рассмотрите microsoft Copilot Studio. Если у вас есть существующий бот, созданный с помощью пакета SDK Bot Framework, вы можете обновить бота до пакета SDK для агентов. Вы можете ознакомиться с основными изменениями и обновлениями в руководстве по миграции с Bot Framework SDK на SDK для агентов. Запросы на поддержку пакета SDK Bot Framework больше не будут обслуживаться с 31 декабря 2025 г.
Требования
- Базовые знания о ботах.
- Копия примера эхо-бота на C#, JavaScript, Java или Python.
Шаблоны для ботов
Бот — это веб-приложение, а шаблоны для него доступны для каждого из трех языков.
Bot Framework включает как шаблоны VSIX, так и .NET.
Шаблоны создают веб-приложение MVC Core ASP.NET. В основах ASP.NET вы найдете похожий код в таких файлах, как Program.cs и Startup.cs. Эти файлы необходимы для всех веб-приложений и не зависят от бота.
Примечание.
Вы можете установить шаблоны из Visual Studio.
- В меню выберите "Расширения" и "Управление расширениями".
- В диалоговом окне "Управление расширениями" найдите и установите шаблоны SDK Bot Framework версии 4 для Visual Studio.
Сведения о развертывании ботов .NET в Azure см. в статье о подготовке и публикации бота.
Файл appsettings.json указывает сведения о конфигурации бота, такие как его идентификатор приложения и пароль, помимо прочего. При использовании определенных технологий или использовании этого бота в рабочей среде потребуется добавить в эту конфигурацию определенные ключи или URL-адрес. Однако для этого эхо-бота вам не нужно делать ничего здесь прямо сейчас; Идентификатор приложения и пароль могут оставаться неопределенными в настоящее время.
Файл EchoBot.csproj указывает зависимости и связанные версии бота. Это все настроено системой и шаблоном. Дополнительные зависимости можно установить с помощью диспетчера пакетов NuGet или dotnet add package
команды.
Подготовка ресурсов
Для работы в качестве веб-приложения боту необходимо создать веб-службу, адаптер бота и объект бота.
Для большинства ботов вы также создадите объекты уровня хранения и управления памятью для бота. Однако эхо-боту не требуется сохранять состояние между ходами. Кроме того, для некоторых ботов может потребоваться создать другие объекты, необходимые объекту или адаптеру бота.
В ASP.NET вы регистрируете объекты и методы создания объектов в файле Startup.cs.
Метод ConfigureServices
загружает подключенные службы и их ключи (если есть) из appsettings.json, подключает состояние и т. д. Здесь адаптер и бот определены как доступные через внедрение зависимостей.
Configure
Затем метод завершает настройку приложения.
ConfigureServices
и Configure
вызываются средой выполнения при запуске приложения.
Конечная точка обмена сообщениями
Шаблон реализует веб-службу с конечной точкой обмена сообщениями. При получении запроса служба извлекает заголовок аутентификации и полезные данные запроса и пересылает их адаптеру.
Пакеты SDK для C# и JavaScript поддерживают потоковые соединения. Хотя бот эхо не использует какие-либо функции потоковой передачи, адаптер в шаблонах C# и JavaScript предназначен для их поддержки.
Каждый входящий запрос представляет начало нового поворота.
Контроллеры\BotController.cs
// This ASP Controller is created to handle a request. Dependency Injection will provide the Adapter and IBot
// implementation at runtime. Multiple different IBot implementations running at different endpoints can be
// achieved by specifying a more specific type for the bot constructor argument.
[Route("api/messages")]
[ApiController]
public class BotController : ControllerBase
{
private readonly IBotFrameworkHttpAdapter _adapter;
private readonly IBot _bot;
public BotController(IBotFrameworkHttpAdapter adapter, IBot bot)
{
_adapter = adapter;
_bot = bot;
}
[HttpPost, HttpGet]
public async Task PostAsync()
{
// Delegate the processing of the HTTP POST to the adapter.
// The adapter will invoke the bot.
await _adapter.ProcessAsync(Request, Response, _bot);
}
}
Адаптер бота
Адаптер получает действия из конечной точки обмена сообщениями, перенаправляет их в обработчик хода бота и перехватывает все ошибки или исключения, которые логика бота не перехватывает. Адаптер также перенаправит действия бота в канал пользователя.
Адаптер позволяет добавить собственный обработчик ошибок при повороте.
Startup.cs
Используемый адаптер определен в методе ConfigureServices
.
// Create the Bot Framework Authentication to be used with the Bot Adapter.
services.AddSingleton<BotFrameworkAuthentication, ConfigurationBotFrameworkAuthentication>();
AdapterWithErrorHandler.cs
public class AdapterWithErrorHandler : CloudAdapter
{
public AdapterWithErrorHandler(BotFrameworkAuthentication auth, ILogger<IBotFrameworkHttpAdapter> logger)
: base(auth, logger)
{
OnTurnError = async (turnContext, exception) =>
{
// Log any leaked exception from the application.
// NOTE: In production environment, you should consider logging this to
// Azure Application Insights. Visit https://aka.ms/bottelemetry to see how
// to add telemetry capture to your bot.
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");
};
}
}
Логика бота
Эхо-бот использует обработчик активности и реализует обработчики для типов активности, которые он распознаёт и на которые реагирует, в данном случае обновление разговора и сообщение.
- Действие обновления беседы содержит сведения о том, кто присоединился или покинул беседу. Для бесед, отличных от групп, бот и пользователь присоединяются к беседе при запуске. При групповых беседах обновление бесед создается всякий раз, когда кто-то присоединяется или покидает беседу, будь то бот или пользователь.
- Действие сообщения — это сообщение, которое пользователь отправляет боту.
Эхо-бот приветствует пользователя, когда он присоединяется к беседе, и отражает все сообщения, которые пользователь отправляет боту.
Startup.cs
Используемый бот определен в методе ConfigureServices
.
// Create the Bot Adapter with error handling enabled.
services.AddSingleton<IBotFrameworkHttpAdapter, AdapterWithErrorHandler>();
Bots\EchoBot.cs
public class EchoBot : ActivityHandler
{
protected override async Task OnMessageActivityAsync(ITurnContext<IMessageActivity> turnContext, CancellationToken cancellationToken)
{
var replyText = $"Echo: {turnContext.Activity.Text}";
await turnContext.SendActivityAsync(MessageFactory.Text(replyText, replyText), cancellationToken);
}
protected override async Task OnMembersAddedAsync(IList<ChannelAccount> membersAdded, ITurnContext<IConversationUpdateActivity> turnContext, CancellationToken cancellationToken)
{
var welcomeText = "Hello and welcome!";
foreach (var member in membersAdded)
{
if (member.Id != turnContext.Activity.Recipient.Id)
{
await turnContext.SendActivityAsync(MessageFactory.Text(welcomeText, welcomeText), cancellationToken);
}
}
}
}
Следующие шаги
- Узнайте, как отправлять и получать текстовые сообщения
- Узнайте, как отправлять приветственные сообщения пользователям