Share via


Diagnóstico previo a la llamada

Importante

Esta característica de Azure Communication Services se encuentra actualmente en versión preliminar.

Las API y los SDK en versión preliminar se proporcionan sin contrato de nivel de servicio. Se recomienda no usarlos para las cargas de trabajo de producción. Es posible que algunas características no sean compatibles o que sus funcionalidades estén limitadas.

Para obtener más información, consulte Términos de uso complementarios para las Versiones preliminares de Microsoft Azure.

La API de llamada previa permite a los desarrolladores validar mediante programación la preparación de un cliente para que se una a una llamada de Azure Communication Services. Se puede acceder a las API de llamada previa mediante el SDK de llamadas. Proporcionan varios diagnósticos, como el dispositivo, la conexión y la calidad de las llamadas. Las API de llamada previa solo están disponibles para Web (JavaScript). Vamos a habilitar estas funcionalidades en todas las plataformas en el futuro, nos proporcionará comentarios sobre las plataformas en las que quiere ver las API previas a la llamada.

Requisitos previos

Acceso a las API de llamada previa

Importante

Los diagnósticos previos a la llamada están disponibles a partir de la versión 1.9.1-beta.1 del SDK de llamadas. Asegúrese de usar esa versión al intentar las instrucciones siguientes.

Para acceder a la API de llamada previa, debe inicializar y callClientaprovisionar un token de acceso de Azure Communication Services. En él puede acceder a la característica PreCallDiagnostics y al método startTest.

import { CallClient, Features} from "@azure/communication-calling";
import { AzureCommunicationTokenCredential } from '@azure/communication-common';

const callClient = new CallClient(); 
const tokenCredential = new AzureCommunicationTokenCredential("INSERT ACCESS TOKEN");
const preCallDiagnosticsResult = await callClient.feature(Features.PreCallDiagnostics).startTest(tokenCredential);

Una vez que termine de ejecutarse, los desarrolladores pueden acceder al objeto resultante.

Resultados del diagnóstico

La API de llamada previa devuelve un diagnóstico completo del dispositivo, incluidos detalles como los permisos del dispositivo, la disponibilidad y compatibilidad, las estadísticas de calidad de llamadas y los diagnósticos durante las llamadas. Los resultados se devuelven como un objeto PreCallDiagnosticsResult.


export declare type PreCallDiagnosticsResult  = {
    deviceAccess: Promise<DeviceAccess>;
    deviceEnumeration: Promise<DeviceEnumeration>;
    inCallDiagnostics: Promise<InCallDiagnostics>;
    browserSupport?: Promise<DeviceCompatibility>;
    id: string;
    callMediaStatistics?: Promise<MediaStatsCallFeature>;
};

Se puede tener acceso a objetos de resultado individuales como tal mediante la preCallDiagnosticsResult constante . Los resultados de las pruebas individuales se devuelven a medida que se completan con muchos de los resultados de la prueba que están disponibles inmediatamente. Si usa la inCallDiagnostics prueba, los resultados pueden tardar hasta 1 minuto, ya que la prueba valida la calidad del vídeo y el audio.

Compatibilidad con exploradores

Comprobación de la compatibilidad con el explorador. Comprueba si Browser y OS son compatibles y devuelve un valor Supported o NotSupported.


const browserSupport =  await preCallDiagnosticsResult.browserSupport;
  if(browserSupport) {
    console.log(browserSupport.browser)
    console.log(browserSupport.os)
  }

En caso de que se produzca un error en la prueba y el explorador que usa el usuario sea NotSupported, la manera más fácil de corregirlo es pidiendo al usuario que cambie a un explorador compatible. Consulte los exploradores compatibles en nuestra documentación.

Nota:

Problema conocido: prueba browser support que devuelve Unknown en los casos en los que debe devolver un valor correcto.

Acceso del dispositivo

Comprobación de permisos. Comprueba si los dispositivos de audio y vídeo están disponibles desde una perspectiva de permisos. Proporciona el valor boolean para los dispositivos audio y video.


  const deviceAccess =  await preCallDiagnosticsResult.deviceAccess;
  if(deviceAccess) {
    console.log(deviceAccess.audio)
    console.log(deviceAccess.video)
  }

En caso de que se produzca un error en la prueba y que los permisos tengan el valor "false" para audio y vídeo, el usuario no debe continuar trabajando para unirse a una llamada. En su lugar, debe solicitar al usuario que habilite los permisos. Para ello, se proporciona la mejor manera de proporcionar la instrucción específica sobre cómo acceder al acceso a permisos en función del sistema operativo, la versión y el explorador en los que se encuentran. Para obtener más información sobre los permisos, consulte nuestras recomendaciones.

