Создание приложений для анонимных пользователей
Анонимные пользователи не имеют Microsoft Entra удостоверения и не объединяются в федерацию с клиентом. Анонимные участники являются внешними пользователями, но их удостоверение не отображается в собрании. Анонимный пользователь может быть выступающим или участником, но не может быть организатором. В приложении можно создавать ботов, расширения для обмена сообщениями, карточки и диалоговые окна (называемые модулями задач в TeamsJS версии 1.x) для взаимодействия с анонимными участниками собрания.
Примечание.
- Приложения для анонимных пользователей поддерживаются в новых классических и мобильных клиентах Teams для Windows и Mac.
- Приложения собраний для анонимных пользователей поддерживаются только в Microsoft Edge и Chrome.
Чтобы анонимные пользователи могли взаимодействовать с приложениями на собраниях Teams, выполните следующие действия:
- Обновите манифест приложения.
- Включите взаимодействие с анонимным пользовательским приложением в Центре администрирования Teams.
Обновление манифеста приложения для анонимных пользователей
Примечание.
Свойство supportsAnonymousGuestUsers
в схеме манифеста приложения версии 1.16 поддерживается только в новом клиенте Teams.
Чтобы разрешить анонимным пользователям взаимодействовать с приложением вкладки supportsAnonymousGuestUsers
, обновите свойство до true
в схеме манифеста приложения версии 1.16 или более поздней версии. Ниже приведен пример манифеста:
"meetingExtensionDefinition": {
"supportsAnonymousGuestUsers": true
}
Дополнительные сведения см. в разделе Схема манифеста приложения.
Поток проверки подлинности анонимного пользователя
Анонимные пользователи не могут пройти проверку подлинности с помощью Microsoft Entra проверки подлинности или getAuthToken
из клиентского пакета SDK, так как они не являются Microsoft Entra учетными записями.
getAuthToken
сбой для анонимных пользователей, возвращая ошибку useGetAuthToken: Failed with error - User is not authenticated
. Если вам нужно пройти проверку подлинности анонимных пользователей, приложение должно идентифицировать анонимных пользователей и предоставлять альтернативный интерфейс проверки подлинности на собраниях. Вы можете определить, является ли пользователь анонимным, проверив его контекст.
Администратор параметр для взаимодействия с анонимным пользовательским приложением
Администраторы могут использовать Центр администрирования Teams для включения или отключения взаимодействия с анонимными пользовательскими приложениями для всего клиента. Если анонимным пользователям требуется доступ к вашему приложению, убедитесь, что администраторы разрешают взаимодействие с анонимным пользовательским приложением. Этот параметр по умолчанию включен. Дополнительные сведения см . в статье Разрешение анонимным пользователям взаимодействовать с приложениями на собраниях.
Чтобы протестировать работу приложений для анонимных пользователей, выберите URL-адрес в приглашении на собрание и присоединитесь к собранию в частном окне браузера.
In-Meeting getContext из клиентской библиотеки Teams
Приложения получают следующие сведения для анонимного пользователя при вызове getContext
API из этапа общего приложения. Вы можете распознать анонимных пользователей, userLicenseType
проверив значение Anonymous
.
import * as microsoftTeams from "@microsoft/teams-js";
microsoftTeams.app.getContext().then((context) => {
if (context.user.licenseType === "Anonymous") {
// Add your custom logic here
}
});
Имя свойства | Описание |
---|---|
userObjectId |
Пустая строка для анонимного пользователя. |
userLicenseType |
Anonymous представляет анонимного пользователя. |
loginHint |
Пустая строка для анонимного пользователя. |
userPrincipalName |
Пустая строка для анонимного пользователя. |
Дополнительные сведения о getContext
см. в статье Получение контекста с помощью библиотеки JavaScript в Microsoft Teams.
Действия бота и API
С некоторыми различиями действия, отправленные боту, и ответы, которые он получает от API бота, согласованы между анонимными и неанонимными участниками собрания.
Получение участников и получение API-интерфейсов с одним участником
API получения участников и получения одного участника возвращают ограниченные сведения для анонимных пользователей:
{
"id": "<GUID1>",
"name": "<AnonTest (Guest)>",
"tenantId": "<GUID2>",
"userRole": "anonymous"
}
Имя свойства | Описание |
---|---|
id |
Уникальное созданное значение для анонимного пользователя. |
name |
Имя, предоставленное анонимным пользователем при присоединении к собранию. |
tenantId |
Идентификатор клиента организатора собрания. |
userRole |
anonymous представляет анонимного пользователя. |
Действия ConversationUpdate MembersAdded и 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
}
}
Примечание.
Когда анонимный пользователь присоединяется к собранию from
или покидает его, объект в полезных данных всегда имеет идентификатор организатора собрания, даже если это действие было выполнено кем-то другим.
Создание API беседы
Ботам не разрешено инициировать беседу с анонимным пользователем. Если бот вызывает API создания беседы с идентификатором пользователя анонимного пользователя, он получает код состояния "Неверный 400
запрос" и следующий ответ об ошибке:
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"
}
}
Адаптивные карточки
Анонимные пользователи могут просматривать адаптивные карточки и взаимодействовать с ними в чате собрания. Действия адаптивной карточки ведут себя одинаково для анонимных и неанонимных пользователей. Дополнительные сведения см. в разделе Действия с карточками.
Известные проблемы и ограничения
Приложения для анонимных пользователей не поддерживаются на платформах Live Event, инфраструктуры виртуальных рабочих столов (VDI) и Linux.
Приложения для анонимных пользователей не поддерживаются в браузерах Firefox и Safari.
Приложения для анонимных пользователей не поддерживаются в собраниях каналов Teams.
getContext
API не возвращает идентификатор пользователя для анонимного пользователя, хотя api бота это делают, и невозможно сопоставить анонимного пользователя между этими двумя API.Анонимные пользователи видят универсальный значок приложения в сообщениях и карточках бота вместо фактического значка приложения.
Пример кода
Название примера | Описание | .NET | Node.js |
---|---|---|---|
Поддержка анонимных пользователей | Пример приложения для отображения поддержки анонимных пользователей в приложениях для собраний. | Просмотр | Просмотр |
Следующий этап
См. также
Platform Docs