Freigeben über


Microsoft Teams-Kontext für Ihren Bot erhalten

Wichtig

Die Codebeispiele in diesem Abschnitt basieren auf Version 4.6 und höheren Versionen des Bot Framework SDK. Wenn Sie nach Dokumentation zu früheren Versionen suchen, lesen Sie den Abschnitt bots – v3 SDK im Ordner Legacy SDKs der Dokumentation.

Ein Bot kann auf zusätzliche Kontextdaten zu einem Team oder Chat zugreifen, in dem er installiert ist. Diese Informationen können verwendet werden, um die Funktionalität des Bots zu erweitern und eine persönlichere Benutzererfahrung zu bieten.

Abrufen der Mitgliederliste oder des Benutzerprofils

Ihr Bot kann die Liste der Mitglieder und deren grundlegende Benutzerprofile abfragen, einschließlich Teams-Benutzer-IDs und Microsoft Entra Informationen wie Name und ObjectId. Sie können diese Informationen verwenden, um Benutzeridentitäten zu korrelieren. Um beispielsweise zu überprüfen, ob ein Benutzer, der sich über Microsoft Entra Anmeldeinformationen bei einer Registerkarte angemeldet hat, mitglied des Teams ist. Für das Abrufen von Unterhaltungsmitgliedern hängt die minimale oder maximale Seitengröße von der Implementierung ab. Seitengrößen unter 50 werden als 50 behandelt, und größere als 500 sind auf 500 begrenzt. Selbst wenn Sie die nicht ausgelagerte Version verwenden, ist sie in großen Teams unzuverlässig und darf nicht verwendet werden. Weitere Informationen finden Sie unter Änderungen an Microsoft Teams-Bot-APIs zum Abrufen von Team- oder Chatmitgliedern.

Hinweis

  • Die Paginierung ist in einem Team und einem Kanal verfügbar.
  • Die Paginierung wird in Chats nicht unterstützt. Bei Chats wird immer die gesamte Liste zurückgegeben.

Im folgenden Beispielcode wird der ausgelagerte Endpunkt zum Abrufen der Teilnehmerliste verwendet:

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

Nachdem Sie die Teilnehmerliste oder das Benutzerprofil abgerufen haben, können Sie Details zu einem einzelnen Mitglied abrufen. Um Informationen für ein oder mehrere Mitglieder eines Chats oder Teams abzurufen, verwenden Sie die Microsoft Teams-Bot-APIs TeamsInfo.GetMembersAsync für C# oder TeamsInfo.getMembers für TypeScript-APIs.

Abrufen von Details zu einzelnen Mitgliedern

Sie können die Details eines bestimmten Benutzers auch mithilfe seiner Teams-Benutzer-ID, des UPN oder Microsoft Entra-Objekt-ID abrufen.

Der folgende Beispielcode wird verwendet, um Details zu einzelnen Mitgliedern abzurufen:

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

Nachdem Sie Details zu einem einzelnen Mitglied erhalten haben, können Sie Details des Teams abrufen. Um Informationen für ein Team abzurufen, verwenden Sie die Teams-Bot-APIs TeamsInfo.GetMemberDetailsAsync für C# oder TeamsInfo.getTeamDetails für TypeScript.

Abrufen von Teamdetails

Bei der Installation in einem Team kann Ihr Bot Metadaten zu diesem Team abfragen, einschließlich der Microsoft Entra Gruppen-ID.

Der folgende Beispielcode wird verwendet, um die Details des Teams abzurufen:

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

Nachdem Sie Details des Teams erhalten haben, können Sie die Liste der Kanäle in einem Team abrufen. Um Informationen für eine Liste von Kanälen in einem Team abzurufen, verwenden Sie die Teams-Bot-APIs TeamsInfo.GetTeamChannelsAsync für C# oder TeamsInfo.getTeamChannels für TypeScript-APIs.

Abrufen der Liste der Kanäle in einem Team

Ihr Bot kann die Liste der Kanäle in einem Team abfragen.

Hinweis

  • Der Name des Standardkanals "Allgemein" wird als null zurückgegeben, um die Lokalisierung zu ermöglichen.
  • Die Kanal-ID für den Kanal "Allgemein" stimmt immer mit der Team-ID überein.

Der folgende Beispielcode wird verwendet, um die Liste der Kanäle in einem Team abzurufen:

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

Codebeispiel

Vollständige Arbeitsbeispiele zur Veranschaulichung der Funktionalität finden Sie in den folgenden Teams-Beispielen für Bot Framework:

Beispielname Beschreibung .NET Node.js Python Manifest
Teams-Unterhaltungsbot Diese App veranschaulicht Botunterhaltungsereignisse und unterstützt adaptive Karten, Lesebestätigungen und Nachrichtenaktualisierungsereignisse. Es umfasst immersive Reader-Unterstützung für Barrierefreiheit. View View View View
Authentifizierung mit OAuthPrompt Diese Beispiel-App veranschaulicht, wie ein Bot die Teams-Authentifizierung verwenden kann. View View View View
Teams-Dateiupload Dieses Botbeispiel für Teams veranschaulicht Die Funktionen zum Hochladen von Dateien mithilfe von Bot Framework v4, sodass Benutzer Dateien hochladen und Inlinebilder in Chats anzeigen können. View View View View
Dialog (in TeamsJS v1.x als Aufgabenmodul bezeichnet) In dieser Beispiel-App wird veranschaulicht, wie Dialoge (in TeamsJS v1.x als Aufgabenmodule bezeichnet) mit Bot Framework v4 verwendet werden. View View View View
Starten eines neuen Threads in einem Kanal Diese App zeigt, wie Sie einen Konversationsthread in einem bestimmten Teams-Kanal mit Bot Framework v4 starten. View View View View
Lokalisierung von Teams-Apps In diesem Beispiel wird veranschaulicht, wie Die Lokalisierung für Microsoft Teams-Apps mithilfe von Bots und Registerkarten implementiert wird. View View View

Nächster Schritt

Siehe auch