Erstellen von Apps für anonyme Benutzer

Anonyme Benutzer verfügen nicht über eine Microsoft Entra Identität und sind nicht mit einem Mandanten verbunden. Die anonymen Teilnehmer sind externe Benutzer, aber ihre Identität wird in der Besprechung nicht angezeigt. Ein anonymer Benutzer kann ein Referent oder ein Teilnehmer, aber kein Organisator sein. Sie können Bots, Messaging-Erweiterungen, Karten und Dialoge (in TeamsJS v1.x als Aufgabenmodule bezeichnet) in Ihrer App erstellen, um mit anonymen Besprechungsteilnehmern in Kontakt zu treten.

Hinweis

  • Apps für anonyme Benutzer werden in den neuen Teams-Desktop- und mobilen Clients für Windows und Mac unterstützt.
  • Besprechungs-Apps für anonyme Benutzer werden nur in Microsoft Edge und Chrome unterstützt.

Damit anonyme Benutzer mit den Apps in Teams-Besprechungen interagieren können, stellen Sie Folgendes sicher:

  1. Aktualisieren Sie Ihr App-Manifest.
  2. Aktivieren Sie die anonyme Benutzer-App-Interaktion im Teams Admin Center.

App-Manifestaktualisierung für anonyme Benutzer

Hinweis

Die supportsAnonymousGuestUsers -Eigenschaft im App-Manifestschema v1.16 wird nur im neuen Teams-Client unterstützt.

Damit anonyme Benutzer mit der Registerkarten-App interagieren können, aktualisieren Sie die supportsAnonymousGuestUsers -Eigenschaft true in Ihrem App-Manifestschema v1.16 oder höher auf. Es folgt ein Beispiel für das Manifest:

"meetingExtensionDefinition": {
    "supportsAnonymousGuestUsers": true
}

Weitere Informationen finden Sie unter App-Manifestschema.

Authentifizierungsablauf für anonyme Benutzer

Anonyme Benutzer können nicht über Microsoft Entra-Authentifizierung oder getAuthToken über das Client-SDK authentifiziert werden, da sie keine Microsoft Entra Konten sind. getAuthToken schlägt für anonyme Benutzer fehl, indem der Fehler useGetAuthToken: Failed with error - User is not authenticatedzurückgegeben wird. Wenn Sie anonyme Benutzer authentifizieren müssen, muss Ihre App anonyme Benutzer identifizieren und eine alternative Authentifizierungserfahrung in den Besprechungen bereitstellen. Sie können ermitteln, ob ein Benutzer anonym ist, indem Sie den Kontext des Benutzers überprüfen.

Admin Einstellung für anonyme Benutzer-App-Interaktion

Teams-Administratoren können das Teams Admin Center verwenden, um anonyme Benutzer-App-Interaktionen für den gesamten Mandanten zu aktivieren oder zu deaktivieren. Wenn anonyme Benutzer auf Ihre App zugreifen müssen, stellen Sie sicher, dass die Mandantenadministratoren die anonyme Benutzer-App-Interaktion aktivieren. Diese Einstellung ist standardmäßig aktiviert. Weitere Informationen finden Sie unter Zulassen der Interaktion anonymer Benutzer mit Apps in Besprechungen.

Um die App-Erfahrung für anonyme Benutzer zu testen, wählen Sie die URL in der Besprechungseinladung aus, und nehmen Sie in einem privaten Browserfenster an der Besprechung teil.

In-Meeting getContext aus der Teams-Clientbibliothek

Apps erhalten die folgenden Informationen für einen anonymen Benutzer, wenn er die getContext API aus der Phase der freigegebenen App aufruft. Sie können anonyme Benutzer erkennen, indem Sie nach dem userLicenseType Wert suchen Anonymous.

import * as microsoftTeams from "@microsoft/teams-js";

microsoftTeams.app.getContext().then((context) => {
    if (context.user.licenseType === "Anonymous") {
        // Add your custom logic here
    }
});
Eigenschaftenname Beschreibung
userObjectId Leere Zeichenfolge für anonyme Benutzer.
userLicenseType Anonymous stellt einen anonymen Benutzer dar.
loginHint Leere Zeichenfolge für anonyme Benutzer.
userPrincipalName Leere Zeichenfolge für anonyme Benutzer.

Weitere Informationen zu getContextfinden Sie unter Abrufen von Kontext mithilfe der Microsoft Teams JavaScript-Bibliothek.

Botaktivitäten und APIs

Mit einigen Unterschieden sind die an Ihren Bot gesendeten Aktivitäten und die Antworten, die er von Bot-APIs empfängt, zwischen anonymen und nicht anonymen Besprechungsteilnehmern konsistent.

Abrufen von Mitgliedern und Abrufen einzelner Member-APIs

