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 Microsoft Teams-Benutzer-IDs und Microsoft Azure Active Directory (Azure AD)-Informationen, z. B. Name und objectId. Sie können diese Informationen verwenden, um Benutzeridentitäten zu korrelieren. Beispielsweise, um zu überprüfen, ob ein Benutzer, der sich über Azure AD-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
        {
            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 zu einem oder mehreren Mitgliedern eines Chats oder Teams abzurufen, verwenden Sie derzeit 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 Microsoft Teams Benutzer-ID, UPN oder Azure AD-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)
    {
        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. Verwenden Sie derzeit zum Abrufen von Informationen für ein Team die Teams-Bot-APIs TeamsInfo.GetMemberDetailsAsync für C# oder TeamsInfo.getTeamDetails für TypeScript.

Abrufen von Teamdetails

Wenn Ihr Bot in einem Team installiert ist, kann er Metadaten zu diesem Team abfragen, einschließlich der Azure AD-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)
    {
        TeamDetails teamDetails = await TeamsInfo.GetTeamDetailsAsync(turnContext, turnContext.Activity.TeamsGetTeamInfo().Id, cancellationToken);
        if (teamDetails != null) {
            await turnContext.SendActivityAsync($"The groupId is: {teamDetails.AadGroupId}");
        }
        else {
            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. Verwenden Sie derzeit zum Abrufen von Informationen für eine Liste von Kanälen in einem Team 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
{
    protected override async Task OnMessageActivityAsync(ITurnContext<IMessageActivity> turnContext, CancellationToken cancellationToken)
    {
        IEnumerable<ChannelInfo> channels = await TeamsInfo.GetTeamChannelsAsync(turnContext, turnContext.Activity.TeamsGetTeamInfo().Id, cancellationToken);

        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:

Beispiel Beschreibung .NET JavaScript Python
Teams-Unterhaltungsbot Verarbeitung von Nachrichten- und Unterhaltungsereignissen. View View View
Authentifizierung mit OAuthPrompt Authentifizierung und grundlegendes Messaging in Bot Framework v4. View View View
Teams-Dateiupload Austauschen von Dateien mit einem Bot in einer 1:1-Unterhaltung. View View View
Aufgabenmodul Abrufen eines Aufgabenmoduls und von Darin enthaltenen Karten für eine Nachrichtenerweiterung. View View View
Starten eines neuen Threads in einem Kanal Erstellen eines neuen Threads in einem Kanal. View View View
Lokalisierung von Teams-Apps Teams-App-Lokalisierung mithilfe von Bot und Registerkarte. View View

Nächster Schritt

Siehe auch