Cómo funcionan los bots de Microsoft Teams

SE APLICA A: SDK v4

Este artículo se basa en lo que ha aprendido en Cómo funcionan los bots y las conversaciones controladas por eventos; Debe estar familiarizado con estos artículos antes de continuar.

La principal diferencia en los bots desarrollados para Microsoft Teams es cómo se controlan las actividades. El controlador de actividad de Teams se deriva del controlador de actividad y procesa los tipos de actividad específicos de Teams antes de procesar tipos de actividad más generales.

Nota:

Los SDK de Java y Python de Bot Framework se están retirando con la compatibilidad final a largo plazo que finaliza en noviembre de 2023. Solo se realizarán correcciones de errores y seguridad críticas en este repositorio. Los bots existentes creados con estos SDK seguirán funcionando.

Para el nuevo desarrollo de bots, considere la posibilidad de usar Power Virtual Agents. Para más información, consulte El futuro de la compilación de bots.

Controlador de actividad de Teams

Para crear un bot para Teams, derive el bot de la clase de controlador de actividad de Teams . Cuando este bot recibe una actividad, enruta la actividad a través de varios controladores de actividad. El controlador base inicial es el controlador de turnos y enruta la actividad a un controlador en función del tipo de la actividad. El controlador de turnos llama al controlador diseñado para controlar el tipo específico de actividad que se recibió. La clase de controlador de actividad de Teams se deriva de la clase de controlador de actividad . Además de los tipos de actividad que el controlador de actividad puede procesar, la clase de controlador de actividad de Teams incluye controladores adicionales para actividades específicas de Teams.

Un bot que deriva del controlador de actividad de Teams es similar a un bot que deriva directamente de la clase de controlador de actividad. Sin embargo, Teams incluye información adicional en conversationUpdate las actividades y envía actividades y event específicas invoke de Teams.

Cuando el controlador de actividad de Teams recibe una actividad de mensaje, su controlador de turnos enruta la actividad de mensaje entrante a su OnMessageActivityAsync controlador, similar a cómo lo haría un bot basado en controlador de actividad. Sin embargo, cuando el bot de Teams recibe una actividad de actualización de conversación, la versión de Teams del OnConversationUpdateActivityAsync controlador procesa la actividad.

No hay ninguna implementación base para la mayoría de los controladores de actividad específicos de Teams. Tendrá que invalidar estos controladores y proporcionar la lógica adecuada para el bot.

Todos los controladores de actividad descritos en la sección de control de actividades de las conversaciones controladas por eventos que usan un artículo de controlador de actividad seguirán funcionando como lo hacen con un bot que no es de Teams, excepto para controlar los miembros agregados y las actividades eliminadas, estas actividades serán diferentes en el contexto de un equipo, donde el nuevo miembro se agrega al equipo en lugar de un subproceso de mensaje. Para obtener más información, vea Actividades de actualización de conversaciones de Teams.

Para implementar la lógica de estos controladores de actividad específicos de Teams, invalidará los métodos del bot.

Lógica del bot de Teams

La lógica del bot procesa las actividades entrantes de uno o varios canales de los bots y genera actividades salientes como respuesta. Esto sigue siendo verdad en un bot derivado de la clase del controlador de actividades de Teams, que primero comprueba las actividades de Teams y, a continuación, pasa todas las demás actividades al controlador de actividades de Bot Framework.

Actividades de actualización de instalación de Teams

Agregue un controlador para el evento de actualización de instalación para permitir que el bot:

  • Envíe un mensaje introductorio cuando esté instalado en un subproceso de conversación.
  • Limpie los datos de usuario y subproceso cuando se desinstale de un subproceso.

Consulte Evento de actualización de instalación en la documentación de Teams para obtener más información.

Actividades de actualización de conversación de Teams

En la tabla siguiente se enumeran los eventos de Teams que generan una actividad de actualización de conversación en un bot. En el artículo Eventos de actualización de conversación de Microsoft Teams se describe cómo usar cada uno de estos eventos.

A continuación se muestra una lista de todos los controladores de actividad de Teams a los que se llama desde el OnConversationUpdateActivityAsync método del controlador de actividad de Teams .

