Modo Juntos

Este artigo descreve como implementar o Modo Conjunto do Microsoft Teams com SDKs de Chamada dos Serviços de Comunicação do Azure. O Modo Juntos melhora as reuniões e chamadas virtuais, tornando-as mais pessoais. Ao criar uma visão unificada que coloca todos em um plano de fundo compartilhado, os participantes podem se conectar perfeitamente e colaborar de forma eficaz.

Importante

Esta funcionalidade dos Serviços de Comunicação do Azure está atualmente em pré-visualização. Os recursos na visualização estão disponíveis publicamente e podem ser usados por todos os clientes novos e existentes da Microsoft.

Esta versão de pré-visualização é fornecida sem um contrato de nível de serviço e não a recomendamos para cargas de trabalho de produção. Determinadas funcionalidades podem não ser suportadas ou recursos podem ser restringidos.

Para obter mais informações, veja Termos Suplementares de Utilização para Pré-visualizações do Microsoft Azure.

Suporte

As tabelas a seguir definem o suporte para o Modo Conjunto nos Serviços de Comunicação do Azure.

Identidades e tipos de chamada

A tabela a seguir mostra o suporte para tipos de chamada e identidade.

Identidades Reunião de equipas Sala Chamada 1:1 Chamada em grupo Chamada de interoperabilidade 1:1 das equipes Chamada de interoperabilidade de equipes de grupo
Utilizador dos Serviços de Comunicação ✔️ ✔️ ✔️
Utilizador do Microsoft 365 ✔️ ✔️ ✔️

Operações

A tabela a seguir mostra o suporte para APIs individuais em Chamando SDK para tipos de identidade individuais.

Operações Utilizador dos Serviços de Comunicação Utilizador do Microsoft 365
Iniciar o fluxo do Modo Juntos ✔️ [1]
Fluxo do modo Get Together ✔️ ✔️
Obter tamanho de cena ✔️ ✔️
Obter mapa de assentos ✔️ ✔️
Mudar de cena
Alterar atribuição de assento

[1] O Modo Iniciar Juntos só pode ser chamado por um utilizador do Microsoft 365 com a função de organizador, coorganizador ou apresentador.

SDKs

A tabela a seguir mostra o suporte para o recurso Modo Conjunto em SDKs individuais dos Serviços de Comunicação do Azure.

Plataformas Sítio Web IU da Web iOS Interface do usuário do iOS Androide Interface do usuário do Android Mac OS
É suportado ✔️

Instale o SDK

Use o comando npm install para instalar o SDK Comum e de Chamada dos Serviços de Comunicação do Azure para JavaScript.

npm install @azure/communication-common --save
npm install @azure/communication-calling --save

Inicializar objetos necessários

Uma CallClient instância é necessária para a maioria das operações de chamada. Ao criar uma nova CallClient instância, você pode configurá-la com opções personalizadas, como uma Logger instância.

Com a instância CallClient, podes criar uma instância CallAgent chamando o createCallAgent. Esse método retorna de forma assíncrona um objeto de CallAgent instância.

O createCallAgent método usa CommunicationTokenCredential como argumento. Ele aceita um token de acesso de usuário.

Você pode usar o método getDeviceManager na instância CallClient para acessar deviceManager.

const { CallClient } = require('@azure/communication-calling');
const { AzureCommunicationTokenCredential} = require('@azure/communication-common');
const { AzureLogger, setLogLevel } = require("@azure/logger");

// Set the logger's log level
setLogLevel('verbose');

// Redirect log output to console, file, buffer, REST API, or whatever location you want
AzureLogger.log = (...args) => {
    console.log(...args); // Redirect log output to console
};

const userToken = '<USER_TOKEN>';
callClient = new CallClient(options);
const tokenCredential = new AzureCommunicationTokenCredential(userToken);
const callAgent = await callClient.createCallAgent(tokenCredential, {displayName: 'optional Azure Communication Services user name'});
const deviceManager = await callClient.getDeviceManager()

Gerenciar a conectividade do SDK com a infraestrutura da Microsoft

A Call Agent instância ajuda você a gerenciar chamadas (para ingressar ou iniciar chamadas). Para funcionar, seu SDK de chamada precisa se conectar à infraestrutura da Microsoft para receber notificações de chamadas recebidas e coordenar outros detalhes da chamada. O seu Call Agent tem dois estados possíveis:

Conectado - Um Call Agent valor connectionStatue significa que o SDK do Connected cliente está conectado e é capaz de receber notificações da infraestrutura da Microsoft.

Desconectado - Um valor de Call Agent estadoConexão de Disconnected indica que há um problema a impedir que o SDK se conecte corretamente. Call Agent deve ser recriado.

  • invalidToken: Se um token expirou ou é inválido Call Agent , a instância se desconecta com esse erro.
  • connectionIssue: Se houver um problema com o cliente se conectando à infraestrutura da Microsoft, depois de muitas novas tentativas Call Agent expõe o erro connectionIssue.

Você pode verificar se seu local Call Agent está conectado à infraestrutura da Microsoft inspecionando o valor atual da connectionState propriedade. Durante uma chamada ativa, você pode ouvir o connectionStateChanged evento para determinar se Call Agent muda do estado Conectado para Desconectado.

const connectionState = callAgentInstance.connectionState;
console.log(connectionState); // it may return either of 'Connected' | 'Disconnected'

