Criar aplicações para utilizadores anónimos
Os utilizadores anónimos não têm uma identidade do Microsoft Entra e não estão federados com um inquilino. Os participantes anónimos são utilizadores externos, mas a respetiva identidade não é apresentada na reunião. Um utilizador anónimo pode ser um apresentador ou participante, mas não pode ser um organizador. Pode criar bots, extensões de mensagens, cartões e caixas de diálogo (referidos como módulos de tarefas no TeamsJS v1.x) na sua aplicação para interagir com participantes anónimos da reunião.
Observação
- As aplicações para utilizadores anónimos são suportadas nos novos clientes móveis e de ambiente de trabalho do Teams para Windows e Mac.
- As aplicações de reunião para utilizadores anónimos só são suportadas no Microsoft Edge e no Chrome.
Para que os utilizadores anónimos interajam com as aplicações em reuniões do Teams, certifique-se de que:
- Atualize o manifesto da aplicação.
- Ative a interação da aplicação de utilizador anónimo no centro de administração do Teams.
Atualização do manifesto de aplicação para utilizadores anónimos
Observação
A supportsAnonymousGuestUsers
propriedade no esquema de manifesto da aplicação v1.16 é suportada apenas no novo cliente do Teams.
Para permitir que os utilizadores anónimos interajam com a aplicação de separador, atualize a supportsAnonymousGuestUsers
propriedade para true
no esquema de manifesto da aplicação v1.16 ou posterior. Segue-se um exemplo do manifesto:
"meetingExtensionDefinition": {
"supportsAnonymousGuestUsers": true
}
Para obter mais informações, veja esquema de manifesto de aplicação.
Fluxo de autenticação de utilizador anónimo
Os utilizadores anónimos não podem ser autenticados através da autenticação Microsoft Entra ou getAuthToken
do SDK do cliente, uma vez que não são contas do Microsoft Entra.
getAuthToken
falha para utilizadores anónimos ao devolver o erro useGetAuthToken: Failed with error - User is not authenticated
. Se precisar de autenticar utilizadores anónimos, a sua aplicação tem de identificar utilizadores anónimos e fornecer uma experiência de autenticação alternativa nas reuniões. Pode determinar se um utilizador é anónimo ao validar o contexto do utilizador.
Definição de administrador para interação da aplicação de utilizador anónimo
Os administradores do Teams podem utilizar o centro de administração do Teams para ativar ou desativar a interação da aplicação de utilizador anónimo para todo o inquilino. Se os utilizadores anónimos precisarem de aceder à sua aplicação, certifique-se de que os administradores de inquilinos ativam a interação da aplicação de utilizador anónimo. Essa configuração é habilitada por padrão. Para obter mais informações, consulte Permitir que utilizadores anónimos interajam com aplicações em reuniões.
Para testar a experiência das aplicações para utilizadores anónimos, selecione o URL no convite da reunião e participe na reunião a partir de uma janela privada do browser.
In-Meeting getContext da biblioteca de cliente do Teams
As aplicações recebem as seguintes informações para um utilizador anónimo quando chamam a API a getContext
partir da fase da aplicação partilhada. Pode reconhecer utilizadores anónimos ao verificar se há um userLicenseType
valor de Anonymous
.
import * as microsoftTeams from "@microsoft/teams-js";
microsoftTeams.app.getContext().then((context) => {
if (context.user.licenseType === "Anonymous") {
// Add your custom logic here
}
});
Nome da propriedade | Descrição |
---|---|
userObjectId |
Cadeia vazia para utilizador anónimo. |
userLicenseType |
Anonymous representa o utilizador anónimo. |
loginHint |
Cadeia vazia para utilizador anónimo. |
userPrincipalName |
Cadeia vazia para utilizador anónimo. |
Para obter mais informações sobre getContext
o , consulte Obter contexto com a biblioteca JavaScript do Microsoft Teams.
Atividades e APIs do bot
Com algumas diferenças, as atividades enviadas para o bot e as respostas que recebe das APIs do bot são consistentes entre participantes anónimos e não anónimos na reunião.
Obter membros e obter APIs de membro único
As APIs get get e get single member devolvem informações limitadas para utilizadores anónimos:
{
"id": "<GUID1>",
"name": "<AnonTest (Guest)>",
"tenantId": "<GUID2>",
"userRole": "anonymous"
}
Nome da propriedade | Descrição |
---|---|
id |
Valor gerado exclusivo para o utilizador anónimo. |
name |
Nome fornecido pelo utilizador anónimo ao participar na reunião. |
tenantId |
ID do inquilino do organizador da reunião. |
userRole |
anonymous representa o utilizador anónimo. |
ConversationUpdate activity MembersAdded and 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
}
}
Observação
Quando um utilizador anónimo entra ou sai de uma reunião, o from
objeto no payload tem sempre o ID do organizador da reunião, mesmo que a ação tenha sido tomada por outra pessoa.
Criar API de Conversação
Os bots não podem iniciar uma conversação um-para-um com um utilizador anónimo. Se um bot chamar a API Criar Conversação com o ID de utilizador de um utilizador anónimo, recebe um 400
código de estado Pedido Incorreto e a seguinte resposta de erro:
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"
}
}
Cartões Adaptáveis
Os utilizadores anónimos podem ver e interagir com Cartões Ajustáveis na conversa da reunião. As ações do Cartão Adaptável comportam-se da mesma forma para utilizadores anónimos e não anónimos. Para obter mais informações, veja Ações de cartões.
Limitações e problemas conhecidos
As aplicações para utilizadores anónimos não são suportadas em eventos em direto, infraestrutura de ambiente de trabalho virtual (VDI) e plataformas Linux.
As aplicações para utilizadores anónimos não são suportadas nos browsers Firefox e Safari.
As aplicações para utilizadores anónimos não são suportadas em reuniões de canal do Teams.
A
getContext
API não devolve um ID de utilizador para o utilizador anónimo, embora as APIs do bot o façam e não é possível correlacionar o utilizador anónimo entre estas duas APIs.Os utilizadores anónimos veem um ícone genérico da aplicação em mensagens e cartões de bot, em vez do ícone real da aplicação.
Exemplo de código
Nome do exemplo | Descrição | .NET | Node.js |
---|---|---|---|
Suporte de utilizador anónimo | Aplicação de exemplo para mostrar suporte de utilizador anónimo em aplicações de reunião. | View | View |