Создание приложений для анонимных пользователей

Анонимные пользователи не имеют Microsoft Entra удостоверения и не объединяются в федерацию с клиентом. Анонимные участники являются внешними пользователями, но их удостоверение не отображается в собрании. Анонимный пользователь может быть выступающим или участником, но не может быть организатором. В приложении можно создавать ботов, расширения для обмена сообщениями, карточки и диалоговые окна (называемые модулями задач в TeamsJS версии 1.x) для взаимодействия с анонимными участниками собрания.

Примечание.

  • Приложения для анонимных пользователей поддерживаются в новых классических и мобильных клиентах Teams для Windows и Mac.
  • Приложения собраний для анонимных пользователей поддерживаются только в Microsoft Edge и Chrome.

Чтобы анонимные пользователи могли взаимодействовать с приложениями на собраниях Teams, выполните следующие действия:

  1. Обновите манифест приложения.
  2. Включите взаимодействие с анонимным пользовательским приложением в Центре администрирования 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 могут использовать Центр администрирования 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.

  • В настоящее время API не возвращает идентификатор пользователя для анонимного пользователя, getContext хотя api бота это делают, и невозможно сопоставить анонимного пользователя между этими двумя API.

  • Анонимные пользователи видят универсальный значок приложения в сообщениях и карточках бота вместо фактического значка приложения.

    Снимок экрана: отображение значка приложения для анонимного пользователя.

Пример кода

Название примера Описание .NET Node.js
Поддержка анонимных пользователей Пример приложения для отображения поддержки анонимных пользователей в приложениях для собраний. Просмотр Просмотр

Следующий этап

См. также