Compartir a través de


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:

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 de HTMLAudioElement funciona para las pistas de WebRTC srcObject, 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);
);

Obtenga más información sobre el redireccionamiento multimedia para la reproducción de vídeo y las llamadas en una sesión remota.