Поделиться через


Обработчики действий ботов

Этот документ берет за основу статью о том, как работают боты: Документация по платформе ботов. Основное различие между ботами, разработанными для Microsoft Teams, и основной платформой Bot Framework заключается в функциях, предоставляемых в Teams.

Обработчик действий используется для организации логики беседы для бота. Действия обрабатываются двумя способами: с помощью обработчиков действий Teams и логики бота. Обработчик действий Teams добавляет поддержку событий и взаимодействий, относящихся к Teams. Объект бота содержит логику беседы для поворота и отображает обработчик поворота, который является методом, который может принимать входящие действия от адаптера бота.

Обработчики действий Teams

Обработчик действий Teams является производным от обработчика действий Microsoft Bot Framework. Он перенаправляет все действия Teams, прежде чем разрешит обработку любых действий, не относящихся к Teams.

Когда бот для Teams получает действие, оно направляется в обработчики действий. Все действия перенаправляются через один базовый обработчик, называемый обработчиком поворота. Обработчик поворота вызывает необходимый обработчик действий для управления полученными действиями. Бот Teams является производным от класса TeamsActivityHandler, который является производным от класса ActivityHandler.

Примечание.

Если обработка действия бота занимает более 15 секунд, Teams отправляет запрос на повторную попытку в конечную точку бота. Таким образом, вы увидите повторяющиеся запросы в боте.

Боты создаются с помощью Bot Framework. Если боты получают действие с сообщением, обработчик поворота получает уведомление об этом входящем действии. Затем обработчик поворота отправляет входящие действия обработчику действий OnMessageActivityAsync. В Teams эта функция остается той же. Если бот получает действие обновления беседы, обработчик поворота получает уведомление о входящих действиях и отправляет входящие действия в OnConversationUpdateActivityAsync. Обработчик действий Teams сначала проверяет наличие определенных событий Teams. Если события найдены, их передают в обработчик действий Bot Framework.

В классе обработчиков действий Teams есть два основных обработчика действий Teams: OnConversationUpdateActivityAsync и OnInvokeActivityAsync. OnConversationUpdateActivityAsync маршрутизирует все действия по обновлению беседы, а OnInvokeActivityAsync маршрутизирует все действия вызова Teams.

Чтобы реализовать логику для конкретных обработчиков действий Teams, необходимо переопределить методы в боте, как показано в разделе Логика бота. Для этих обработчиков нет базовой реализации. Поэтому добавьте в переопределение нужную логику.

Фрагменты кода для обработчиков действий Teams:

OnTeamsChannelCreatedAsync


protected override Task OnTeamsChannelCreatedAsync(ChannelInfo channelInfo, TeamInfo teamInfo, ITurnContext<IConversationUpdateActivity> turnContext, CancellationToken cancellationToken)
        {
            // Code logic here
        }

OnTeamsChannelDeletedAsync


protected override Task OnTeamsChannelDeletedAsync(ChannelInfo channelInfo, TeamInfo teamInfo, ITurnContext<IConversationUpdateActivity> turnContext, CancellationToken cancellationToken)
        {
            // Code logic here
        }

OnTeamsChannelRenamedAsync


protected override Task OnTeamsChannelRenamedAsync(ChannelInfo channelInfo, TeamInfo teamInfo, ITurnContext<IConversationUpdateActivity> turnContext, CancellationToken cancellationToken)
  {
   // Code logic here
  }

OnTeamsTeamRenamedAsync


protected override Task OnTeamsTeamRenamedAsync(TeamInfo teamInfo, ITurnContext<IConversationUpdateActivity> turnContext, CancellationToken cancellationToken)
  {
   // Code logic here
  }

OnTeamsMembersAddedAsync


protected override Task OnTeamsMembersAddedAsync(IList<TeamsChannelAccount> teamsMembersAdded, TeamInfo teamInfo, ITurnContext<IConversationUpdateActivity> turnContext, CancellationToken cancellationToken)
  {
   // Code logic here
  }

