Integración del desarrollador con redireccionamiento multimedia para aplicaciones de llamadas basadas en WebRTC en una sesión remota
El redireccionamiento multimedia redirige la reproducción de vídeo y las llamadas en una sesión remota desde Azure Virtual Desktop, un PC en la nube de Windows 365 o Microsoft Dev Box al dispositivo local para un procesamiento y una representación más rápidos.
El redireccionamiento de llamadas optimiza las llamadas de audio para las aplicaciones de llamadas basadas en WebRTC, lo que reduce la latencia y mejora la calidad de las llamadas. La conexión se produce entre el dispositivo local y el servidor de aplicaciones de telefonía, donde las llamadas WebRTC se descargan de una sesión remota a un dispositivo local. Después de establecer la conexión, la calidad de las llamadas depende del sitio web o de los proveedores de la aplicación, tal como sucedería con una llamada no redirigida.
El redireccionamiento de llamadas puede funcionar con la mayoría de las aplicaciones de llamadas basadas en WebRTC sin modificaciones. Pero puede haber escenarios no admitidos o es posible que quiera proporcionar otra experiencia en una sesión remota.
En este artículo se proporciona información sobre las interfaces de API admitidas y los métodos de instancia, y se muestran los fragmentos de código de JavaScript que puede usar con la propiedad mediaDevices
de la interfaz de Navigator.
La interfaz del navegador forma parte de Media Capture and Streams API para integrar el sitio web con el redireccionamiento de llamadas. Junto con WebRTC API, estas API proporcionan compatibilidad para transmitir datos de audio y vídeo con aplicaciones de llamadas basadas en WebRTC. El redireccionamiento multimedia reemplaza la implementación del objeto mediaDevices
en las API para detectar el redireccionamiento de llamadas, controlar los eventos de desconexión y reconexión, y recopilar información de diagnóstico.
Sugerencia
Cuando quiera probar la integración con el redireccionamiento multimedia, puede habilitar el redireccionamiento de llamadas a fin de que esté disponible para todos los sitios web. Para más información, vea Habilitación del redireccionamiento de llamadas para todos los sitios para realizar pruebas.
Interfaces de API y métodos de instancia admitidos
El redireccionamiento de llamadas está diseñado para reemplazar sin problemas el uso estándar de WebRTC por una implementación que redirige las llamadas de una sesión remota al dispositivo local.
Esta es una lista de las interfaces admitidas y los métodos de instancia usados por el redireccionamiento de llamadas de Media Capture and Streams API y WebRTC API:
AnalyserNode
AudioContext
HTMLAudioElement
MediaDevices
MediaStream
MediaStreamAudioDestinationNode
MediaStreamAudioSourceNode
MediaStreamTrack
RTCDataChannel
RTCPeerConnection
RTCRtpReceiver
RTCRtpSender
RTCRtpTransceiver
Restricciones conocidas
El redireccionamiento de llamadas tiene las siguientes limitaciones de API:
Actualmente solo se admite un número limitado de nodos
WebAudio
.setSinkId
en una instancia deHTMLAudioElement
funciona para las pistas de WebRTCsrcObject
, pero cualquier reproducción local, como un tono de llamada, siempre se reproduce en la salida de audio predeterminada de la sesión remota.Como algunas API devuelven resultados de forma sincrónica en condiciones normales, pero deben ser servidores proxy cuando se usan con el redireccionamiento de llamadas, es posible que el estado de un objeto no esté disponible inmediatamente.
Detección del redireccionamiento de llamadas
Para detectar si el redireccionamiento de llamadas está activo, puede comprobar la propiedad isCallRedirectionEnabled
del objeto MediaDevices
. Si esta propiedad es true
, el redireccionamiento de llamadas está activo. Si esta propiedad es undefined
o false
, el redireccionamiento de llamadas no está activo.
window.navigator.mediaDevices['isCallRedirectionEnabled'] = true;
Detección de la desconexión de una sesión remota
Cuando un usuario se desconecta y vuelve a conectarse a una sesión remota mientras se usa el redireccionamiento de llamadas en una página web, la instancia local de WebRTC que admitía los objetos ya no está disponible. Normalmente, si un usuario actualiza la página, puede volver a realizar llamadas.
La página web puede detectar y controlar estos eventos de desconexión y reconexión al anular y volver a crear todos los objetos WebRTC, elementos de audio o vídeo, e interfaces MediaStream
o MediaStreamTrack
. Este enfoque elimina la necesidad de actualizar la página web.
Para recibir notificaciones de estos eventos, registre el evento rdpClientConnectionStateChanged
en el objeto MediaDevices
, como se muestra en el ejemplo siguiente. Este evento contiene el nuevo estado, que puede ser connected
o disconnected
.
navigator.mediaDevices.addEventListener('rdpClientConnectionStateChanged', () =>
console.log("state change: " + event.detail.state);
);
Diagnósticos de redireccionamiento de llamadas
En el ejemplo siguiente se enumeran las propiedades expuestas en el objeto MediaDevices
. Proporcionan información de diagnóstico específica sobre las versiones de redireccionamiento de llamadas que se usan y los identificadores de sesión. Esta información es útil al notificar problemas a Microsoft y se recomienda recopilarla como parte de los datos propios de telemetría o diagnóstico.
window.navigator.mediaDevices['mmrClientVersion'];
window.navigator.mediaDevices['mmrHostVersion'];
window.navigator.mediaDevices['mmrExtensionVersion'];
window.navigator.mediaDevices['activityId'];
window.navigator.mediaDevices['connectionId'];
Esto es lo que representa cada propiedad:
mmrClientVersion: la versión del archivo
MsMmrDVCPlugin.dll
en el equipo local, que se incluye como parte de la aplicación de Windows y la aplicación de Escritorio remoto.mmrHostVersion: la versión del archivo
MsMMRHost.exe
instalado en el host de sesión, PC en la nube o el equipo de desarrollo.mmrExtensionVersion: la versión de la extensión de redireccionamiento multimedia de Microsoft que se ejecuta en el explorador.
activityId: un identificador único que Microsoft usa para asociar la telemetría a una sesión específica y se asigna al redireccionamiento multimedia de página web actual.
connectionId: un identificador único que Microsoft usa para asociar la telemetría a una sesión específica y se relaciona con la conexión dada entre el dispositivo local y la sesión remota.
Toda esta información está disponible para el usuario final en los detalles de la extensión del explorador, pero en este ejemplo se proporciona una manera de recopilarla mediante programación.
Registros de redireccionamiento de llamadas
De manera predeterminada, el redireccionamiento multimedia no inicia sesión en la consola. La extensión del explorador tiene un botón para que los usuarios recopilen registros. En el ejemplo siguiente, se explica cómo se pueden habilitar los registros de consola mediante programación. Es posible que quiera habilitar los registros de consola mediante programación si trabaja en la integración o va a capturar un problema que requiere registros de ejecución más largos que los que proporciona la opción de la interfaz de extensión del explorador.
window.navigator.mediaDevices['mmrConsoleLoggingEnabled'] = true;
Es posible que también quiera recopilar registros de redireccionamiento multimedia mediante programación para facilitar las investigaciones. Todos los registros de la página web también están disponibles si se registra el evento mmrExtensionLog
en el documento.
El objeto de evento tiene dos propiedades en detalle:
Nivel: indica qué tipo de seguimiento es la entrada y le permite filtrar por eventos específicos. Es uno de los siguientes valores:
- info
- detallado
- general,
- error
Mensaje: mensaje de seguimiento basado en texto.
En el siguiente ejemplo, se muestra cómo registrar el evento mmrExtensionLog
:
document.addEventListener('mmrExtensionLog', () =>
console.log("MMR event, level:" + event.detail.level + " : " + event.detail.message);
);
Contenido relacionado
Obtenga más información sobre el redireccionamiento multimedia para la reproducción de vídeo y las llamadas en una sesión remota.