EventType Controlador Condición Documentación de Teams
channelCreated OnTeamsChannelCreatedAsync Se envía cada vez que se crea un nuevo canal en un equipo en el que se instala el bot. Canal creado.
channelDeleted OnTeamsChannelDeletedAsync Se envía cada vez que se elimina un canal en un equipo en el que se instala el bot. Canal eliminado.
channelRenamed OnTeamsChannelRenamedAsync Se envía cada vez que se cambia el nombre de un canal en un equipo en el que se instala el bot. Se ha cambiado el nombre del canal.
channelRestored OnTeamsChannelRestoredAsync Se envía cada vez que se restaura un canal que se eliminó anteriormente en un equipo en el que el bot ya está instalado. Canal restaurado.
membersAdded OnTeamsMembersAddedAsync De forma predeterminada, llama al ActivityHandler.OnMembersAddedAsync método . Se envía la primera vez que el bot se agrega a una conversación y cada vez que se agrega un nuevo usuario a un chat de grupo o equipo en el que está instalado el bot. Miembros del equipo agregados.
membersRemoved OnTeamsMembersRemovedAsync De forma predeterminada, llama al ActivityHandler.OnMembersRemovedAsync método . Se envía si el bot se quita de un equipo y cada vez que se quita cualquier usuario de un equipo del que el bot es miembro. Miembros del equipo quitados.
teamArchived OnTeamsTeamArchivedAsync Se envía cuando se archiva el equipo en el que está instalado el bot. Equipo archivado.
teamDeleted OnTeamsTeamDeletedAsync Se envía cuando se ha eliminado el equipo en el que se encuentra el bot. Equipo eliminado.
teamRenamed OnTeamsTeamRenamedAsync Se envía cuando se ha cambiado el nombre del equipo en el que se encuentra el bot. Se ha cambiado el nombre del equipo.
teamRestored OnTeamsTeamRestoredAsync Se envía cuando se restaura un equipo eliminado previamente en el que se encuentra el bot. Equipo restaurado.
teamUnarchived OnTeamsTeamUnarchivedAsync Se envía cuando el equipo en el que está instalado el bot no está archivado. Equipo sin archivar.

Actividades de eventos de Teams

En la tabla siguiente se enumeran las actividades de eventos específicas de Teams que Teams envía a un bot. Las actividades de eventos enumeradas son para bots conversacionales en Teams.

Estos son los controladores de actividad de eventos específicos de Teams a los que se llama desde el OnEventActivityAsync controlador de actividad de Teams.

Tipos de eventos Controlador Descripción
application/vnd.microsoft.meetingEnd OnTeamsMeetingEndAsync El bot está asociado a una reunión que acaba de finalizar.
application/vnd.microsoft.meetingStart OnTeamsMeetingStartAsync El bot está asociado a una reunión que acaba de comenzar.

Actividades de invocación de Teams

En la tabla siguiente se enumeran las actividades de invocación específicas de Teams que Teams envía a un bot. Las actividades de invocación enumeradas son para bots conversacionales en Teams. Bot Framework SDK también admite invocaciones específicas de las extensiones de mensajería. Para obtener más información, consulte el artículo Sobre las extensiones de mensajería de Teams.

Esta es una lista de todos los controladores de actividad de Teams a los que se llama desde el OnInvokeActivityAsync controlador de actividad de Teams:

Tipos de invocación Controlador Descripción
actionableMessage/executeAction OnTeamsO365ConnectorCardActionAsync Acción de tarjeta del conector de O365 de Teams.
CardAction.Invoke OnTeamsCardActionInvokeAsync Invocación de acción de tarjeta de Teams.
fileConsent/invoke OnTeamsFileConsentAcceptAsync Aceptación de consentimiento de archivo de Teams.
fileConsent/invoke OnTeamsFileConsentAsync Consentimiento de archivo de Teams.
fileConsent/invoke OnTeamsFileConsentDeclineAsync Consentimiento de archivo de Teams.
signin/verifyState OnTeamsSigninVerifyStateAsync Comprobación de estado de inicio de sesión de Teams.
task/fetch OnTeamsTaskModuleFetchAsync Captura del módulo de tareas de Teams.
task/submit OnTeamsTaskModuleSubmitAsync Envío del módulo de tareas de Teams.

Pasos siguientes

Para crear bots para Teams, consulte la documentación para desarrolladores de Microsoft Teams.