Compartilhar via


Integração de programadores com redirecionamento multimédia para aplicações de chamada baseadas em WebRTC numa sessão remota

O redirecionamento multimédia redireciona a reprodução de vídeo e as chamadas numa sessão remota a partir do Azure Virtual Desktop, de um PC na nuvem do Windows 365 ou do Microsoft Dev Box para o seu dispositivo local para processamento e composição mais rápidos.

O redirecionamento de chamadas otimiza as chamadas de áudio para aplicações de chamadas baseadas em WebRTC, reduzindo a latência e melhorando a qualidade das chamadas. A ligação ocorre entre o dispositivo local e o servidor de aplicações telefónicas, onde as chamadas WebRTC são descarregadas de uma sessão remota para um dispositivo local. Após a ligação ser estabelecida, a qualidade da chamada torna-se dependente da página Web ou dos fornecedores de aplicações, tal como faria com uma chamada não redirecionada.

O redirecionamento de chamadas pode funcionar com a maioria das aplicações de chamada baseadas em WebRTC sem modificações. No entanto, podem existir cenários não suportados ou poderá querer proporcionar uma experiência diferente numa sessão remota.

Este artigo fornece informações sobre interfaces de API suportadas e métodos de instância e mostra fragmentos de código JavaScript que pode utilizar com a mediaDevices propriedade da interface navegador.

A interface do navegador faz parte da API de Captura de Multimédia e Transmissões em Fluxo para integrar o seu site com o redirecionamento de chamadas. Juntamente com a API WebRTC, estas APIs fornecem suporte para transmissão em fluxo de dados de áudio e vídeo com aplicações de chamadas baseadas em WebRTC. O redirecionamento multimédia substitui a implementação do mediaDevices objeto nas APIs para detetar o redirecionamento de chamadas, processar eventos de desconexão e restabelecimento de ligação e recolher informações de diagnóstico.

Dica

Quando quiser testar a sua integração com o redirecionamento multimédia, pode ativar o redirecionamento de chamadas para estar disponível para todos os sites. Para obter mais informações, veja Ativar o redirecionamento de chamadas para todos os sites para testes.

Interfaces de API suportadas e métodos de instância

O redirecionamento de chamadas foi concebido para substituir de forma totalmente integrada a utilização padrão do WebRTC por uma implementação que redireciona as chamadas de uma sessão remota para o dispositivo local.

Eis uma lista das interfaces e métodos de instância suportados utilizados pelo redirecionamento de chamadas da API de Captura de Multimédia e fluxos e da API WebRTC:

Limitações conhecidas

O redirecionamento de chamadas tem as seguintes limitações da API:

  • Atualmente, só é suportado um número limitado de WebAudio nós.

  • setSinkId numa função HTMLAudioElement funciona para o WebRTC srcObject , no entanto, qualquer reprodução local, como um toque, é sempre reproduzida na saída de áudio predefinida da sessão remota.

  • À medida que algumas APIs regressam de forma síncrona em condições normais, mas têm de ser proxies quando utilizadas com o redirecionamento de chamadas, é possível que o estado de um objeto não esteja imediatamente disponível.

Detetar redirecionamento de chamadas

Para detetar se o redirecionamento de chamadas está ativo, pode marcar a isCallRedirectionEnabled propriedade do MediaDevices objeto. Se esta propriedade for true, o redirecionamento de chamadas está ativo. Se esta propriedade for undefined ou false, o redirecionamento de chamadas não está ativo.

window.navigator.mediaDevices['isCallRedirectionEnabled'] = true;

Detetar a desativação de uma sessão remota

Quando um utilizador desliga e volta a ligar a uma sessão remota ao utilizar o redirecionamento de chamadas numa página Web, a instância webRTC local que suportava os objetos já não está disponível. Normalmente, se um utilizador atualizar a página, poderá efetuar chamadas novamente.

