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

Teams-Botbeispiele

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 In diesem Beispiel wird gezeigt, wie Verschiedene Botunterhaltungsereignisse verwendet werden, die in Bot Framework v4 für den persönlichen Bereich und den Teams-Bereich verfügbar sind. View View View View
Authentifizierung mit OAuthPrompt Dieses Beispiel zeigt die Authentifizierung und grundlegendes Messaging in Bot Framework v4. View View View View
Teams-Dateiupload In diesem Beispiel wird gezeigt, wie Dateien mit einem Bot in einer 1:1-Konversation verwendet werden. View View View View
Dialog (in TeamsJS v1.x als Aufgabenmodul bezeichnet) In diesem Beispiel wird gezeigt, wie Sie ein Dialogfeld und Werte aus Karten darin für eine Nachrichtenerweiterung verwenden. View View View View
Starten eines neuen Threads in einem Kanal In diesem Beispiel wird die Verwendung eines neuen Threads in einem Kanal mithilfe eines Bots veranschaulicht. View View View View
Lokalisierung von Teams-Apps In diesem Beispiel wird gezeigt, wie Sie die Lokalisierung von Teams-Apps mithilfe eines Bots und einer Registerkarte verwenden. View View View

Nächster Schritt

Siehe auch