Diagnóstico previo a llamadas
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 característica de API previa a la llamada 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. Solo puede acceder a las características previas a la llamada mediante el SDK de llamadas. La característica de diagnóstico previo a llamadas proporciona varios diagnósticos, como el dispositivo, la conexión y la calidad de las llamadas. La característica diagnostica de previo a llamadas solo está disponible para Web (JavaScript). Tenemos previsto habilitar estas funcionalidades en todas las plataformas en el futuro. Proporcione comentarios sobre en qué plataformas quiere ver habilitados los diagnósticos previos a llamadas.
Requisitos previos
Una cuenta de Azure con una suscripción activa. Cree una cuenta gratuita.
Node.js se recomiendan las versiones de soporte técnico a largo plazo (LTS) activas.
Recurso activo de Communication Services. Creación de un recurso de Communication Services.
Token de acceso de usuario para crear una instancia del cliente de llamada. Aprenda cómo crear y administrar token de acceso de usuarios. También puede usar la CLI de Azure y ejecutar el siguiente comando con la cadena de conexión para crear un usuario y un token de acceso. Recuerde copiar la cadena de conexión del recurso a través de Azure Portal.
az communication identity token issue --scope voip --connection-string "yourConnectionString"
Para obtener más información, consulte Uso de la Interfaz de la línea de comandos de Azure para crear y administrar tokens de acceso.
Acceso al diagnóstico previo a la llamada
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 o una posterior cuando siga estas instrucciones.
Para acceder al diagnóstico previo a la llamada, debe inicializar un callClient
, y proporcionar un token de acceso a 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
Los diagnósticos previos a la llamada devuelven 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>;
};
Puede acceder a objetos de resultado individuales mediante el tipo preCallDiagnosticsResult
. Los resultados de las pruebas individuales se devuelven a medida que se completen y muchos de los resultados de las pruebas estarán disponibles de inmediato. Si usa la prueba inCallDiagnostics
, los resultados pueden tardar hasta 1 minuto, ya que la prueba valida la calidad del vídeo y el audio.
Compatibilidad con navegadores
Comprobación de la compatibilidad con el explorador. Comprueba la compatibilidad de Browser
y OS
y devuelve un valor Supported
o NotSupported
.
const browserSupport = await preCallDiagnosticsResult.browserSupport;
if(browserSupport) {
console.log(browserSupport.browser)
console.log(browserSupport.os)
}
Si se produce 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 admitidos en Información general sobre el SDK de llamada > Compatibilidad de SDK de llamada de JavaScript según el sistema operativo y el explorador.
Nota:
Problema conocido: prueba browser support
que devuelve Unknown
en los casos en los que debe devolver un valor correcto.
Acceso del dispositivo
La comprobación de permiso determina 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)
}
Si se produce 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, solicite al usuario que habilite los permisos. La mejor forma de hacer esto es proporcionar instrucciones específicas sobre cómo acceder a los permisos en función del sistema operativo, la versión y el explorador que usan. Para obtener más información sobre permisos, consulte la Lista de comprobación de experiencias avanzadas de llamadas en exploradores web.
Enumeración de dispositivos
Disponibilidad del dispositivo. Compruebe 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)
}
Si los dispositivos no están disponibles, el usuario no debe continuar trabajando para unirse a una llamada. En su lugar, solicite 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 obtener más información sobre la administración de dispositivos, consulte Administrar vídeo durante las llamadas.
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
). Las categorías de diagnóstico proporcionadas incluyen jitter
, packetLoss
y rtt
, y los resultados se generan mediante una calidad sencilla ('Bad' | 'Average' | 'Good'
).
Los diagnósticos durante la llamada usa estadísticas de calidad de los elementos 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 formato en las métricas de vídeo y audio que puede 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. Para obtener más información, incluidas las instrucciones de acceso, consulte Estadísticas de calidad multimedia para una llamada en curso.
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 posibles. 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 nuestras estadísticas de calidad de medios.
- Si se produce un error en una conexión, pídale a los usuarios que vuelvan 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 Recomendaciones de red.
- Si el ancho de banda es
Bad
, pídale a los usuario que prueben otra red o comprueben la disponibilidad del ancho de banda actual. Asegúrese de que no se realicen otras actividades que consumen demasiado ancho de banda.
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 tiempo 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 es de 1 participante x 30 segundos = 0,002 USD.