OnTeamsMembersRemovedAsync


protected override Task OnTeamsMembersRemovedAsync(IList<TeamsChannelAccount> teamsMembersRemoved, TeamInfo teamInfo, ITurnContext<IConversationUpdateActivity> turnContext, CancellationToken cancellationToken);
  {
   // Code logic here
  }

OnTeamsMessageEditAsync

protected override async Task OnTeamsMessageEditAsync(ITurnContext<IMessageUpdateActivity> turnContext, CancellationToken cancellationToken)
  { 
   // Code logic here 
  } 

OnTeamsMessageUndeleteAsync

protected override async Task OnTeamsMessageUndeleteAsync(ITurnContext<IMessageUpdateActivity> turnContext, CancellationToken cancellationToken)
  { 
   // Code logic here 
  } 

OnTeamsMessageSoftDeleteAsync

 protected override async Task OnTeamsMessageSoftDeleteAsync(ITurnContext<IMessageDeleteActivity> turnContext, CancellationToken cancellationToken)
  { 
   // Code logic here 
  } 

Логика бота

Логика бота обрабатывает входящие действия из одного или более каналов бота и в ответ создает исходящие действия. Это по-прежнему относится к ботам, производным от класса обработчика действий Teams, который сначала проверяет действия Teams. После проверки действий Teams все остальные действия передается в обработчик действий Bot Framework.

Основные обработчики Bot Framework

Примечание.

  • За исключением добавленных и удаленных действий участников, все обработчики действий, описанные в этом разделе, продолжают работать так же, как и с ботом, не относящимся к Teams.
  • Метод onInstallationUpdateActivityAsync() используется для получения языкового стандарты Teams при добавлении бота в Teams.

Обработчики действий отличаются в контексте команды, где в команду добавляется новый участник, а не цепочка сообщений.

Список обработчиков, определенных в , ActivityHandler включает следующие события:

Событие Обработчик Описание
Любой полученный тип действия OnTurnAsync Этот метод вызывает один из других обработчиков в зависимости от типа полученного действия.
Получено действий с сообщением OnMessageActivityAsync Этот метод можно переопределить для обработки Message действия.
Получено действие обновления сообщения OnMessageUpdateActivityAsync Этот метод можно переопределить для обработки действия обновления сообщений.
Получено действие удаления сообщения OnMessageDeleteActivityAsync Этот метод можно переопределить для обработки действия удаления сообщения.
Получено действие обновления беседы OnConversationUpdateActivityAsync Этот метод вызывает обработчик для действия ConversationUpdate, если участники, кроме бота, присоединяются к беседе или выходят из нее.
К беседе присоединились участники, не являющиеся ботами OnMembersAddedAsync Этот метод может быть переопределен для обработки присоединения участников к беседе.
Участники, не боты, покинули беседу OnMembersRemovedAsync Этот метод может быть переопределен для обработки выхода участников из беседе.
Получено действие события OnEventActivityAsync Этот метод вызывает для действия Event определенный обработчик для типа события.
Получено действие события токена-ответа OnTokenResponseEventAsync Этот метод может быть переопределен для обработки событий ответа маркера.
Получено действие события, не относящегося к токену-ответу OnEventAsync Этот метод может быть переопределен для обработки других типов событий.
Получен другой тип действия OnUnrecognizedActivityTypeAsync Этот метод может быть переопределен для обработки любого типа действия, для которого в противном случае обработка была недоступна.

Обработчики действий для Teams

Расширяет TeamsActivityHandler список обработчиков в разделе основные обработчики Bot Framework, включив в него следующие события:

