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 Conversaciones basadas en eventos; debe estar familiarizado con estos artículos antes de continuar.

La principal diferencia en los bots desarrollados para Microsoft Teams se encuentra en la forma en que se controlan las actividades. El controlador de actividad de Teams 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 JavaScript, C# y Python de Bot Framework seguirán siendo compatibles, pero el SDK de Java se va a retirar con la compatibilidad final a largo plazo que finaliza en noviembre de 2023.

Los bots existentes creados con el SDK de Java seguirán funcionando.

Para la creación de nuevos bots, considera el uso de Power Virtual Agents y lee sobre cómo elegir la solución de bot de chat adecuada.

Para obtener más información, consulte El futuro de la creación de bots.

Controlador de actividades 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 que está 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 del controlador de actividad. Sin embargo, Teams incluye información adicional en las actividades conversationUpdate y envía actividades invoke y event específicas 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 controlador OnMessageActivityAsync, 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 controlador OnConversationUpdateActivityAsync procesa la actividad.

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

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

Para implementar tu lógica para estos controladores de actividad específicos de Teams, anulará métodos en el 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 los documentos 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 actividades de Teams a los que se llama desde el método OnConversationUpdateActivityAsync del controlador de actividades 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 está instalado 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 está instalado 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 método ActivityHandler.OnMembersAddedAsync. 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. Se han agregado miembros del equipo.
membersRemoved OnTeamsMembersRemovedAsync De forma predeterminada, llama al método ActivityHandler.OnMembersRemovedAsync. 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. Se han quitado miembros del equipo.
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 no archivado.

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 los bots de conversación de Teams.

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

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 los bots de conversación de 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 de Teams ¿Qué son las extensiones de mensajería?

Nota:

La documentación de la plataforma de Microsoft Teams y la biblioteca cliente de JavaScript de Teams (TeamsJS) hacen referencia a módulos de tareas como diálogos modales. Para más información, consulte Diálogos.

A continuación se muestra una lista de todos los controladores de actividades de Teams a los que se llama desde el controlador de actividades OnInvokeActivityAsync 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.