Controladores de actividad de bots

Este documento se basa en el artículo sobre cómo funcionan los bots en la documentación básica de Bot Framework. La diferencia principal entre los bots desarrollados para Microsoft Teams y el bot framework principal se encuentra en las características que se proporcionan en Teams.

Para organizar la lógica de conversación del bot, se usa un controlador de actividades. Las actividades se controlan de dos maneras mediante Teams de actividad y lógica de bot. El controlador Teams de actividad agrega compatibilidad para Microsoft Teams eventos e interacciones específicos. El objeto bot contiene el razonamiento de conversación o la lógica de un turno y expone un controlador de turnos, que es el método que puede aceptar actividades entrantes del adaptador del bot.

Teams de actividad

Teams controlador de actividad se deriva del controlador de actividades de Microsoft Bot Framework. Enruta todas las Teams antes de permitir que se controle cualquier actividad que no Teams específicas.

Cuando un bot para Teams recibe una actividad, se enruta a los controladores de actividad. Todas las actividades se enrutan a través de un controlador base denominado controlador de turnos. El controlador de turnos llama al controlador de actividad necesario para administrar cualquier actividad recibida. El Teams bot se deriva de la clase, que se deriva de la clase TeamsActivityHandler de Bot ActivityHandler Framework.

Los bots se crean con Bot Framework. Si los bots reciben una actividad de mensaje, el controlador de turnos recibe una notificación de esa actividad entrante. A continuación, el controlador de turnos envía la actividad entrante al OnMessageActivityAsync controlador de actividad. En Teams, esta funcionalidad sigue siendo la misma. Si el bot recibe una actividad de actualización de conversación, el controlador de turnos recibe una notificación de esa actividad entrante y envía la actividad entrante a OnConversationUpdateActivityAsync . El Teams de actividad comprueba primero si hay Teams eventos específicos. Si no se encuentra ningún evento, los pasa al controlador de actividad de Bot Framework.

En la Teams controlador de actividad, hay dos controladores de Teams principales y OnConversationUpdateActivityAsync OnInvokeActivityAsync . OnConversationUpdateActivityAsyncenruta todas las actividades de actualización de conversación y OnInvokeActivityAsync enruta todas Teams invocar actividades.

Para implementar la lógica Teams controladores de actividad específicos, debe invalidar los métodos del bot como se muestra en la sección lógica del bot. No hay ninguna implementación base para estos controladores, por lo tanto, debe agregar la lógica que desee en su invalidación.

Lógica del bot

La lógica del bot procesa las actividades entrantes de uno o más canales de bot y, en respuesta, genera actividades salientes. Esto sigue siendo así con los bots derivados de la clase de controlador de Teams de actividad, que primero comprueba si hay Teams actividades. Después de comprobar si Teams actividades, pasa todas las demás actividades al controlador de actividades de Bot Framework.

Controladores de Core Bot Framework

Nota

Excepto para las actividades de los miembros agregados y quitados, todos los controladores de actividad descritos en esta sección siguen funcionando como lo hacen con un bot que no Teams usuario.

Los controladores de actividad son diferentes en el contexto de un equipo, donde se agrega un nuevo miembro al equipo en lugar de un subproceso de mensaje.

La lista de controladores definidos en ActivityHandler incluye lo siguiente:

Evento Controlador Descripción
Cualquier tipo de actividad recibida OnTurnAsync Este método llama a uno de los otros controladores, en función del tipo de actividad recibida.
Actividad de mensajes recibida OnMessageActivityAsync Este método se puede invalidar para controlar una Message actividad.
Actividad de actualización de conversación recibida OnConversationUpdateActivityAsync Este método llama a un controlador si miembros distintos del bot se unieron o dejaron la conversación en una ConversationUpdate actividad.
Miembros que no son bots se unieron a la conversación OnMembersAddedAsync Este método se puede invalidar para controlar los miembros que se unen a una conversación.
Los miembros que no son bots dejaron la conversación OnMembersRemovedAsync Este método se puede invalidar para controlar los miembros que dejan una conversación.
Actividad de evento recibida OnEventActivityAsync Este método llama a un controlador específico del tipo de evento, en una Event actividad.
Actividad de evento de respuesta de token recibida OnTokenResponseEventAsync Este método se puede invalidar para controlar eventos de respuesta de token.
Actividad de evento que no es de token-response recibida OnEventAsync Este método se puede invalidar para controlar otros tipos de eventos.
Otro tipo de actividad recibida OnUnrecognizedActivityTypeAsync Este método se puede invalidar para controlar cualquier tipo de actividad que no se controle.

