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 à :
- Mettez à jour le manifeste de votre application.
- 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 il ne s’agit pas de comptes Microsoft Entra.
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 administrateur 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 les 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 utilisateur d’un utilisateur anonyme, il reçoit un code d’état 400
de demande 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.
L’API
getContext
ne retourne pas d’ID d’utilisateur pour l’utilisateur anonyme, bien que les API du bot, et 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.
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 |