Enumeración de dispositivos

Disponibilidad del dispositivo. Comprueba si los dispositivos de micrófono, cámara y altavoz se detectan en el sistema y están listos para usarse. Devuelve un valor Available o NotAvailable.


  const deviceEnumeration = await preCallDiagnosticsResult.deviceEnumeration;
  if(deviceEnumeration) {
    console.log(deviceEnumeration.microphone)
    console.log(deviceEnumeration.camera)
    console.log(deviceEnumeration.speaker)
  }

En caso de que los dispositivos no estén disponibles, el usuario no debe continuar con la unión a una llamada. En su lugar, se debe solicitar al usuario que compruebe las conexiones del dispositivo para asegurarse de que los auriculares, las cámaras o los altavoces estén conectados correctamente. Para más información sobre la administración de dispositivos, consulte nuestra documentación.

Diagnósticos durante la llamada

Realiza una llamada rápida para comprobar las métricas de las llamadas de audio y vídeo y proporciona los resultados. Incluye la conectividad (connected, booleana), la calidad de ancho de banda (bandWidth, 'Bad' | 'Average' | 'Good') y los diagnósticos de llamadas para audio y vídeo (diagnostics). Se proporcionan los diagnósticos jitter, packetLoss y rtt, y los resultados se generan mediante una calidad sencilla ('Bad' | 'Average' | 'Good').

Los diagnósticos de InCall usan estadísticas de calidad multimedia para calcular las puntuaciones de calidad y diagnosticar problemas. Durante el diagnóstico previo a la llamada, el conjunto completo de estadísticas de calidad de los elementos multimedia está disponible para su consumo. Estas estadísticas incluyen valores sin procesar en métricas de audio y vídeo que se pueden usar mediante programación. El diagnóstico durante la llamada proporciona una capa de conveniencia sobre las estadísticas de calidad multimedia para poder usar los resultados sin necesidad de procesar todos los datos sin procesar. Consulte la sección sobre estadísticas multimedia para obtener instrucciones de acceso.


  const inCallDiagnostics =  await preCallDiagnosticsResult.inCallDiagnostics;
  if(inCallDiagnostics) {    
    console.log(inCallDiagnostics.connected)
    console.log(inCallDiagnostics.bandWidth)
    console.log(inCallDiagnostics.diagnostics.audio)
    console.log(inCallDiagnostics.diagnostics.video)
  }

En este paso, hay varios puntos de error que se deben tener en cuenta. Los valores que la API proporciona se basan en los valores de umbral que requiere el servicio. Esos umbrales sin procesar se pueden encontrar en nuestra documentación de estadísticas de calidad de medios.

  • Si se produce un error en la conexión, se le pedirá al usuario que vuelva a comprobar su conectividad de red. Los errores de conexión también se pueden atribuir a condiciones de red como DNS, servidores proxy o firewalls. Para obtener más información sobre la configuración de red recomendada, consulte nuestra documentación.
  • Si el ancho de banda es Bad, se le pedirá al usuario que pruebe otra red o compruebe la disponibilidad del ancho de banda actual. Asegúrese de que no se realicen otras actividades que consuman demasiado ancho de banda.

Estadísticas multimedia

Para obtener estadísticas pormenorizadas sobre métricas de calidad como la vibración, la pérdida de paquetes, rtt, etc., callMediaStatistics se proporcionan como parte de la característica preCallDiagnosticsResult. Consulte la lista completa y la descripción de las métricas disponibles en el artículo vinculado. Puede suscribirse a las estadísticas de llamada multimedia para obtener la recopilación completa de ellas. Esta estadística es las métricas sin procesar que se usan para calcular los resultados de diagnóstico de InCall y que se pueden consumir de forma granular para un análisis posterior.


const mediaStatsCollector = callMediaStatistics.startCollector(); 

mediaStatsCollector.on('mediaStatsEmitted', (mediaStats: SDK.MediaStats) => { 
    // process the stats for the call. 
    console.log(mediaStats);
});

Precios

Cuando se ejecuta la prueba de diagnóstico previo a la llamada, usa los minutos de la llamada para ejecutar el diagnóstico en segundo plano. La prueba dura aproximadamente 30 segundos y usa un máximo de 30 segundos de llamada que se cobra a la tarifa estándar de 0,004 USD por participante y por minuto. En el caso del diagnóstico previo a la llamada, el cargo será de 1 participante x 30 segundos = 0,002 USD.

Pasos siguientes