Obtenir le contexte spécifique à Teams pour votre bot

Importante

Les exemples de code de cette section sont basés sur la version 4.6 et les versions ultérieures du Kit de développement logiciel (SDK) Bot Framework. Si vous recherchez de la documentation pour les versions antérieures, consultez la section bots - Kit de développement logiciel (SDK) v3 dans le dossier Kits de développement logiciel (SDK) hérités de la documentation.

Un bot peut accéder à des données contextuelles supplémentaires sur une équipe ou une conversation où il est installé. Ces informations peuvent être utilisées pour enrichir les fonctionnalités du bot et fournir une expérience plus personnalisée.

Récupérer la liste ou le profil utilisateur

Votre bot peut interroger la liste des membres et leurs profils utilisateur de base, y compris les ID d’utilisateur Teams et les informations de Microsoft Entra, telles que name et objectId. Vous pouvez utiliser ces informations pour mettre en corrélation les identités des utilisateurs. Par exemple, pour case activée si un utilisateur s’est connecté à un onglet via Microsoft Entra informations d’identification est membre de l’équipe. Pour obtenir les membres de la conversation, la taille de page minimale ou maximale dépend de l’implémentation. La taille de page inférieure à 50, est traitée comme 50 et supérieure à 500, est limitée à 500. Même si vous utilisez la version non paginée, elle n'est pas fiable dans les grandes équipes et ne doit pas être utilisée. Pour plus d'informations, voir les modifications apportées aux API du robot Teams pour la récupération des membres de l'équipe ou du chat.

Remarque

  • La pagination est disponible dans une équipe et un canal.
  • La pagination n’est pas prise en charge dans les conversations. Pour les conversations, la liste entière est toujours retournée.

L’exemple de code suivant utilise le point de terminaison paginé pour récupérer la liste :

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);
     }
}

Après avoir extrait la liste ou le profil utilisateur, vous pouvez obtenir les détails d’un seul membre. Actuellement, pour récupérer des informations pour un ou plusieurs membres d’une conversation ou d’une équipe, utilisez les API de bot Microsoft Teams TeamsInfo.GetMembersAsync pour C# ou TeamsInfo.getMembers pour les API TypeScript.

Obtenir les détails d’un seul membre

Vous pouvez également récupérer les détails d’un utilisateur particulier à l’aide de son ID d’utilisateur Teams, de son UPN ou de son ID d’objet Microsoft Entra.

L’exemple de code suivant est utilisé pour obtenir les détails d’un membre unique :

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);
    }
}

Une fois que vous avez obtenu les détails d’un seul membre, vous pouvez obtenir les détails de l’équipe. Actuellement, pour récupérer des informations pour une équipe, utilisez les API de bot Teams TeamsInfo.GetMemberDetailsAsync pour C# ou TeamsInfo.getTeamDetails pour TypeScript.

Obtenir les détails de l’équipe

Lorsqu’il est installé dans une équipe, votre bot peut interroger les métadonnées relatives à cette équipe, y compris l’ID de groupe Microsoft Entra.

L’exemple de code suivant est utilisé pour obtenir les détails de l’équipe :

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.");
        }
    }
}

Une fois que vous avez obtenu les détails de l’équipe, vous pouvez obtenir la liste des canaux dans une équipe. Actuellement, pour récupérer les informations d’une liste de canaux dans une équipe, utilisez les API de bot Teams TeamsInfo.GetTeamChannelsAsync pour C# ou TeamsInfo.getTeamChannels pour les API TypeScript.

Obtenir la liste des canaux dans une équipe

Votre bot peut interroger la liste des canaux d’une équipe.

Remarque

  • Le nom du canal Général par défaut est retourné en tant que null pour permettre la localisation.
  • L’ID de canal du canal Général correspond toujours à l’ID d’équipe.

L’exemple de code suivant est utilisé pour obtenir la liste des canaux d’une équipe :

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()}");
    }
}

Exemples de bot Teams

Exemple de code

Pour obtenir des exemples complets illustrant la fonctionnalité, consultez les exemples Teams suivants pour Bot Framework :

Exemple de nom Description .NET Node.js Python Manifeste
Bot de conversation Teams Cet exemple montre comment utiliser différents événements de conversation de bot disponibles dans Bot Framework v4 pour l’étendue personnelle et teams. View View View View
Authentification avec OAuthPrompt Cet exemple montre l’authentification et la messagerie de base dans Bot Framework v4. View View View View
Chargement de fichiers Teams Cet exemple montre comment utiliser des fichiers avec un bot dans une conversation un-à-un. View View View View
Boîte de dialogue (appelée module de tâche dans TeamsJS v1.x) Cet exemple montre comment utiliser une boîte de dialogue et les valeurs des cartes qu’il contient pour une extension de message. View View View View
Démarrer un nouveau thread dans un canal Cet exemple montre comment utiliser un nouveau thread dans un canal à l’aide d’un bot. View View View View
Localisation des applications Teams Cet exemple montre comment utiliser la localisation d’applications Teams à l’aide d’un bot et d’un onglet. View View N/A View

Étape suivante

Voir aussi