A página Web pode detetar e processar estes eventos de desconexão e restabelecimento de ligação ao remover e recriar todos os objetos WebRTC, elementos de áudio ou vídeo e MediaStream ou MediaStreamTrack interfaces. Esta abordagem elimina a necessidade de atualizar a página Web.

Para receber notificações destes eventos, registe o rdpClientConnectionStateChanged evento no MediaDevices objeto, conforme mostrado no exemplo seguinte. Este evento contém o novo estado, que pode ser connected ou disconnected.

navigator.mediaDevices.addEventListener('rdpClientConnectionStateChanged', () => 
    console.log("state change: " + event.detail.state);
);

Redirecionamento de chamadas diagnóstico

O exemplo seguinte lista as propriedades expostas no MediaDevices objeto. Fornecem informações de diagnóstico específicas sobre as versões do redirecionamento de chamadas que estão a ser utilizadas e os identificadores de sessão. Estas informações são úteis ao comunicar problemas à Microsoft e recomendamos que as recolha como parte da sua própria telemetria ou diagnóstico dados.

window.navigator.mediaDevices['mmrClientVersion'];
window.navigator.mediaDevices['mmrHostVersion'];
window.navigator.mediaDevices['mmrExtensionVersion'];

window.navigator.mediaDevices['activityId'];
window.navigator.mediaDevices['connectionId'];

Eis o que cada propriedade representa:

  • mmrClientVersion: a versão do ficheiro MsMmrDVCPlugin.dll no computador local, que vem como parte do Windows App e da aplicação Ambiente de Trabalho Remoto.

  • mmrHostVersion: a versão do ficheiro MsMMRHost.exe instalado no anfitrião da sessão, no CLOUD PC ou na caixa de desenvolvimento.

  • mmrExtensionVersion: a versão da extensão de Redirecionamento Multimédia da Microsoft em execução no browser.

  • activityId: um identificador exclusivo que a Microsoft utiliza para associar telemetria a uma sessão específica e que mapeia para o redirecionamento multimédia da página Web atual está a redirecionar.

  • connectionId: um identificador exclusivo que a Microsoft utiliza para associar telemetria a uma sessão específica e está relacionado com a ligação especificada entre o dispositivo local e a sessão remota.

Todas estas informações estão disponíveis para o utilizador final nos detalhes da extensão do browser, mas este exemplo fornece uma forma programática de a recolher.

Registos de redirecionamento de chamadas

Por predefinição, o redirecionamento multimédia não inicia sessão na consola. A extensão do browser tem um botão para os utilizadores recolherem registos. O exemplo seguinte mostra como pode ativar os registos da consola programaticamente. Poderá querer ativar os registos da consola programaticamente se estiver a trabalhar na integração ou a capturar um problema que requer registos de execução mais longos do que a opção fornecida na interface de extensão do browser.

window.navigator.mediaDevices['mmrConsoleLoggingEnabled'] = true;

Também poderá querer recolher programaticamente registos de redirecionamento multimédia para ajudar nas investigações. Todos os registos da página Web também estão disponíveis ao registar-se no mmrExtensionLog evento no documento.

O objeto de evento tem duas propriedades em detalhe:

  • Nível: indica que tipo de rastreio é a entrada e permite-lhe filtrar eventos específicos. O nível é um dos seguintes valores:

    • informações
    • verboso
    • warning
    • erro
  • Mensagem: a mensagem de rastreio baseada em texto.

O exemplo seguinte mostra como se registar no mmrExtensionLog evento:

document.addEventListener('mmrExtensionLog', () =>
    console.log("MMR event, level:" + event.detail.level + " : " + event.detail.message);
);

Submeter o seu site para revisão ou pedido de assistência

Se representar um ISV e pretender que o seu site seja adicionado à lista de Sites para redirecionamento de chamadas ou se precisar de assistência para integrar o seu site com redirecionamento de chamadas, preencha e submeta este formulário.

Saiba mais sobre o redirecionamento multimédia para reprodução de vídeo e chamadas numa sessão remota.