Die APIs zum Abrufen von Mitgliedern und Abrufen einzelner Mitglieder geben eingeschränkte Informationen für anonyme Benutzer zurück:

{ 
  "id": "<GUID1>", 
  "name": "<AnonTest (Guest)>",  
  "tenantId": "<GUID2>", 
  "userRole": "anonymous" 
}
Eigenschaftenname Beschreibung
id Eindeutiger generierter Wert für den anonymen Benutzer.
name Der Name, der vom anonymen Benutzer bei der Teilnahme an der Besprechung angegeben wird.
tenantId Mandanten-ID des Besprechungsorganisators.
userRole anonymousstellt einen anonymen Benutzer dar.

ConversationUpdate-Aktivität MemberAdded und MembersRemoved

MembersAdded

protected override async Task OnTeamsMembersAddedAsync(IList<TeamsChannelAccount> membersAdded, TeamInfo teamInfo, ITurnContext<IConversationUpdateActivity> turnContext, CancellationToken cancellationToken)
  {
     foreach (var teamMember in membersAdded)
     {
         // If UserRole == "anonymous", it indicates an anonymous user
         if (teamMember.UserRole == "anonymous" )
          {
             // Add your custom logic here
          }
          else
          {
           // Add your custom logic here
          }
     }
  }

MembersRemoved

protected override async Task OnTeamsMembersRemovedAsync(IList<TeamsChannelAccount> membersRemoved, TeamInfo teamInfo, ITurnContext<IConversationUpdateActivity> turnContext, CancellationToken cancellationToken)
   foreach (var member in membersRemoved)
   {
      // If AadObjectId is null, it indicates an anonymous user
       if (member.AadObjectId == null)
       {
           // Add your custom logic here
       }
       else
       {
           // Add your custom logic here
       }
   }

Hinweis

Wenn ein anonymer Benutzer an einer Besprechung teilnimmt oder diese verlässt, verfügt das from Objekt in der Nutzlast immer über die ID des Besprechungsorganisators, auch wenn die Aktion von einer anderen Person ausgeführt wurde.

Erstellen einer Konversations-API

Bots dürfen keine 1:1-Unterhaltung mit einem anonymen Benutzer initiieren. Wenn ein Bot die API zum Erstellen von Unterhaltungen mit der Benutzer-ID eines anonymen Benutzers aufruft, erhält er eine 400 ungültige Anforderung status Code und die folgende Fehlerantwort:

var conversationParameters = new ConversationParameters
    {
       IsGroup = false,
       Bot = turnContext.Activity.Recipient,
       Members = new ChannelAccount[] { teamMember },
       TenantId = turnContext.Activity.Conversation.TenantId,
    };
    
    await ((CloudAdapter)turnContext.Adapter).CreateConversationAsync(
    conversationParameters,
    async (t1, c1) =>
    {
       conversationReference = t1.Activity.GetConversationReference();
       await ((CloudAdapter)turnContext.Adapter).ContinueConversationAsync(
       _appId,
       conversationReference,
       async (t2, c2) =>
       {
         await t2.SendActivityAsync(proactiveMessage, c2);
        },
        cancellationToken);
    },
cancellationToken);
{ 
  "error": {
    "code": "BadArgument",
    "message": "Bot cannot create a conversation with an anonymous user"
  }
} 

Adaptive Karten

Anonyme Benutzer können adaptive Karten im Besprechungschat anzeigen und damit interagieren. Adaptive Kartenaktionen verhalten sich für anonyme und nicht anonyme Benutzer genauso. Weitere Informationen finden Sie unter Kartenaktionen.

Bekannte Probleme und Einschränkungen

  • Apps für anonyme Benutzer werden auf Liveereignissen, virtuellen Desktopinfrastrukturen (VDI) und Linux-Plattformen nicht unterstützt.

  • Apps für anonyme Benutzer werden in Firefox- und Safari-Browsern nicht unterstützt.

  • Apps für anonyme Benutzer werden in Teams-Kanalbesprechungen nicht unterstützt.

  • Derzeit gibt die getContext API keine Benutzer-ID für den anonymen Benutzer zurück, obwohl die Bot-APIs dies tun, und es ist nicht möglich, den anonymen Benutzer zwischen diesen beiden APIs zu korrelieren.

  • Anonymen Benutzern wird ein generisches App-Symbol auf Botnachrichten und -Karten anstelle des tatsächlichen Symbols der App angezeigt.

    Screenshot: Anzeige des App-Symbols für anonyme Benutzer

Codebeispiel

Beispielname Beschreibung .NET Node.js
Anonyme Benutzerunterstützung Beispiel-App zum Anzeigen anonymer Benutzerunterstützung in Besprechungs-Apps. View Anzeigen

Nächster Schritt

Siehe auch