Obtención del contexto específico de Teams para un bot

Importante

Los ejemplos de código de esta sección se basan en la versión 4.6 y versiones posteriores del SDK de Bot Framework. Si busca documentación para versiones anteriores, consulte la sección bots - v3 SDK en la carpeta SDK heredados de la documentación.

Un bot puede acceder a datos de contexto adicionales sobre un equipo o el chat donde está instalado. Esta información se puede usar para enriquecer la funcionalidad del bot y proporcionar una experiencia más personalizada.

Captura de la lista o el perfil del usuario

El bot puede consultar la lista de miembros y sus perfiles de usuario básicos, incluidos los identificadores de usuario de Teams y Microsoft Entra información, como nombre y objectId. Puede usar esta información para correlacionar las identidades de usuario. Por ejemplo, para comprobar si un usuario ha iniciado sesión en una pestaña a través de Microsoft Entra credenciales es miembro del equipo. Para obtener miembros de la conversación, el tamaño mínimo o máximo de la página depende de la implementación. El tamaño de página menor que 50, se trata como 50 y mayor que 500, se limita a 500. Incluso si usa la versión no paginada, no es confiable en equipos grandes y no se debe usar. Para obtener más información, consulte cambios en las API del bot de Teams para capturar miembros del equipo o del chat.

Nota:

  • La paginación está disponible en un equipo y un canal.
  • La paginación no se admite en los chats. En el caso de los chats, siempre se devuelve toda la lista.

El código de ejemplo siguiente usa el punto de conexión paginado para capturar la lista:

public class MyBot : TeamsActivityHandler
{
    protected override async Task OnMessageActivityAsync(ITurnContext<IMessageActivity> turnContext, CancellationToken cancellationToken)
    {
        var members = new List<TeamsChannelAccount>();
        string continuationToken = null;

        do
        {   
            // Gets a paginated list of members of one-on-one, group, or team conversation.
            var currentPage = await TeamsInfo.GetPagedMembersAsync(turnContext, 100, continuationToken, cancellationToken);
            continuationToken = currentPage.ContinuationToken;
            members.AddRange(currentPage.Members);
         }
         while (continuationToken != null);
     }
}

Después de capturar la lista o el perfil de usuario, puede obtener detalles de un único miembro. Actualmente, para recuperar información de uno o varios miembros de un chat o equipo, use las API TeamsInfo.GetMembersAsync del bot de Microsoft Teams para C# o TeamsInfo.getMembers para las API de TypeScript.

Obtener detalles de un miembro

También puede recuperar los detalles de un usuario determinado mediante su id. de usuario, UPN o Microsoft Entra id. de objeto de Teams.

El siguiente código de ejemplo se usa para obtener detalles de un solo miembro:

public class MyBot : TeamsActivityHandler
{
    protected override async Task OnMessageActivityAsync(ITurnContext<IMessageActivity> turnContext, CancellationToken cancellationToken)
    {   
        // Gets the account of a single conversation member.
        // This works in one-on-one, group, and team scoped conversations.
        var member = await TeamsInfo.GetMemberAsync(turnContext, turnContext.Activity.From.Id, cancellationToken);
    }
}

Después de obtener los detalles de un solo miembro, puede obtener los detalles del equipo. Actualmente, para recuperar información de un equipo, use las API de bot de Teams TeamsInfo.GetMemberDetailsAsync para C# o TeamsInfo.getTeamDetails para TypeScript.

Obtener los detalles del equipo

Cuando se instala en un equipo, el bot puede consultar metadatos sobre ese equipo, incluido el identificador de grupo de Microsoft Entra.

El siguiente código de ejemplo se usa para obtener los detalles del equipo:

public class MyBot : TeamsActivityHandler
{
    protected override async Task OnMessageActivityAsync(ITurnContext<IMessageActivity> turnContext, CancellationToken cancellationToken)
    {
        // Gets the details for the given team id. This only works in team scoped conversations.
        // TeamsGetTeamInfo: Gets the TeamsInfo object from the current activity.
        TeamDetails teamDetails = await TeamsInfo.GetTeamDetailsAsync(turnContext, turnContext.Activity.TeamsGetTeamInfo().Id, cancellationToken);
        if (teamDetails != null) {
            await turnContext.SendActivityAsync($"The groupId is: {teamDetails.AadGroupId}");
        }
        else {
            // Sends a message activity to the sender of the incoming activity.
            await turnContext.SendActivityAsync($"Message did not come from a channel in a team.");
        }
    }
}

Después de obtener los detalles del equipo, puede obtener la lista de canales de un equipo. Actualmente, para recuperar información de una lista de canales de un equipo, use las API de bot de Teams TeamsInfo.GetTeamChannelsAsync para C# o TeamsInfo.getTeamChannels para las API de TypeScript.

Obtiene la lista de canales en un equipo

El bot puede consultar la lista de canales de un equipo.

Nota:

  • El nombre del canal predeterminado General se devuelve como null para permitir la localización.
  • El identificador de canal General siempre coincide con el identificador de equipo.

El siguiente código de ejemplo se usa para obtener la lista de canales de un equipo:

public class MyBot : TeamsActivityHandler
{
    // Override this in a derived class to provide logic specific to Message activities.
    protected override async Task OnMessageActivityAsync(ITurnContext<IMessageActivity> turnContext, CancellationToken cancellationToken)
    {
        // Returns a list of channels in a Team. This only works in team scoped conversations.
        IEnumerable<ChannelInfo> channels = await TeamsInfo.GetTeamChannelsAsync(turnContext, turnContext.Activity.TeamsGetTeamInfo().Id, cancellationToken);

        // Sends a message activity to the sender of the incoming activity.
        await turnContext.SendActivityAsync($"The channel count is: {channels.Count()}");
    }
}

Ejemplos de bot de Teams

Ejemplo de código

Para obtener ejemplos de trabajo completos que muestran la funcionalidad, consulte los siguientes ejemplos de Teams para Bot Framework:

Ejemplo de nombre Descripción .NET Node.js Python Manifiesto
Bot de conversación de Teams En este ejemplo se muestra cómo usar diferentes eventos de conversación de bot disponibles en bot framework v4 para el ámbito personal y de teams. View View View Ver
Autenticación con OAuthPrompt En este ejemplo se muestra la autenticación y la mensajería básica en Bot Framework v4. View View View Ver
Carga de archivos de Teams En este ejemplo se muestra cómo usar archivos con un bot en una conversación uno a uno. View View View Ver
Cuadro de diálogo (denominado módulo de tareas en TeamsJS v1.x) En este ejemplo se muestra cómo usar un cuadro de diálogo y los valores de las tarjetas en él para una extensión de mensaje. View View View View
Iniciar nuevo hilo en un canal En este ejemplo se muestra cómo usar un nuevo subproceso en un canal mediante bot. View View View Ver
Localización de aplicaciones de Teams En este ejemplo se muestra cómo usar la localización de aplicaciones de Teams mediante bot y pestaña. View View ND View

Paso siguiente

Consulte también