Событие Обработчик Описание
channelCreated OnTeamsChannelCreatedAsync Этот метод может быть переопределен для обработки создания канала Teams. Дополнительные сведения см. в разделе Канал, созданный в разделе События обновления беседы.
ChannelDeleted OnTeamsChannelDeletedAsync Этот метод может быть переопределен для обработки удаления канала Teams. Дополнительные сведения см. в разделе Канал удален в разделе События обновления беседы.
channelRenamed OnTeamsChannelRenamedAsync Этот метод может быть переопределен для обработки переименования канала Teams. Дополнительные сведения см. в разделе Переименование канала в разделе События обновления беседы.
teamRenamed OnTeamsTeamRenamedAsync return Task.CompletedTask; Этот метод может быть переопределен для обработки переименования команды Teams. Дополнительные сведения см. в разделе Команда переименована в разделе События обновления беседы.
MembersAdded OnTeamsMembersAddedAsync Этот метод вызывает метод OnMembersAddedAsync в ActivityHandler. Этот метод может быть переопределен для обработки присоединения участников к команде. Дополнительные сведения см. в разделе Участники команды, добавленные в раздел События обновления беседы.
MembersRemoved OnTeamsMembersRemovedAsync Этот метод вызывает метод OnMembersRemovedAsync в ActivityHandler. Этот метод может быть переопределен для обработки выхода участников из команды. Дополнительные сведения см. в разделе Участники команды удалены в разделе События обновления беседы.
messageEdit OnTeamsMessageEditAsync Этот метод можно переопределить для обработки события изменения сообщений Teams.
messageUndelete OnTeamsMessageUndeleteAsync Этот метод можно переопределить для обработки события отмены отмены сообщения Teams.
messageSoftDelete OnTeamsMessageSoftDeleteAsync Этот метод можно переопределить для обработки события обратимого удаления сообщений Teams.

Запуск действий Teams

Список обработчиков действий Teams, вызываемых из OnInvokeActivityAsync обработчика действий Teams, включает следующие типы вызовов:

Типы вызовов Обработчик Описание
CardAction.Invoke OnTeamsCardActionInvokeAsync Когда соединитель получает действие вызова карточки, вызывается этот метод.
fileConsent/invoke OnTeamsFileConsentAcceptAsync Когда пользователь принимает карточку согласия для файла, вызывается этот метод.
fileConsent/invoke OnTeamsFileConsentAsync Когда соединитель получает действие карточки согласия файла, вызывается этот метод.
fileConsent/invoke OnTeamsFileConsentDeclineAsync Когда пользователь отклоняет карточку согласия на использование файла, вызывается этот метод.
actionableMessage/executeAction OnTeamsO365ConnectorCardActionAsync Когда соединитель получает карточку соединителя для действия действия "Группы Microsoft 365", вызывается этот метод.
signin/verifyState OnTeamsSigninVerifyStateAsync Когда соединитель получает signIn действие проверки состояния, вызывается этот метод.
task/fetch OnTeamsTaskModuleFetchAsync Этот метод можно переопределить в производном классе, чтобы предоставить логику при получении диалогового окна (называемого модулем задач в TeamsJS версии 1.x).
task/submit OnTeamsTaskModuleSubmitAsync Этот метод можно переопределить в производном классе, чтобы предоставить логику при отправке диалогового окна.

Действия вызова, перечисленные в этом разделе, предназначены для диалоговых ботов в Teams. Пакет SDK Bot Framework также поддерживает вызов действий, характерных для расширений для сообщений. Дополнительные сведения см. в статье о том, что такое расширения для сообщений.


Теперь, когда вы ознакомились с обработчиками действий ботов, давайте посмотрим, как боты ведут себя по-разному в зависимости от беседы и сообщений, которые они получают или отправляют.

Пример кода

Название примера Описание .NET Node.js Python
Бот для беседы в Teams В этом примере приложения показано, как использовать различные события бесед бота, доступные в Bot Framework версии 4. Просмотр Просмотр Просмотр
Образцы бота Набор примеров Bot Framework версии 4. Просмотр Просмотр Просмотр

Следующий этап

См. также