Обработчики действий ботов
Этот документ берет за основу статью о том, как работают боты: Документация по платформе ботов. Основное различие между ботами, разработанными для 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. | Просмотр | Просмотр | Просмотр |
Следующий этап
См. также
Platform Docs