Integração do desenvolvedor com redirecionamento multimídia para aplicativos de chamada baseados em WebRTC em uma sessão remota
O redirecionamento de multimídia redireciona a reprodução de vídeo e chamadas em uma sessão remota da Área de Trabalho Virtual do Azure, um PC com Windows 365 Cloud ou Microsoft Dev Box para seu dispositivo local para processamento e renderização mais rápidos.
O redirecionamento de chamadas otimiza as chamadas de áudio para aplicativos de chamada baseados em WebRTC, reduzindo a latência e melhorando a qualidade das chamadas. A conexão acontece entre o dispositivo local e o servidor de aplicativo de telefonia, onde as chamadas WebRTC são descarregadas de uma sessão remota para um dispositivo local. Depois que a conexão é estabelecida, a qualidade da chamada torna-se dependente da página da Web ou dos provedores de aplicativos, assim como faria com uma chamada não redirecionada.
O redirecionamento de chamadas pode funcionar com a maioria dos aplicativos de chamada baseados em WebRTC sem modificações. No entanto, pode haver cenários sem suporte ou talvez você queira fornecer uma experiência diferente em uma sessão remota.
Este artigo fornece informações sobre interfaces de API e métodos de instância suportados e mostra trechos de código JavaScript que você pode usar com a mediaDevices
propriedade da interface Navigator.
A interface do navegador faz parte da API Media Capture and Streams para integrar o seu website com o redirecionamento de chamadas. Juntamente com a API WebRTC, essas APIs fornecem suporte para streaming de dados de áudio e vídeo com aplicativos de chamada baseados em WebRTC. O redirecionamento multimídia substitui a mediaDevices
implementação do objeto nas APIs para detetar o redirecionamento de chamadas, manipular eventos de desconexão e reconexão e coletar informações de diagnóstico.
Gorjeta
Quando quiser testar sua integração com o redirecionamento multimídia, você pode habilitar o redirecionamento de chamadas para estar disponível para todos os sites. Para obter mais informações, consulte Habilitar o redirecionamento de chamadas para todos os sites para teste.
Interfaces de API e métodos de instância suportados
O redirecionamento de chamadas foi projetado para substituir perfeitamente o uso padrão do WebRTC por uma implementação que redireciona chamadas de uma sessão remota para o dispositivo local.
Aqui está uma lista das interfaces suportadas e métodos de instância usados pelo redirecionamento de chamada da API Media Capture and Streams e da API WebRTC:
AnalyserNode
AudioContext
HTMLAudioElement
MediaDevices
MediaStream
MediaStreamAudioDestinationNode
MediaStreamAudioSourceNode
MediaStreamTrack
RTCDataChannel
RTCPeerConnection
RTCRtpReceiver
RTCRtpSender
RTCRtpTransceiver
Limitações conhecidas
O redirecionamento de chamada tem as seguintes limitações de API:
Atualmente, apenas um número limitado de nós é suportado
WebAudio
.setSinkId
em umHTMLAudioElement
funciona para faixas WebRTCsrcObject
, no entanto, qualquer reprodução local, como um toque, sempre é reproduzido na saída de áudio padrão da sessão remota.Como algumas APIs retornam de forma síncrona em condições normais, mas precisam ser proxies quando usadas com redirecionamento de chamada, é possível que o estado de um objeto não esteja disponível imediatamente.
Detetar redirecionamento de chamada
Para detetar se o redirecionamento de chamada está ativo, você pode verificar a isCallRedirectionEnabled
MediaDevices
propriedade do objeto. Se essa propriedade for true
, o redirecionamento de chamada estará ativo. Se essa propriedade for undefined
ou false
, o redirecionamento de chamada não estiver ativo.
window.navigator.mediaDevices['isCallRedirectionEnabled'] = true;
Detetar desconexão de uma sessão remota
Quando um usuário se desconecta e se reconecta a uma sessão remota ao usar o redirecionamento de chamada em uma página da Web, a instância WebRTC local que dava suporte aos objetos não está mais disponível. Normalmente, se um usuário atualizar a página, ele poderá fazer chamadas novamente.
A página da Web pode detetar e lidar com esses eventos de desconexão e reconexão derrubando e recriando todos os objetos WebRTC, elementos de áudio ou vídeo e MediaStream
/ou MediaStreamTrack
interfaces. Essa abordagem elimina a necessidade de atualizar a página da Web.
Para ser notificado desses eventos, registre o rdpClientConnectionStateChanged
MediaDevices
evento no objeto, conforme mostrado no exemplo a seguir. Esse evento contém o novo estado, que pode ser um connected
ou disconnected
.
navigator.mediaDevices.addEventListener('rdpClientConnectionStateChanged', () =>
console.log("state change: " + event.detail.state);
);
Diagnóstico de redirecionamento de chamadas
O exemplo a MediaDevices
seguir lista as propriedades expostas no objeto. Eles fornecem informações de diagnóstico específicas sobre as versões de redirecionamento de chamada que estão sendo usadas e identificadores de sessão. Essas informações são úteis ao relatar problemas à Microsoft e recomendamos que você as colete como parte de seus próprios dados de telemetria ou diagnóstico.
window.navigator.mediaDevices['mmrClientVersion'];
window.navigator.mediaDevices['mmrHostVersion'];
window.navigator.mediaDevices['mmrExtensionVersion'];
window.navigator.mediaDevices['activityId'];
window.navigator.mediaDevices['connectionId'];
Veja o que cada propriedade representa:
mmrClientVersion: a versão do arquivo
MsMmrDVCPlugin.dll
na máquina local, que vem como parte do Aplicativo do Windows e do aplicativo Área de Trabalho Remota.mmrHostVersion: a versão do arquivo
MsMMRHost.exe
instalado no host da sessão, Cloud PC ou caixa de desenvolvimento.mmrExtensionVersion: a versão da extensão Microsoft Multimedia Redirection em execução no navegador.
activityId: um identificador exclusivo que a Microsoft usa para associar telemetria a uma sessão específica e mapeia para o redirecionamento de multimídia da página da Web atual está redirecionando.
connectionId: um identificador exclusivo que a Microsoft usa para associar telemetria a uma sessão específica e se relaciona com a conexão fornecida entre o dispositivo local e a sessão remota.
Todas essas informações estão disponíveis para o usuário final nos detalhes da extensão do navegador, mas este exemplo fornece uma maneira programática de coletá-las.
Registros de redirecionamento de chamadas
Por padrão, o redirecionamento de multimídia não registra no console. A extensão do navegador tem um botão para os usuários coletarem logs. O exemplo a seguir mostra como você pode habilitar os logs do console programaticamente. Talvez você queira habilitar os logs do console programaticamente se estiver trabalhando na integração ou capturando um problema que exija logs de execução mais longos do que a opção na interface de extensão do navegador fornece.
window.navigator.mediaDevices['mmrConsoleLoggingEnabled'] = true;
Você também pode querer coletar programaticamente logs de redirecionamento de multimídia para ajudar nas investigações. Todos os logs para a página da Web também estão disponíveis registrando-se para o mmrExtensionLog
evento no documento.
O objeto de evento tem duas propriedades em detalhes:
Nível: indica que tipo de rastreamento é a entrada e permite filtrar eventos específicos. Level é um dos seguintes valores:
- informação
- verbose
- aviso
- error
Mensagem: a mensagem de rastreamento baseada em texto.
O exemplo a seguir mostra como se registrar no mmrExtensionLog
evento:
document.addEventListener('mmrExtensionLog', () =>
console.log("MMR event, level:" + event.detail.level + " : " + event.detail.message);
);
Conteúdos relacionados
Saiba mais sobre o redirecionamento multimídia para reprodução de vídeo e chamadas em uma sessão remota.