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
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 el cadena de conexión para crear un usuario y un token de acceso. (Deberá obtener la cadena de conexión del recurso a través de Azure Portal).
az communication identity token issue --scope voip --connection-string "yourConnectionString"
Para más información, consulte Uso de la CLI de Azure para crear y administrar tokens de acceso.
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 callClient
aprovisionar 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.