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:
- Aktualisieren Sie Ihr App-Manifest.
- 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 die 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 authenticated
zurü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.
Administratoreinstellung 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 getContext
finden 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 |
anonymous stellt 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 "Unterhaltung erstellen" mit der Benutzer-ID eines anonymen Benutzers aufruft, erhält er den 400
Statuscode "Ungültige Anforderung" 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.
Die
getContext
API gibt 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.
Codebeispiel
Beispielname | Beschreibung | .NET | Node.js |
---|---|---|---|
Anonyme Benutzerunterstützung | Beispiel-App zum Anzeigen anonymer Benutzerunterstützung in Besprechungs-Apps. | View | View |