Créer des applications pour les utilisateurs anonymes

Les utilisateurs anonymes n’ont pas d’identité Microsoft Entra et ne sont pas fédérés avec un locataire. Les participants anonymes sont des utilisateurs externes, mais leur identité n’est pas affichée dans la réunion. Un utilisateur anonyme peut être un présentateur ou un participant, mais pas un organisateur. Vous pouvez créer des bots, des extensions de messagerie, des cartes et des dialogues (appelés modules de tâche dans TeamsJS v1.x) dans votre application pour interagir avec les participants anonymes à la réunion.

Remarque

  • Les applications pour les utilisateurs anonymes sont prises en charge dans les nouveaux clients mobiles et de bureau Teams pour Windows et Mac.
  • Les applications de réunion pour les utilisateurs anonymes sont uniquement prises en charge dans Microsoft Edge et Chrome.

Pour que les utilisateurs anonymes interagissent avec les applications dans les réunions Teams, veillez à :

  1. Mettez à jour le manifeste de votre application.
  2. Activez l’interaction de l’application utilisateur anonyme dans le Centre d’administration Teams.

Mise à jour du manifeste d’application pour les utilisateurs anonymes

Remarque

La supportsAnonymousGuestUsers propriété dans le schéma de manifeste d’application v1.16 est prise en charge uniquement dans le nouveau client Teams.

Pour permettre aux utilisateurs anonymes d’interagir avec l’application onglet, mettez à jour la supportsAnonymousGuestUsers propriété vers true dans le schéma de manifeste de votre application version 1.16 ou ultérieure. Voici un exemple de manifeste :

"meetingExtensionDefinition": {
    "supportsAnonymousGuestUsers": true
}

Pour plus d’informations, consultez Schéma de manifeste d’application.

Flux d’authentification utilisateur anonyme

Les utilisateurs anonymes ne peuvent pas être authentifiés via l’authentification Microsoft Entra ou getAuthToken à partir du Kit de développement logiciel (SDK) client, car ils ne sont pas Microsoft Entra comptes. getAuthToken échoue pour les utilisateurs anonymes en retournant l’erreur useGetAuthToken: Failed with error - User is not authenticated. Si vous avez besoin d’authentifier des utilisateurs anonymes, votre application doit identifier les utilisateurs anonymes et fournir une autre expérience d’authentification dans les réunions. Vous pouvez déterminer si un utilisateur est anonyme en validant le contexte de l’utilisateur.

paramètre de Administration pour l’interaction de l’application utilisateur anonyme

Les administrateurs Teams peuvent utiliser le Centre d’administration Teams pour activer ou désactiver l’interaction de l’application utilisateur anonyme pour l’ensemble du locataire. Si des utilisateurs anonymes doivent accéder à votre application, assurez-vous que les administrateurs de locataire activent l’interaction de l’application utilisateur anonyme. Ce paramètre est activé par défaut. Pour plus d’informations, consultez Autoriser les utilisateurs anonymes à interagir avec les applications dans les réunions.

Pour tester l’expérience de vos applications pour les utilisateurs anonymes, sélectionnez l’URL dans l’invitation à la réunion et rejoignez la réunion à partir d’une fenêtre de navigateur privé.

In-Meeting getContext à partir de la bibliothèque de client Teams

Les applications reçoivent les informations suivantes pour un utilisateur anonyme lorsqu’ils appellent l’API getContext à partir de la phase d’application partagée. Vous pouvez reconnaître les utilisateurs anonymes en recherchant une userLicenseType valeur de Anonymous.

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

microsoftTeams.app.getContext().then((context) => {
    if (context.user.licenseType === "Anonymous") {
        // Add your custom logic here
    }
});
Nom de la propriété Description
userObjectId Chaîne vide pour l’utilisateur anonyme.
userLicenseType Anonymous représente un utilisateur anonyme.
loginHint Chaîne vide pour l’utilisateur anonyme.
userPrincipalName Chaîne vide pour l’utilisateur anonyme.

Pour plus d’informations sur getContext, consultez Obtenir le contexte à l’aide de la bibliothèque JavaScript Microsoft Teams.

Activités et API du bot

Avec quelques différences, les activités envoyées à votre bot et les réponses qu’il reçoit des API de bot sont cohérentes entre les participants anonymes et non anonymes à la réunion.

Obtenir des membres et obtenir des API à membre unique

Les API obtenir des membres et obtenir un seul membre retournent des informations limitées pour les utilisateurs anonymes :

{ 
  "id": "<GUID1>", 
  "name": "<AnonTest (Guest)>",  
  "tenantId": "<GUID2>", 
  "userRole": "anonymous" 
}
Nom de la propriété Description
id Valeur générée unique pour l’utilisateur anonyme.
name Nom fourni par l’utilisateur anonyme lors de la participation à la réunion.
tenantId ID de locataire de l’organisateur de la réunion.
userRole anonymous, représente un utilisateur anonyme.

ConversationUpdate, activité MembersAdded et 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
       }
   }

Remarque

Lorsqu’un utilisateur anonyme rejoint ou quitte une réunion, l’objet from dans la charge utile a toujours l’ID de l’organisateur de la réunion, même si l’action a été effectuée par quelqu’un d’autre.

Créer une API de conversation

Les bots ne sont pas autorisés à lancer une conversation en face à face avec un utilisateur anonyme. Si un bot appelle l’API Créer une conversation avec l’ID d’utilisateur d’un utilisateur anonyme, il reçoit un 400 code de status de requête incorrecte et la réponse d’erreur suivante :

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"
  }
} 

Cartes adaptatives

Les utilisateurs anonymes peuvent afficher et interagir avec les cartes adaptatives dans la conversation de réunion. Les actions de carte adaptative se comportent de la même façon pour les utilisateurs anonymes et non anonymes. Pour plus d’informations, consultez Actions de carte.

Problèmes connus et conseils

  • Les applications pour les utilisateurs anonymes ne sont pas prises en charge sur les événements en direct, l’infrastructure VDI (Virtual Desktop Infrastructure) et les plateformes Linux.

  • Les applications pour les utilisateurs anonymes ne sont pas prises en charge sur les navigateurs Firefox et Safari.

  • Les applications pour les utilisateurs anonymes ne sont pas prises en charge dans les réunions de canal Teams.

  • Actuellement, l’API getContext ne retourne pas d’ID d’utilisateur pour l’utilisateur anonyme, bien que les API du bot le fassent et qu’il n’est pas possible de mettre en corrélation l’utilisateur anonyme entre ces deux API.

  • Les utilisateurs anonymes voient une icône d’application générique sur les messages et les cartes du bot, au lieu de l’icône réelle de l’application.

    Capture d’écran montrant comment l’icône de l’application s’affiche pour l’utilisateur anonyme.

Exemple de code

Exemple de nom Description .NET Node.js
Prise en charge des utilisateurs anonymes Exemple d’application pour afficher la prise en charge des utilisateurs anonymes dans les applications de réunion. View View

Étape suivante

Voir aussi