const connectionStateCallback = (args) => {
    console.log(args); // it will return an object with oldState and newState, each of having a value of either of 'Connected' | 'Disconnected'
    // it will also return reason, either of 'invalidToken' | 'connectionIssue'
}
callAgentInstance.on('connectionStateChanged', connectionStateCallback);

Implementar o Modo Together

O Modo Conjunto é um recurso estendido da API principal Call . Primeiro, você precisa importar recursos de chamada do SDK de chamada:

import { Features} from "@azure/communication-calling";

Em seguida, você pode obter o objeto da API do Modo Conjunto da instância de chamada:

const togetherModeFeature = call.feature(Features.TogetherMode);

Receber eventos quando a transmissão do Modo Conjunto começa ou é atualizada.

Pode subscrever ao evento togetherModeStreamsUpdated para receber notificações quando o Modo Together é iniciado ou atualizado. O evento contém informações sobre como renderizar o fluxo de vídeo adicionado.

// event : { added: TogetherModeVideoStream[]; removed: TogetherModeVideoStream[] }
togetherModeFeature.on('togetherModeStreamsUpdated', (event) => {
    event.added.forEach(async stream => {
        // stream can be rendered as a remote video stream
    });
});

Fluxo do modo Get Together

Você pode acessar os fluxos do Modo Juntos através da propriedade togetherModeStream.

const togetherModeStreams = togetherModeFeature.togetherModeStream;
Propriedades do fluxo do Together Mode Descrição
id Número único usado para identificar o fluxo.
mediaStreamType Retorna o tipo de fluxo do Modo Juntos. O valor de mediaStreamType é sempre video.
isReceiving Retorna um valor booleano que indica se os pacotes de vídeo são recebidos.
size Retorna o Modo Conjunto StreamSize com informações sobre a largura e a altura do fluxo em pixels.

Modo Iniciar Juntos para todos os participantes

Os usuários do Microsoft 365 com organizador de função, coorganizador ou apresentador podem iniciar o Modo Conjunto para todos na reunião. Quando o Modo Juntos é iniciado, todos os subscritores do evento togetherModeStreamsUpdated recebem uma notificação que permite aos participantes ativar o Modo Juntos.

togetherModeFeature.start();

Modo Terminar Juntos

O Modo Conjunto termina automaticamente para todos os participantes se nenhum fluxo de vídeo for detetado de qualquer participante por um minuto. Não há API para encerrar o Modo Juntos.

Obter coordenadas dos participantes no Modo Juntos

A propriedade togetherModeSeatingMap fornece coordenadas para participantes individuais no fluxo. Os desenvolvedores podem usar essas coordenadas para sobrepor informações do participante, como nome de exibição ou recursos visuais, como destaque, mão levantada e reações no fluxo.

// returns Map<string, TogetherModeSeatingPosition>
// where the  key is the participant ID
// and value of type TogetherModeSeatingPosition is the position relative to the sceneSize
// TogetherModeSeatingPosition {
//   top: number;
//   left: number;
//   width: number;
//   height: number;
// }
const seatingMap = togetherModeFeature.togetherModeSeatingMap;

Gerir o tamanho da cena

A sceneSize propriedade especifica as dimensões (largura e altura) do contêiner HTML que abriga o togetherMode fluxo de vídeo. As posições sentadas dos participantes são calculadas com base nas dimensões do tamanho da cena. Se o tamanho da cena não for fornecido, o cálculo assume como padrão uma largura de 1.280 pixels e uma altura de 720 pixels.

const togetherModeContainerSize = { width: 500, height: 500 };

// To set the scene size
togetherModeFeature.sceneSize = togetherModeContainerSize;

// To get the scene size
console.log(`Current scene has the following size: ${JSON.stringify(togetherModeFeature.sceneSize )}`)

Receba eventos quando o cenário ou os assentos forem atualizados

Nota

Somente usuários do Microsoft 365 com organizador de função, coorganizador ou apresentador podem alterar a cena ou a atribuição de participantes no Modo Juntos. Estas alterações só podem ser feitas a partir do Cliente Teams.

Se houver uma mudança de cena ou de assento, os eventos togetherModeSceneUpdated ou togetherModeSeatingUpdated serão desencadeados, respetivamente, fornecendo um cálculo atualizado das posições dos assentos dos participantes.

const seatUpdate = (participantSeatingMap) => {
    participantSeatingMap.forEach((participantID, seatingCoordinates) => {
        console.log(`User with ID: ${participantID} has new coordinates ${JSON.stringify(seatingCoordinates)} `)
    })
}

togetherModeFeature.on('togetherModeSceneUpdated', seatUpdate);
togetherModeFeature.on('togetherModeSeatingUpdated', seatUpdate);

Resolução de Problemas

Código Subcódigo Categoria de Resultado Razão Resolução
403 46303 ErroEsperado A função do participante não tem as permissões necessárias para chamar a togetherMode API de início. Somente os usuários do Microsoft 365 com organizador de função, coorganizador ou apresentador podem iniciar o Modo Conjunto. Você pode verificar a função de um usuário via propriedade role na instância da classe Call.
403 46304 ErroEsperado O Modo Conjunto foi iniciado num cenário de chamada não suportado. Certifique-se de que o Modo Conjunto é iniciado apenas em cenários de chamada de grupo ou reunião.
403 46306 ErroEsperado API do Modo Juntos start chamada por um utilizador dos Serviços de Comunicação do Azure. Somente os usuários do Microsoft 365 com organizador de função, coorganizador ou apresentador podem iniciar o Modo Conjunto.

Próximos passos