Teams controladores de actividad específicos

Amplía la lista de controladores de la sección de controladores TeamsActivityHandler principales de Bot Framework para incluir lo siguiente:

Evento Controlador Descripción
channelCreated OnTeamsChannelCreatedAsync Este método se puede invalidar para controlar un canal Teams que se está creando. Para obtener más información, vea channel created in conversation update events.
channelDeleted OnTeamsChannelDeletedAsync Este método se puede invalidar para controlar un canal Teams que se va a eliminar. Para obtener más información, vea channel deleted in conversation update events.
channelRenamed OnTeamsChannelRenamedAsync Este método se puede invalidar para controlar un canal Teams que se va a cambiar el nombre. Para obtener más información, vea channel renamed in conversation update events.
teamRenamed OnTeamsTeamRenamedAsync return Task.CompletedTask;Este método se puede invalidar para controlar un Teams equipo que se va a cambiar el nombre. Para obtener más información, vea team renamed in conversation update events.
MembersAdded OnTeamsMembersAddedAsync Este método llama al OnMembersAddedAsync método en ActivityHandler . El método se puede invalidar para controlar los miembros que se unen a un equipo. Para obtener más información, vea miembros del equipo agregados en eventos de actualización de conversación.
MembersRemoved OnTeamsMembersRemovedAsync Este método llama al OnMembersRemovedAsync método en ActivityHandler . El método se puede invalidar para controlar los miembros que salen de un equipo. Para obtener más información, consulta Miembros del equipo eliminados en eventos de actualización de conversación.

Teams invocar actividades

La lista de Teams controladores de actividad llamados desde OnInvokeActivityAsync el Teams de actividad incluyen lo siguiente:

Invocar tipos Controlador Descripción
CardAction.Invoke OnTeamsCardActionInvokeAsync Este método se invoca cuando se recibe una actividad de invocación de acción de tarjeta desde el conector.
fileConsent/invoke OnTeamsFileConsentAcceptAsync Este método se invoca cuando el usuario acepta una tarjeta de consentimiento de archivo.
fileConsent/invoke OnTeamsFileConsentAsync Este método se invoca cuando se recibe una actividad de tarjeta de consentimiento de archivo desde el conector.
fileConsent/invoke OnTeamsFileConsentDeclineAsync Este método se invoca cuando el usuario rechaza una tarjeta de consentimiento de archivo.
actionableMessage/executeAction OnTeamsO365ConnectorCardActionAsync Este método se invoca cuando se recibe una actividad de acción de tarjeta de conector O365 desde el conector.
signin/verifyState OnTeamsSigninVerifyStateAsync Este método se invoca cuando se recibe una actividad de estado signIn verify desde el conector.
task/fetch OnTeamsTaskModuleFetchAsync Este método se puede invalidar en una clase derivada para proporcionar lógica cuando se captura un módulo de tareas.
task/submit OnTeamsTaskModuleSubmitAsync Este método se puede invalidar en una clase derivada para proporcionar lógica cuando se envía un módulo de tareas.

Las actividades de invocación enumeradas en esta sección son para bots de conversación en Teams. El SDK de Bot Framework también admite invocar actividades específicas de extensiones de mensajería. Para obtener más información, vea what are messaging extensions.


Ahora que ya se ha familiarizado con los controladores de actividad del bot, veamos cómo los bots se comportan de forma diferente en función de la conversación y los mensajes que recibe o envía.

Paso siguiente