Compartir vía


Diagnósticos orientados al usuario

Al trabajar con llamadas en Azure Communication Services, es posible que encuentre problemas que afecten a los clientes. Para ayudar con esto, Azure Communication Services proporciona una característica denominada "Diagnósticos orientados al usuario" (UFD) que se puede usar para examinar varias propiedades de una llamada para determinar cuál podría ser el problema. Diagnósticos orientados al usuario son eventos que se desencadenan y que podrían indicar, debido a algún problema subyacente (red deficiente, el usuario tiene su micrófono silenciado), que un usuario podría tener una mala experiencia. Después de activar Diagnósticos orientados al usuario, debe considerar la posibilidad de enviar comentarios al usuario final que pueda estar teniendo algún problema subyacente. Sin embargo, la salida de Diagnóstico orientado al usuario solo es informativa y la pila de llamadas no realiza ningún cambio en función del diagnóstico orientado al usuario que se desencadena.

Valores de diagnóstico

Están disponibles los siguientes diagnósticos orientados al usuario:

Valores de red

Nombre Descripción Valores posibles Casos de uso Pasos de mitigación
noNetwork No hay red disponible. - Se establece en True cuando no se puede iniciar una llamada porque no hay red disponible.
- Se establece en False cuando hay candidatos ICE.
El dispositivo no está conectado a una red. Asegúrese de que la llamada tiene una conexión a Internet confiable que permita mantener una llamada de voz. Para más información, consulte la sección Optimización de red.
networkRelaysNotReachable Problemas con una red. - Se establece en True cuando la red tiene alguna restricción que no le permite acceder a las retransmisiones de Azure Communication Services.
- Se establece en False al hacer una llamada nueva.
Durante una llamada cuando la señal WiFi es intermitente. Asegúrese de que las reglas de firewall y el enrutamiento de red permiten que el cliente llegue a los servidores TURN de Microsoft. Para obtener más información, consulta la sección Configuración de firewall.
networkReconnect Se perdió la conexión y nos estamos reconectando a la red. - Se establece en Bad cuando se desconecta la red.
- Se establece en Poor cuando se pierde la conectividad del transporte de medios.
- Se establece en Good cuando se desconecta una sesión nueva.
Ancho de banda reducido, sin Internet Asegúrese de que la llamada tiene una conexión a Internet confiable que permita mantener una llamada de voz. Para más información, consulte la sección Requisitos de ancho de banda de red.
networkReceiveQuality Indicador relacionado con la calidad de la secuencia entrante. - Se establece en Bad cuando hay un problema grave al recibir la secuencia.
- Se establece en Poor cuando hay un problema leve al recibir la secuencia.
- Se establece en Good cuando no hay ningún problema al recibir la secuencia.
Ancho de banda bajo Asegúrese de que la llamada tiene una conexión a Internet confiable que permita mantener una llamada de voz. Para más información, consulte la sección Requisitos de ancho de banda de red. Sugiera al usuario final que desactive su cámara para conservar el ancho de banda de Internet disponible.
networkSendQuality Indicador relativo a la calidad del flujo saliente. - Se establece en Bad cuando hay un problema grave al enviar la secuencia.
- Se establece en Poor cuando hay un problema de gravedad media al enviar la secuencia.
- Se establece en Good cuando no hay ningún problema con el envío de la secuencia.
Ancho de banda bajo Asegúrese de que la llamada tiene una conexión a Internet confiable que permita mantener una llamada de voz. Para más información, consulte la sección Requisitos de ancho de banda de red. Además, sugiera que el usuario final desactive su cámara para conservar el ancho de banda de Internet disponible.

Valores de audio

Nombre Descripción Valores posibles Casos de uso Pasos de mitigación
noSpeakerDevicesEnumerated No hay ningún dispositivo de salida de audio (altavoz) en el sistema del usuario. - Se establece en True cuando no hay ningún dispositivo de altavoz en el sistema y se admite la selección del altavoz.
- Se establece en False cuando hay al menos un dispositivo de altavoz en el sistema y se admite la selección del altavoz.
Todos los altavoces están desconectados Cuando el valor se establece en True, considere la posibilidad de enviar una notificación visual al usuario final de que su sesión de llamada actual no tiene ningún hablante disponible.
speakingWhileMicrophoneIsMuted El usuario habla mientras está silenciado. - Se establece en True cuando el micrófono local está silenciado y el usuario local está hablando.
- Se establece en False cuando el usuario local deja de hablar o activa el sonido del micrófono.
* Nota: Actualmente esta opción no se admite en Safari porque las muestras de nivel de audio se toman de las estadísticas de WebRTC.
Durante una llamada, habla mientras tiene silenciado el micrófono. Cuando el valor se establece en True, considere la posibilidad de proporcionar una notificación visual al usuario final de que podría estar hablando sin darse cuenta de que su audio está silenciado.
noMicrophoneDevicesEnumerated No hay dispositivos de captura de audio (micrófono) en el sistema del usuario. - Se establece en True cuando no hay dispositivos de micrófono en el sistema.
- Se establece en False cuando hay al menos un dispositivo de micrófono en el sistema.
Todos los micrófonos se desconectan durante la llamada. Cuando el valor se establece en True, considere la posibilidad de enviar una notificación visual al usuario final de que su sesión de llamada actual no tiene micrófono. Para obtener más información, consulte la sección Habilitar el micrófono desde el administrador de dispositivos.
microphoneNotFunctioning El micrófono no funciona. - Se establece en True cuando no se puede iniciar el envío de la secuencia de audio local porque es posible que el dispositivo de micrófono esté deshabilitado en el sistema o si lo usa otro proceso. Este UFD tarda unos 10 segundos en activarse.
- Se establece en False cuando el micrófono empieza a enviar nuevamente la secuencia de audio de manera correcta.
No hay micrófonos disponibles, el acceso al micrófono está deshabilitado en el sistema. Cuando el valor se establece en True, se envía una notificación visual al usuario final de que hay un problema con el micrófono.
microphoneMuteUnexpectedly Se silenció el micrófono. - Se establece en True cuando el micrófono se silencia de manera inesperada.
- Se establece en False cuando el micrófono empieza a enviar la secuencia de audio correctamente.
El micrófono está silenciado desde el sistema. La mayoría de los casos se produce cuando el usuario está en una llamada de Azure Communication Services en un dispositivo móvil y entra una llamada telefónica. En la mayoría de los casos, el sistema operativo silencia la llamada de Azure Communication Services para que el usuario pueda responder a la llamada telefónica. Cuando el valor se establece en True, se envía una notificación visual al usuario final de que la llamada se ha silenciado porque entró una llamada de teléfono. Vea la sección cómo controlar cuando El sistema operativo silencia una llamada de Azure Communication Services para obtener más detalles.
microphonePermissionDenied El volumen del dispositivo está bajo o casi en silencio en macOS. - Se establece en True cuando la configuración del sistema (audio) deniega el permiso de audio.
- Se establece en False al adquirir correctamente la secuencia.
Nota: Este diagnóstico solo funciona en macOS.
Los permisos de micrófono están deshabilitados en Configuración. Cuando el valor se establece en True, se envía una notificación visual al usuario final de que no se habilitó el permiso para usar el micrófono para una llamada de Azure Communication Services.

Valores de cámara

Nombre Descripción Valores posibles Casos de uso Pasos de mitigación
cameraFreeze La cámara deja de generar fotogramas durante más de 5 segundos. - Se establece en True cuando se detiene la secuencia de vídeo local. Esto significa que el lado remoto ve el vídeo inmovilizado en su pantalla o que los participantes remotos no ven su vídeo en pantalla.
- Se establece en False cuando finaliza la inmovilización y los usuarios pueden ver el vídeo de manera normal.
La cámara paró durante la llamada o una red insuficiente hizo que se inmovilizara. Cuando el valor se establece en True, considere la posibilidad de enviar una notificación al usuario final de que la red de participantes remotos podría ser mala y podría sugerirle que apague la cámara para ahorrar ancho de banda. Vea la sección Requisitos de ancho de banda de red para obtener más detalles sobre las capacidades de Internet necesarias para una llamada de Azure Communication Services.
cameraStartFailed Error genérico de la cámara. - Se establece en True cuando no se puede iniciar el envío de vídeo local porque es posible que el dispositivo de cámara esté deshabilitado en el sistema o si lo usa otro proceso.
- Se establece en False cuando el dispositivo de cámara seleccionado vuelve a enviar vídeo local correctamente.
Errores de la cámara Cuando el valor se establece en True, se envía una notificación visual al usuario final de que no se pudo iniciar la cámara.
cameraStartTimedOut Escenario común en el que la cámara está en mal estado. - Se establece en True cuando se agotó el tiempo de espera del dispositivo de cámara para empezar a enviar la secuencia de vídeo.
- Se establece en False cuando el dispositivo de cámara seleccionado vuelve a enviar vídeo local correctamente.
Errores de la cámara Cuando el valor se establece en True, se envía una notificación visual al usuario final de que la cámara quizá tenga problemas. (Cuando se vuelve a establecer el valor en False, se quita la notificación).
cameraPermissionDenied Se denegaron los permisos de cámara en la configuración. - Se establece en True cuando la configuración del sistema (video) deniega el permiso de cámara.
- Se establece en False al adquirir correctamente la secuencia.
Nota: Este diagnóstico solo funciona en macOS Chrome.
Los permisos de cámara están deshabilitados en Configuración. Cuando el valor se establece en True, se envía una notificación visual al usuario final de que no habilitó el permiso para usar la cámara para una llamada de Azure Communication Services.
cameraStoppedUnexpectedly Funcionamiento incorrecto de la cámara - Se establece en True cuando la cámara entra en estado detenido inesperadamente.
- Se establece en False cuando la cámara empieza a enviar nuevamente la secuencia de vídeo de manera correcta.
Compruebe que la cámara funciona correctamente. Cuando el valor se establece en True, se envía una notificación visual al usuario final de que la cámara quizá tenga problemas. (Cuando se vuelve a establecer el valor en False, se quita la notificación).

Otros valores

Nombre Descripción Valores posibles Casos de uso Pasos para la mitigación
screenshareRecordingDisabled Las preferencias en Configuración deniegan el uso compartido de la pantalla del sistema. - Se establece en True cuando la configuración del sistema (uso compartido) deniega el permiso para el uso compartido de la pantalla.
- Se establece en False al adquirir correctamente la secuencia.
Nota: Este diagnóstico solo funciona en macOS.Chrome.
La grabación de pantalla está deshabilitada en Configuración. Cuando el valor se establece en True, se envía una notificación visual al usuario final de que no se habilitó el permiso para compartir su pantalla para una llamada de Azure Communication Services.
capturerStartFailed Error al compartir la pantalla del sistema. - Se establece en True cuando no se puede iniciar la captura de la pantalla.
- Se establece en False cuando la captura de la pantalla se puede iniciar correctamente.
Cuando el valor se establece en True, se envía una notificación visual al usuario final de que posiblemente haya un problema al compartir la pantalla. (Cuando se vuelve a establecer el valor en False, se quita la notificación).
capturerStoppedUnexpectedly Funcionamiento incorrecto del uso compartido de la pantalla del sistema - Se establece en True cuando el capturador de pantalla entra en estado detenido inesperadamente.
- Se establece en False cuando el capturador de pantalla reinicia la operación de captura correctamente.
Comprobar que el uso compartido de la pantalla funciona correctamente Cuando el valor se establece en True, se envía una notificación visual al usuario final de que posiblemente haya un problema que hace que se detenga el uso compartido de la pantalla. (Cuando se vuelve a establecer el valor en False, se quita la notificación).

Acceso a los diagnósticos

Los diagnósticos orientados al usuario son una característica extendida de la API Call principal que le permiten diagnosticar una llamada activa.

const userFacingDiagnostics = call.feature(Features.UserFacingDiagnostics);

Eventos de diagnóstico orientados al usuario

  • Suscríbase al evento diagnosticChanged para supervisar cuándo cambia cualquier diagnóstico orientado al usuario.
/**
 *  Each diagnostic has the following data:
 * - diagnostic is the type of diagnostic, e.g. NetworkSendQuality, DeviceSpeakWhileMuted, etc...
 * - value is DiagnosticQuality or DiagnosticFlag:
 *     - DiagnosticQuality = enum { Good = 1, Poor = 2, Bad = 3 }.
 *     - DiagnosticFlag = true | false.
 * - valueType = 'DiagnosticQuality' | 'DiagnosticFlag'
 */
const diagnosticChangedListener = (diagnosticInfo: NetworkDiagnosticChangedEventArgs | MediaDiagnosticChangedEventArgs) => {
    console.log(`Diagnostic changed: ` +
        `Diagnostic: ${diagnosticInfo.diagnostic}` +
        `Value: ${diagnosticInfo.value}` +
        `Value type: ${diagnosticInfo.valueType}`);

    if (diagnosticInfo.valueType === 'DiagnosticQuality') {
        if (diagnosticInfo.value === DiagnosticQuality.Bad) {
            console.error(`${diagnosticInfo.diagnostic} is bad quality`);

        } else if (diagnosticInfo.value === DiagnosticQuality.Poor) {
            console.error(`${diagnosticInfo.diagnostic} is poor quality`);
        }

    } else if (diagnosticInfo.valueType === 'DiagnosticFlag') {
        if (diagnosticInfo.value === true) {
            console.error(`${diagnosticInfo.diagnostic}`);
        }
    }
};

userFacingDiagnostics.network.on('diagnosticChanged', diagnosticChangedListener);
userFacingDiagnostics.media.on('diagnosticChanged', diagnosticChangedListener);

Obtención de los últimos diagnósticos orientados al usuario

  • Obtenga los últimos valores de diagnóstico que se generaron. Si no se definió un diagnóstico es porque nunca se generó.
const latestNetworkDiagnostics = userFacingDiagnostics.network.getLatest();

console.log(
  `noNetwork: ${latestNetworkDiagnostics.noNetwork.value}, ` +
    `value type = ${latestNetworkDiagnostics.noNetwork.valueType}`
);

console.log(
  `networkReconnect: ${latestNetworkDiagnostics.networkReconnect.value}, ` +
    `value type = ${latestNetworkDiagnostics.networkReconnect.valueType}`
);

console.log(
  `networkReceiveQuality: ${latestNetworkDiagnostics.networkReceiveQuality.value}, ` +
    `value type = ${latestNetworkDiagnostics.networkReceiveQuality.valueType}`
);

const latestMediaDiagnostics = userFacingDiagnostics.media.getLatest();

console.log(
  `speakingWhileMicrophoneIsMuted: ${latestMediaDiagnostics.speakingWhileMicrophoneIsMuted.value}, ` +
    `value type = ${latestMediaDiagnostics.speakingWhileMicrophoneIsMuted.valueType}`
);

console.log(
  `cameraStartFailed: ${latestMediaDiagnostics.cameraStartFailed.value}, ` +
    `value type = ${latestMediaDiagnostics.cameraStartFailed.valueType}`
);

console.log(
  `microphoneNotFunctioning: ${latestMediaDiagnostics.microphoneNotFunctioning.value}, ` +
    `value type = ${latestMediaDiagnostics.microphoneNotFunctioning.valueType}`
);

Valores de diagnóstico

Están disponibles los siguientes diagnósticos orientados al usuario:

Valores de red

Nombre Descripción Valores posibles Casos de uso Pasos de mitigación
networkUnavailable No hay red disponible. - Se establece en True cuando no se puede iniciar una llamada porque no hay red disponible.
- Se establece en False cuando hay candidatos ICE.
El dispositivo no está conectado a una red. Asegúrese de que la llamada tiene una conexión a Internet confiable que permita mantener una llamada de voz. Para más información, consulte la sección Optimización de red.
networkRelaysUnreachable Problemas con una red. - Se establece en True cuando la red tiene alguna restricción que no le permite acceder a las retransmisiones de Azure Communication Services.
- Se establece en False al hacer una llamada nueva.
Durante una llamada cuando la señal WiFi es intermitente. Asegúrese de que las reglas de firewall y el enrutamiento de red permiten que el cliente llegue a los servidores TURN de Microsoft. Para obtener más información, consulta la sección Configuración de firewall.
networkReconnectionQuality Se perdió la conexión y nos estamos reconectando a la red. - Se establece en Bad cuando se desconecta la red.
- Se establece en Poor cuando se pierde la conectividad del transporte de medios.
- Se establece en Good cuando se desconecta una sesión nueva.
Ancho de banda reducido, sin Internet Asegúrese de que la llamada tiene una conexión a Internet confiable que permita mantener una llamada de voz. Para más información, consulte la sección Requisitos de ancho de banda de red.
networkReceiveQuality Indicador relacionado con la calidad de la secuencia entrante. - Se establece en Bad cuando hay un problema grave al recibir la secuencia.
- Se establece en Poor cuando hay un problema leve al recibir la secuencia.
- Se establece en Good cuando no hay ningún problema al recibir la secuencia.
- Solo es visible si hay un flujo de audio activo en la llamada, lo que significa que un participante habla activamente durante el período de tiempo.
Ancho de banda bajo Asegúrese de que la llamada tiene una conexión a Internet confiable que permita mantener una llamada de voz. Para más información, consulte la sección Requisitos de ancho de banda de red. Sugiera que el usuario final desactive su cámara para conservar el ancho de banda de Internet disponible.
networkSendQuality Indicador relativo a la calidad del flujo saliente. - Se establece en Bad cuando hay un problema grave al enviar la secuencia.
- Se establece en Poor cuando hay un problema de gravedad media al enviar la secuencia.
- Se establece en Good cuando no hay ningún problema con el envío de la secuencia.
- Similar a recibir un diagnóstico de calidad, solo es visible si hay un flujo de audio activo en la llamada, lo que significa que un participante habla activamente durante el período de tiempo. Pero solo funciona en una llamada 1:1, ya que se basa en la información del otro lado para comprobar la calidad. Donde el otro lado tiene que indicar los datos recibidos.
Ancho de banda bajo Asegúrese de que la llamada tiene una conexión a Internet confiable que permita mantener una llamada de voz. Para más información, consulte la sección Requisitos de ancho de banda de red. Además, sugiera que el usuario final desactive su cámara para conservar el ancho de banda de Internet disponible.

Valores de audio

Nombre Descripción Valores posibles Casos de uso Pasos de mitigación
noSpeakerDevicesAvailable No hay ningún dispositivo de salida de audio (altavoz) en el sistema del usuario. - Se establece en True cuando no hay ningún dispositivo de altavoz en el sistema y se admite la selección del altavoz.
- Se establece en False cuando hay al menos un dispositivo de altavoz en el sistema y se admite la selección del altavoz.
Todos los altavoces están desconectados Cuando el valor se establece en True, considere la posibilidad de enviar una notificación visual al usuario final de que su sesión de llamada actual no tiene ningún hablante disponible.
speakingWhileMicrophoneIsMuted El usuario habla mientras está silenciado. - Se establece en True cuando el micrófono local está silenciado y el usuario local está hablando.
- Se establece en False cuando el usuario local deja de hablar o activa el sonido del micrófono.
- Este evento de diagnóstico se puede deshabilitar automáticamente si se desencadena durante una determinada cantidad de veces sin ninguna acción del usuario para evitar ruido y proporcionar una mejor experiencia de usuario. Se volverá a habilitar cuando se produzca una nueva acción de desactivar audio.
Durante una llamada, habla mientras tiene silenciado el micrófono. Cuando el valor se establece en True, considere la posibilidad de proporcionar una notificación visual al usuario final de que podría estar hablando sin darse cuenta de que su audio está silenciado.
noMicrophoneDevicesAvailable No hay dispositivos de captura de audio (micrófono) en el sistema del usuario. - Se establece en True cuando no hay dispositivos de micrófono en el sistema.
- Se establece en False cuando hay al menos un dispositivo de micrófono en el sistema.
Todos los micrófonos se desconectan durante la llamada. Cuando el valor se establece en True, considere la posibilidad de enviar una notificación visual al usuario final de que su sesión de llamada actual no tiene micrófono. Para obtener más información, consulte la sección Habilitar el micrófono desde el administrador de dispositivos.
microphoneNotFunctioning El micrófono no funciona. - Se establece en True cuando no se puede iniciar el envío de la secuencia de audio local porque es posible que el dispositivo de micrófono esté deshabilitado en el sistema o esté en uso en otro proceso. Este UFD tarda unos 10 segundos en activarse.
- Se establece en False cuando el micrófono empieza a enviar nuevamente la secuencia de audio de manera correcta.
No hay micrófonos disponibles, el acceso al micrófono está deshabilitado en el sistema. Cuando el valor se establece en True, se envía una notificación visual al usuario final de que hay un problema con el micrófono.
microphoneMuteUnexpectedly Se silenció el micrófono. - Se establece en True cuando el micrófono se silencia de manera inesperada.
- Se establece en False cuando el micrófono empieza a enviar la secuencia de audio correctamente.
El micrófono está silenciado desde el sistema. La mayoría de los casos se produce cuando el usuario está en una llamada de Azure Communication Services en un dispositivo móvil y entra una llamada telefónica. En la mayoría de los casos, el sistema operativo silencia la llamada de Azure Communication Services para que el usuario pueda responder a la llamada telefónica. Cuando el valor se establece en True, se envía una notificación visual al usuario final de que la llamada se ha silenciado porque entró una llamada de teléfono. Vea la sección cómo controlar cuando El sistema operativo silencia una llamada de Azure Communication Services para obtener más detalles.
microphonePermissionDenied El volumen del dispositivo está bajo o casi en silencio en macOS. - Se establece en True cuando la configuración del sistema (audio) deniega el permiso de audio.
- Se establece en False al adquirir correctamente la secuencia.
Nota: Este diagnóstico solo funciona en macOS.
Los permisos de micrófono están deshabilitados en Configuración. Cuando el valor se establece en True, se envía una notificación visual al usuario final de que no habilitó el permiso para usar el micrófono para una llamada de Azure Communication Services.

Valores de cámara

Nombre Descripción Valores posibles Casos de uso Pasos de mitigación
cameraFrozen La cámara deja de generar fotogramas durante más de 5 segundos. - Se establece en True cuando se detiene la secuencia de vídeo local. Esto significa que el lado remoto ve el vídeo inmovilizado en su pantalla o que los participantes remotos no ven su vídeo en pantalla.
- Se establece en False cuando finaliza la inmovilización y los usuarios pueden ver el vídeo de manera normal.
La cámara paró durante la llamada o una red insuficiente hizo que se inmovilizara. Cuando el valor se establece en True, considere la posibilidad de enviar una notificación al usuario final de que la red de participantes remotos podría ser mala y podría sugerirle que apague la cámara para ahorrar ancho de banda. Vea la sección Requisitos de ancho de banda de red para obtener más detalles sobre las capacidades de Internet necesarias para una llamada de Azure Communication Services.
cameraStartFailed Error genérico de la cámara. - Se establece en True cuando no se puede iniciar el envío de vídeo local porque es posible que el dispositivo de cámara esté deshabilitado en el sistema o en uso en otro proceso.
- Se establece en False cuando el dispositivo de cámara seleccionado vuelve a enviar vídeo local correctamente.
Errores de la cámara Cuando el valor se establece en True, se envía una notificación visual al usuario final de que no se pudo iniciar la cámara.
cameraStartTimedOut Escenario común en el que la cámara está en mal estado. - Se establece en True cuando se agotó el tiempo de espera del dispositivo de cámara para empezar a enviar la secuencia de vídeo.
- Se establece en False cuando el dispositivo de cámara seleccionado vuelve a enviar vídeo local correctamente.
Errores de la cámara Cuando el valor se establece en True, se envía una notificación visual al usuario final de que la cámara quizá tenga problemas. (Cuando se vuelve a establecer el valor en False, se quita la notificación).
cameraPermissionDenied Se denegaron los permisos de cámara en la configuración. - Se establece en True cuando la configuración del sistema (video) deniega el permiso de cámara.
- Se establece en False al adquirir correctamente la secuencia.
Nota: Este diagnóstico solo funciona en macOS Chrome.
Los permisos de cámara están deshabilitados en Configuración. Cuando el valor se establece en True, se envía una notificación visual al usuario final de que no habilitó el permiso para usar la cámara para una llamada de Azure Communication Services.
cameraStoppedUnexpectedly Funcionamiento incorrecto de la cámara - Se establece en True cuando la cámara entra en estado detenido inesperadamente.
- Se establece en False cuando la cámara empieza a enviar nuevamente la secuencia de vídeo de manera correcta.
Compruebe que la cámara funciona correctamente. Cuando el valor se establece en True, se envía una notificación visual al usuario final de que la cámara quizá tenga problemas. (Cuando se vuelve a establecer el valor en False, se quita la notificación).

Solo nativo

Nombre Descripción Valores posibles Casos de uso Pasos para la mitigación
speakerVolumeIsZero Volumen cero en un dispositivo (altavoz). - Se establece en True cuando el volumen de altavoz es cero.
- Se establece en False cuando el volumen de altavoz no es cero.
No se escucha el audio de los participantes en la llamada. Cuando el valor se establece en True, es posible que tenga accidentalmente el volumen en el valor más bajo (cero).
speakerMuted El dispositivo del altavoz está silenciado. - Se establece en True cuando el dispositivo del altavoz está silenciado.
- Se establece en False cuando el dispositivo del altavoz no está silenciado.
No se escucha el audio de los participantes en la llamada. Cuando el valor se establece en True, es posible que haya silenciado accidentalmente el altavoz.
speakerBusy El altavoz ya está en uso. El dispositivo se usa en modo exclusivo o el dispositivo se usa en modo compartido y el autor de la llamada pidió usar el dispositivo en modo exclusivo. - Se establece en True cuando se agota el tiempo de espera (audio) de la adquisición del flujo de dispositivo del altavoz.
- Se establece en False cuando la adquisición del hablante se realiza correctamente.
No se escucha audio de los participantes en la llamada a través del altavoz. Cuando el valor se establece en True, proporciona una notificación visual al usuario final para que pueda comprobar si otra aplicación está usando el altavoz e intente cerrarla.
speakerNotFunctioning El altavoz no funciona (no se pudo inicializar el cliente del dispositivo de audio o el dispositivo se volvió inactivo durante más de 5 segundos) - Se establece en True cuando el altavoz no está disponible o se agota el tiempo de espera (audio) de adquisición de flujo del dispositivo.
- Se establece en False cuando la adquisición del hablante se realiza correctamente.
No se escucha audio de los participantes en la llamada a través del altavoz. Pruebe a comprobar el estado del dispositivo del altavoz.
microphoneBusy El micrófono ya está en uso. El dispositivo se usa en modo exclusivo o el dispositivo se usa en modo compartido y el autor de la llamada pidió usar el dispositivo en modo exclusivo. - Se establece en True cuando se agota el tiempo de espera (audio) de la adquisición de flujo del dispositivo de micrófono.
- Se establece en False cuando la adquisición del micrófono se realiza correctamente.
El audio no llega a otros participantes en la llamada. Cuando el valor se establece en True, proporciona una notificación visual al usuario final para que pueda comprobar si otra aplicación está usando el micrófono e intente cerrarla.

Acceso a los diagnósticos

Los diagnósticos orientados al usuario son una característica extendida de la API Call principal que le permiten diagnosticar una llamada activa.

DiagnosticsCallFeature diagnosticsCallFeature = call.feature(Features.LOCAL_USER_DIAGNOSTICS);

Eventos de diagnóstico orientados al usuario

  • Obtenga el objeto de característica y agregue agentes de escucha a los eventos de diagnóstico.
DiagnosticsCallFeature diagnosticsCallFeature = call.feature(Features.LOCAL_USER_DIAGNOSTICS);

/* NetworkDiagnostic */
FlagDiagnosticChangedListener listener = (FlagDiagnosticChangedEvent args) -> {
  Boolean mediaValue = args.getValue();
  // Handle new value for no network diagnostic.
};

NetworkDiagnostics networkDiagnostics = diagnosticsCallFeature.getNetworkDiagnostics();
networkDiagnostics.addOnNetworkUnreachableChangedListener(listener);

// To remove listener for network quality event
networkDiagnostics.removeOnNetworkUnreachableChangedListener(listener);

// Quality Diagnostics
DiagnosticsCallFeature diagnosticsCallFeature = call.feature(Features.LOCAL_USER_DIAGNOSTICS);
QualityDiagnosticChangedListener listener = (QualityDiagnosticChangedEvent args) -> {
  DiagnosticQuality diagnosticQuality = args.getValue();
  // Handle new value for network reconnect diagnostic.
};

NetworkDiagnostics networkDiagnostics = diagnosticsCallFeature.getNetworkDiagnostics();
networkDiagnostics.addOnNetworkReconnectionQualityChangedListener(listener);

// To remove listener for media flag event
networkDiagnostics.removeOnNetworkReconnectionQualityChangedListener(listener);

/* MediaDiagnostic */
DiagnosticsCallFeature diagnosticsCallFeature = call.feature(Features.LOCAL_USER_DIAGNOSTICS);
FlagDiagnosticChangedListener listener = (FlagDiagnosticChangedEvent args) -> {
  Boolean mediaValue = args.getValue();
  // Handle new value for speaker not functioning diagnostic.
};

MediaDiagnostics mediaDiagnostics = diagnosticsCallFeature.getMedia();
mediaDiagnostics.addOnIsSpeakerNotFunctioningChangedListener(listener);

// To remove listener for media flag event
mediaDiagnostics.removeOnIsSpeakerNotFunctioningChangedListener(listener);

Obtención de los últimos diagnósticos orientados al usuario

  • Obtenga los últimos valores de diagnóstico que se generaron en la llamada actual. Si todavía no hemos recibido un valor para el diagnóstico, se produce una excepción.
DiagnosticsCallFeature diagnosticsCallFeature = call.feature(Features.LOCAL_USER_DIAGNOSTICS);
NetworkDiagnostics networkDiagnostics = diagnosticsCallFeature.getNetwork();
MediaDiagnostics mediaDiagnostics = diagnosticsCallFeature.getMedia();

NetworkDiagnosticValues latestNetwork = networkDiagnostics.getLatestDiagnostics();
Boolean lastNetworkValue = latestNetwork.isNetworkUnavailable(); // null if there isn't a value for this diagnostic.
DiagnosticQuality lastReceiveQualityValue = latestNetwork.getNetworkReceiveQuality(); //  UNKNOWN if there isn't a value for this diagnostic.

MediaDiagnosticValues latestMedia = networkDiagnostics.getLatestDiagnostics();
Boolean lastSpeakerNotFunctionValue = latestMedia.isSpeakerNotFunctioning(); // null if there isn't a value for this diagnostic.

// Use the last values ...

Valores de diagnóstico

Están disponibles los siguientes diagnósticos orientados al usuario:

Valores de red

Nombre Descripción Valores posibles Casos de uso Pasos de mitigación
networkUnavailable No hay red disponible. - Se establece en True cuando no se puede iniciar una llamada porque no hay red disponible.
- Se establece en False cuando hay candidatos ICE.
El dispositivo no está conectado a una red. Asegúrese de que la llamada tiene una conexión a Internet confiable que permita mantener una llamada de voz. Para más información, consulte la sección Optimización de red.
networkRelaysUnreachable Problemas con una red. - Se establece en True cuando la red tiene alguna restricción que no le permite acceder a las retransmisiones de Azure Communication Services.
- Se establece en False al hacer una llamada nueva.
Durante una llamada cuando la señal WiFi es intermitente. Asegúrese de que las reglas de firewall y el enrutamiento de red permiten que el cliente llegue a los servidores TURN de Microsoft. Para obtener más información, consulta la sección Configuración de firewall.
networkReconnectionQuality Se perdió la conexión y nos estamos reconectando a la red. - Se establece en Bad cuando se desconecta la red.
- Se establece en Poor cuando se pierde la conectividad del transporte de medios.
- Se establece en Good cuando se desconecta una sesión nueva.
Ancho de banda reducido, sin Internet Asegúrese de que la llamada tiene una conexión a Internet confiable que permita mantener una llamada de voz. Para más información, consulte la sección Requisitos de ancho de banda de red.
networkReceiveQuality Indicador relacionado con la calidad de la secuencia entrante. - Se establece en Bad cuando hay un problema grave al recibir la secuencia.
- Se establece en Poor cuando hay un problema leve al recibir la secuencia.
- Se establece en Good cuando no hay ningún problema al recibir la secuencia.
- Solo es visible si hay un flujo de audio activo en la llamada, lo que significa que un participante habla activamente durante el período de tiempo.
Ancho de banda bajo Asegúrese de que la llamada tiene una conexión a Internet confiable que permita mantener una llamada de voz. Para más información, consulte la sección Requisitos de ancho de banda de red. Sugiera que el usuario final desactive su cámara para conservar el ancho de banda de Internet disponible.
networkSendQuality Indicador relativo a la calidad del flujo saliente. - Se establece en Bad cuando hay un problema grave al enviar la secuencia.
- Se establece en Poor cuando hay un problema de gravedad media al enviar la secuencia.
- Se establece en Good cuando no hay ningún problema con el envío de la secuencia.
- Similar a recibir un diagnóstico de calidad, solo es visible si hay un flujo de audio activo en la llamada, lo que significa que un participante habla activamente durante el período de tiempo. Pero solo funciona en una llamada 1:1, ya que se basa en la información del otro lado para comprobar la calidad. Donde el otro lado tiene que indicar los datos recibidos.
Ancho de banda bajo Asegúrese de que la llamada tiene una conexión a Internet confiable que permita mantener una llamada de voz. Para más información, consulte la sección Requisitos de ancho de banda de red. Además, sugiera que el usuario final desactive su cámara para conservar el ancho de banda de Internet disponible.

Valores de audio

Nombre Descripción Valores posibles Casos de uso Pasos de mitigación
noSpeakerDevicesAvailable No hay ningún dispositivo de salida de audio (altavoz) en el sistema del usuario. - Se establece en True cuando no hay ningún dispositivo de altavoz en el sistema y se admite la selección del altavoz.
- Se establece en False cuando hay al menos un dispositivo de altavoz en el sistema y se admite la selección del altavoz.
Todos los altavoces están desconectados Cuando el valor se establece en True, considere la posibilidad de enviar una notificación visual al usuario final de que su sesión de llamada actual no tiene ningún hablante disponible.
speakingWhileMicrophoneIsMuted El usuario habla mientras está silenciado. - Se establece en True cuando el micrófono local está silenciado y el usuario local está hablando.
- Se establece en False cuando el usuario local deja de hablar o activa el sonido del micrófono.
- Este evento de diagnóstico se puede deshabilitar automáticamente si se desencadena durante una determinada cantidad de veces sin ninguna acción del usuario para evitar ruido y proporcionar una mejor experiencia de usuario. Se volverá a habilitar cuando se produzca una nueva acción de desactivar audio.
Durante una llamada, habla mientras tiene silenciado el micrófono. Cuando el valor se establece en True, considere la posibilidad de proporcionar una notificación visual al usuario final de que podría estar hablando sin darse cuenta de que su audio está silenciado.
noMicrophoneDevicesAvailable No hay dispositivos de captura de audio (micrófono) en el sistema del usuario. - Se establece en True cuando no hay dispositivos de micrófono en el sistema.
- Se establece en False cuando hay al menos un dispositivo de micrófono en el sistema.
Todos los micrófonos se desconectan durante la llamada. Cuando el valor se establece en True, considere la posibilidad de enviar una notificación visual al usuario final de que su sesión de llamada actual no tiene micrófono. Para obtener más información, consulte la sección Habilitar el micrófono desde el administrador de dispositivos.
microphoneNotFunctioning El micrófono no funciona. - Se establece en True cuando no se puede iniciar el envío de la secuencia de audio local porque es posible que el dispositivo de micrófono esté deshabilitado en el sistema o esté en uso en otro proceso. Este UFD tarda unos 10 segundos en activarse.
- Se establece en False cuando el micrófono empieza a enviar nuevamente la secuencia de audio de manera correcta.
No hay micrófonos disponibles, el acceso al micrófono está deshabilitado en el sistema. Cuando el valor se establece en True, se envía una notificación visual al usuario final de que hay un problema con el micrófono.
microphoneMuteUnexpectedly Se silenció el micrófono. - Se establece en True cuando el micrófono se silencia de manera inesperada.
- Se establece en False cuando el micrófono empieza a enviar la secuencia de audio correctamente.
El micrófono está silenciado desde el sistema. La mayoría de los casos se produce cuando el usuario está en una llamada de Azure Communication Services en un dispositivo móvil y entra una llamada telefónica. En la mayoría de los casos, el sistema operativo silencia la llamada de Azure Communication Services para que el usuario pueda responder a la llamada telefónica. Cuando el valor se establece en True, se envía una notificación visual al usuario final de que la llamada se ha silenciado porque entró una llamada de teléfono. Vea la sección cómo controlar cuando El sistema operativo silencia una llamada de Azure Communication Services para obtener más detalles.
microphonePermissionDenied El volumen del dispositivo está bajo o casi en silencio en macOS. - Se establece en True cuando la configuración del sistema (audio) deniega el permiso de audio.
- Se establece en False al adquirir correctamente la secuencia.
Nota: Este diagnóstico solo funciona en macOS.
Los permisos de micrófono están deshabilitados en Configuración. Cuando el valor se establece en True, se envía una notificación visual al usuario final de que no habilitó el permiso para usar el micrófono para una llamada de Azure Communication Services.

Valores de cámara

Nombre Descripción Valores posibles Casos de uso Pasos de mitigación
cameraFrozen La cámara deja de generar fotogramas durante más de 5 segundos. - Se establece en True cuando se detiene la secuencia de vídeo local. Esto significa que el lado remoto ve el vídeo inmovilizado en su pantalla o que los participantes remotos no ven su vídeo en pantalla.
- Se establece en False cuando finaliza la inmovilización y los usuarios pueden ver el vídeo de manera normal.
La cámara paró durante la llamada o una red insuficiente hizo que se inmovilizara. Cuando el valor se establece en True, considere la posibilidad de enviar una notificación al usuario final de que la red de participantes remotos podría ser mala y podría sugerirle que apague la cámara para ahorrar ancho de banda. Vea la sección Requisitos de ancho de banda de red para obtener más detalles sobre las capacidades de Internet necesarias para una llamada de Azure Communication Services.
cameraStartFailed Error genérico de la cámara. - Se establece en True cuando no se puede iniciar el envío de vídeo local porque es posible que el dispositivo de cámara esté deshabilitado en el sistema o en uso en otro proceso.
- Se establece en False cuando el dispositivo de cámara seleccionado vuelve a enviar vídeo local correctamente.
Errores de la cámara Cuando el valor se establece en True, se envía una notificación visual al usuario final de que no se pudo iniciar la cámara.
cameraStartTimedOut Escenario común en el que la cámara está en mal estado. - Se establece en True cuando se agotó el tiempo de espera del dispositivo de cámara para empezar a enviar la secuencia de vídeo.
- Se establece en False cuando el dispositivo de cámara seleccionado vuelve a enviar vídeo local correctamente.
Errores de la cámara Cuando el valor se establece en True, se envía una notificación visual al usuario final de que la cámara quizá tenga problemas. (Cuando se vuelve a establecer el valor en False, se quita la notificación).
cameraPermissionDenied Se denegaron los permisos de cámara en la configuración. - Se establece en True cuando la configuración del sistema (video) deniega el permiso de cámara.
- Se establece en False al adquirir correctamente la secuencia.
Nota: Este diagnóstico solo funciona en macOS Chrome.
Los permisos de cámara están deshabilitados en Configuración. Cuando el valor se establece en True, se envía una notificación visual al usuario final de que no habilitó el permiso para usar la cámara para una llamada de Azure Communication Services.
cameraStoppedUnexpectedly Funcionamiento incorrecto de la cámara - Se establece en True cuando la cámara entra en estado detenido inesperadamente.
- Se establece en False cuando la cámara empieza a enviar nuevamente la secuencia de vídeo de manera correcta.
Compruebe que la cámara funciona correctamente. Cuando el valor se establece en True, se envía una notificación visual al usuario final de que la cámara quizá tenga problemas. (Cuando se vuelve a establecer el valor en False, se quita la notificación).

Solo nativo

Nombre Descripción Valores posibles Casos de uso Pasos para la mitigación
speakerVolumeIsZero Volumen cero en un dispositivo (altavoz). - Se establece en True cuando el volumen de altavoz es cero.
- Se establece en False cuando el volumen de altavoz no es cero.
No se escucha el audio de los participantes en la llamada. Cuando el valor se establece en True, es posible que tenga accidentalmente el volumen en el valor más bajo (cero).
speakerMuted El dispositivo del altavoz está silenciado. - Se establece en True cuando el dispositivo del altavoz está silenciado.
- Se establece en False cuando el dispositivo del altavoz no está silenciado.
No se escucha el audio de los participantes en la llamada. Cuando el valor se establece en True, es posible que haya silenciado accidentalmente el altavoz.
speakerBusy El altavoz ya está en uso. El dispositivo se usa en modo exclusivo o el dispositivo se usa en modo compartido y el autor de la llamada pidió usar el dispositivo en modo exclusivo. - Se establece en True cuando se agota el tiempo de espera (audio) de la adquisición del flujo de dispositivo del altavoz.
- Se establece en False cuando la adquisición del hablante se realiza correctamente.
No se escucha audio de los participantes en la llamada a través del altavoz. Cuando el valor se establece en True, proporciona una notificación visual al usuario final para que pueda comprobar si otra aplicación está usando el altavoz e intente cerrarla.
speakerNotFunctioning El altavoz no funciona (no se pudo inicializar el cliente del dispositivo de audio o el dispositivo se volvió inactivo durante más de 5 segundos) - Se establece en True cuando el altavoz no está disponible o se agota el tiempo de espera (audio) de adquisición de flujo del dispositivo.
- Se establece en False cuando la adquisición del hablante se realiza correctamente.
No se escucha audio de los participantes en la llamada a través del altavoz. Pruebe a comprobar el estado del dispositivo del altavoz.
microphoneBusy El micrófono ya está en uso. El dispositivo se usa en modo exclusivo o el dispositivo se usa en modo compartido y el autor de la llamada pidió usar el dispositivo en modo exclusivo. - Se establece en True cuando se agota el tiempo de espera (audio) de la adquisición de flujo del dispositivo de micrófono.
- Se establece en False cuando la adquisición del micrófono se realiza correctamente.
El audio no llega a otros participantes en la llamada. Cuando el valor se establece en True, proporciona una notificación visual al usuario final para que pueda comprobar si otra aplicación está usando el micrófono e intente cerrarla.

Acceso a los diagnósticos

Los diagnósticos orientados al usuario son una característica extendida de la API Call principal que le permiten diagnosticar una llamada activa.

let userFacingDiagnostics = self.call?.feature(Features.localUserDiagnostics)

Eventos de diagnóstico orientados al usuario

  • Implemente los delegados para los orígenes de diagnóstico media y network. MediaDiagnosticsDelegate y NetworkDiagnosticsDelegate, respectivamente.
extension CallObserver: MediaDiagnosticsDelegate {
  func mediaDiagnostics(_ mediaDiagnostics: MediaDiagnostics,
                        didChangeIsCameraFrozen args: DiagnosticFlagChangedEventArgs) {
    let newValue = args.value
    // Handle the diagnostic event value changed...
  }
    
  func mediaDiagnostics(_ mediaDiagnostics: MediaDiagnostics,
                        didChangeIsSpeakerMuted args: DiagnosticFlagChangedEventArgs) {
    let newValue = args.value
    // Handle the diagnostic event value changed...
  }
    
  func mediaDiagnostics(_ mediaDiagnostics: MediaDiagnostics,
                        didChangeIsCameraStartFailed args: DiagnosticFlagChangedEventArgs) {
    let newValue = args.value
    // Handle the diagnostic event value changed...
  }
    
  func mediaDiagnostics(_ mediaDiagnostics: MediaDiagnostics,
                        didChangeIsSpeakerVolumeZero args: DiagnosticFlagChangedEventArgs) {
    let newValue = args.value
    // Handle the diagnostic event value changed...
  }
    
  func mediaDiagnostics(_ mediaDiagnostics: MediaDiagnostics,
                        didChangeIsSpeakerNotFunctioning args: DiagnosticFlagChangedEventArgs) {
    let newValue = args.value
    // Handle the diagnostic event value changed...
  }
    
  func mediaDiagnostics(_ mediaDiagnostics: MediaDiagnostics,
                        didChangeIsCameraPermissionDenied args: DiagnosticFlagChangedEventArgs) {
    let newValue = args.value
    // Handle the diagnostic event value changed...
  }
    
  func mediaDiagnostics(_ mediaDiagnostics: MediaDiagnostics,
                        didChangeIsMicrophoneNotFunctioning args: DiagnosticFlagChangedEventArgs) {
    let newValue = args.value
    // Handle the diagnostic event value changed...
  }
    
  func mediaDiagnostics(_ mediaDiagnostics: MediaDiagnostics,
                        didChangeIsCameraStartTimedOut args: DiagnosticFlagChangedEventArgs) {
    let newValue = args.value
    // Handle the diagnostic event value changed...
  }
    
  func mediaDiagnostics(_ mediaDiagnostics: MediaDiagnostics,
                        didChangeIsMicrophoneMutedUnexpectedly args: DiagnosticFlagChangedEventArgs) {
    let newValue = args.value
    // Handle the diagnostic event value changed...
  }
    
  func mediaDiagnostics(_ mediaDiagnostics: MediaDiagnostics,
                        didChangeIsZeroSpeakerDevicesAvailable args: DiagnosticFlagChangedEventArgs) {
    let newValue = args.value
    // Handle the diagnostic event value changed...                            
  }
    
  func mediaDiagnostics(_ mediaDiagnostics: MediaDiagnostics,
                        didChangeIsZeroMicrophoneDevicesAvailable args: DiagnosticFlagChangedEventArgs) {
    let newValue = args.value
    // Handle the diagnostic event value changed...
  }
    
  func mediaDiagnostics(_ mediaDiagnostics: MediaDiagnostics,
                        didChangeIsSpeakingWhileMicrophoneIsMuted args: DiagnosticFlagChangedEventArgs) {
    let newValue = args.value
    // Handle the diagnostic event value changed...
  }
    
  func mediaDiagnostics(_ mediaDiagnostics: MediaDiagnostics,
                        didChangeIsSpeakerBusy args: DiagnosticFlagChangedEventArgs) {
    let newValue = args.value
    // Handle the diagnostic event value changed...
  }
    
  func mediaDiagnostics(_ mediaDiagnostics: MediaDiagnostics,
                        didChangeIsMicrophoneBusy args: DiagnosticFlagChangedEventArgs) {
    let newValue = args.value
    // Handle the diagnostic event value changed...
  }
}

extension CallObserver: NetworkDiagnosticsDelegate {
  func networkDiagnostics(_ networkDiagnostics: NetworkDiagnostics,
                          didChangeIsNetworkRelaysUnreachable args: DiagnosticFlagChangedEventArgs) {
    let newValue = args.value
    // Handle the diagnostic event value changed...
  }
    
  func networkDiagnostics(_ networkDiagnostics: NetworkDiagnostics,
                          didChangeNetworkReconnectionQuality args: DiagnosticQualityChangedEventArgs) {
    let newValue = args.value
    // Handle the diagnostic event value changed...
  }
    
  func networkDiagnostics(_ networkDiagnostics: NetworkDiagnostics,
                          didChangeNetworkSendQuality args: DiagnosticQualityChangedEventArgs) {
    let newValue = args.value
    // Handle the diagnostic event value changed...
  }
    
  func networkDiagnostics(_ networkDiagnostics: NetworkDiagnostics,
                          didChangeIsNetworkUnavailable args: DiagnosticFlagChangedEventArgs) {
    let newValue = args.value
    // Handle the diagnostic event value changed...
  }
    
  func networkDiagnostics(_ networkDiagnostics: NetworkDiagnostics,
                          didChangeNetworkReceiveQuality args: DiagnosticQualityChangedEventArgs) {
    let newValue = args.value
    // Handle the diagnostic event value changed...
  }
}
  • Mantenga una referencia a los diagnósticos media y network, y establezca el objeto delegado para escuchar eventos.
self.mediaDiagnostics = userFacingDiagnostics?.media
self.networkDiagnostics = userFacingDiagnostics?.network
self.mediaDiagnostics?.delegate = self.callObserver
self.networkDiagnostics?.delegate = self.callObserver

Nota:

Si ha habilitado CallKit a través del SDK o implementa la integración de CallKit en la aplicación, notificar el estado silenciado a CallKit puede dar lugar a que el sistema operativo pierda la conexión con el micrófono debido a motivos de privacidad, lo que haría que el evento didIsSpeakingWhileMicrophoneIsMuted no funcione según lo previsto porque no se puede capturar la entrada del dispositivo de micrófono para detectar que el usuario está hablando.

Obtención de los últimos diagnósticos orientados al usuario

  • Obtenga los últimos valores de diagnóstico que se generaron. Si todavía no hemos recibido un valor para el diagnóstico, se devuelve nil o .unknown.
let lastSpeakerNotFunctionValue = self.mediaDiagnostics.latest.isSpeakerNotFunctioning // Boolean?
let lastNetworkRelayNotReachableValue = self.networkDiagnostics.latest.networkRelaysUnreachable // Boolean?
let lastReceiveQualityValue = self.networkDiagnostics.latest.networkReceiveQuality // DiagnosticQuality (.good, .poor, .bad)
// or .unknown if there isn't a diagnostic for this.

Valores de diagnóstico

Están disponibles los siguientes diagnósticos orientados al usuario:

Valores de red

Nombre Descripción Valores posibles Casos de uso Pasos de mitigación
networkUnavailable No hay red disponible. - Se establece en True cuando no se puede iniciar una llamada porque no hay red disponible.
- Se establece en False cuando hay candidatos ICE.
El dispositivo no está conectado a una red. Asegúrese de que la llamada tiene una conexión a Internet confiable que permita mantener una llamada de voz. Para más información, consulte la sección Optimización de red.
networkRelaysUnreachable Problemas con una red. - Se establece en True cuando la red tiene alguna restricción que no le permite acceder a las retransmisiones de Azure Communication Services.
- Se establece en False al hacer una llamada nueva.
Durante una llamada cuando la señal WiFi es intermitente. Asegúrese de que las reglas de firewall y el enrutamiento de red permiten que el cliente llegue a los servidores TURN de Microsoft. Para obtener más información, consulta la sección Configuración de firewall.
networkReconnectionQuality Se perdió la conexión y nos estamos reconectando a la red. - Se establece en Bad cuando se desconecta la red.
- Se establece en Poor cuando se pierde la conectividad del transporte de medios.
- Se establece en Good cuando se desconecta una sesión nueva.
Ancho de banda reducido, sin Internet Asegúrese de que la llamada tiene una conexión a Internet confiable que permita mantener una llamada de voz. Para más información, consulte la sección Requisitos de ancho de banda de red.
networkReceiveQuality Indicador relacionado con la calidad de la secuencia entrante. - Se establece en Bad cuando hay un problema grave al recibir la secuencia.
- Se establece en Poor cuando hay un problema leve al recibir la secuencia.
- Se establece en Good cuando no hay ningún problema al recibir la secuencia.
- Solo es visible si hay un flujo de audio activo en la llamada, lo que significa que un participante habla activamente durante el período de tiempo.
Ancho de banda bajo Asegúrese de que la llamada tiene una conexión a Internet confiable que permita mantener una llamada de voz. Para más información, consulte la sección Requisitos de ancho de banda de red. Sugiera que el usuario final desactive su cámara para conservar el ancho de banda de Internet disponible.
networkSendQuality Indicador relativo a la calidad del flujo saliente. - Se establece en Bad cuando hay un problema grave al enviar la secuencia.
- Se establece en Poor cuando hay un problema de gravedad media al enviar la secuencia.
- Se establece en Good cuando no hay ningún problema con el envío de la secuencia.
- Similar a recibir un diagnóstico de calidad, solo es visible si hay un flujo de audio activo en la llamada, lo que significa que un participante habla activamente durante el período de tiempo. Pero solo funciona en una llamada 1:1, ya que se basa en la información del otro lado para comprobar la calidad. Donde el otro lado tiene que indicar los datos recibidos.
Ancho de banda bajo Asegúrese de que la llamada tiene una conexión a Internet confiable que permita mantener una llamada de voz. Para más información, consulte la sección Requisitos de ancho de banda de red. Además, sugiera que el usuario final desactive su cámara para conservar el ancho de banda de Internet disponible.

Valores de audio

Nombre Descripción Valores posibles Casos de uso Pasos de mitigación
noSpeakerDevicesAvailable No hay ningún dispositivo de salida de audio (altavoz) en el sistema del usuario. - Se establece en True cuando no hay ningún dispositivo de altavoz en el sistema y se admite la selección del altavoz.
- Se establece en False cuando hay al menos un dispositivo de altavoz en el sistema y se admite la selección del altavoz.
Todos los altavoces están desconectados Cuando el valor se establece en True, considere la posibilidad de enviar una notificación visual al usuario final de que su sesión de llamada actual no tiene ningún hablante disponible.
speakingWhileMicrophoneIsMuted El usuario habla mientras está silenciado. - Se establece en True cuando el micrófono local está silenciado y el usuario local está hablando.
- Se establece en False cuando el usuario local deja de hablar o activa el sonido del micrófono.
- Este evento de diagnóstico se puede deshabilitar automáticamente si se desencadena durante una determinada cantidad de veces sin ninguna acción del usuario para evitar ruido y proporcionar una mejor experiencia de usuario. Se volverá a habilitar cuando se produzca una nueva acción de desactivar audio.
Durante una llamada, habla mientras tiene silenciado el micrófono. Cuando el valor se establece en True, considere la posibilidad de proporcionar una notificación visual al usuario final de que podría estar hablando sin darse cuenta de que su audio está silenciado.
noMicrophoneDevicesAvailable No hay dispositivos de captura de audio (micrófono) en el sistema del usuario. - Se establece en True cuando no hay dispositivos de micrófono en el sistema.
- Se establece en False cuando hay al menos un dispositivo de micrófono en el sistema.
Todos los micrófonos se desconectan durante la llamada. Cuando el valor se establece en True, considere la posibilidad de enviar una notificación visual al usuario final de que su sesión de llamada actual no tiene micrófono. Para obtener más información, consulte la sección Habilitar el micrófono desde el administrador de dispositivos.
microphoneNotFunctioning El micrófono no funciona. - Se establece en True cuando no se puede iniciar el envío de la secuencia de audio local porque es posible que el dispositivo de micrófono esté deshabilitado en el sistema o esté en uso en otro proceso. Este UFD tarda unos 10 segundos en activarse.
- Se establece en False cuando el micrófono empieza a enviar nuevamente la secuencia de audio de manera correcta.
No hay micrófonos disponibles, el acceso al micrófono está deshabilitado en el sistema. Cuando el valor se establece en True, se envía una notificación visual al usuario final de que hay un problema con el micrófono.
microphoneMuteUnexpectedly Se silenció el micrófono. - Se establece en True cuando el micrófono se silencia de manera inesperada.
- Se establece en False cuando el micrófono empieza a enviar la secuencia de audio correctamente.
El micrófono está silenciado desde el sistema. La mayoría de los casos se produce cuando el usuario está en una llamada de Azure Communication Services en un dispositivo móvil y entra una llamada telefónica. En la mayoría de los casos, el sistema operativo silencia la llamada de Azure Communication Services para que el usuario pueda responder a la llamada telefónica. Cuando el valor se establece en True, se envía una notificación visual al usuario final de que la llamada se ha silenciado porque entró una llamada de teléfono. Vea la sección cómo controlar cuando El sistema operativo silencia una llamada de Azure Communication Services para obtener más detalles.
microphonePermissionDenied El volumen del dispositivo está bajo o casi en silencio en macOS. - Se establece en True cuando la configuración del sistema (audio) deniega el permiso de audio.
- Se establece en False al adquirir correctamente la secuencia.
Nota: Este diagnóstico solo funciona en macOS.
Los permisos de micrófono están deshabilitados en Configuración. Cuando el valor se establece en True, se envía una notificación visual al usuario final de que no habilitó el permiso para usar el micrófono para una llamada de Azure Communication Services.

Valores de cámara

Nombre Descripción Valores posibles Casos de uso Pasos de mitigación
cameraFrozen La cámara deja de generar fotogramas durante más de 5 segundos. - Se establece en True cuando se detiene la secuencia de vídeo local. Esto significa que el lado remoto ve el vídeo inmovilizado en su pantalla o que los participantes remotos no ven su vídeo en pantalla.
- Se establece en False cuando finaliza la inmovilización y los usuarios pueden ver el vídeo de manera normal.
La cámara paró durante la llamada o una red insuficiente hizo que se inmovilizara. Cuando el valor se establece en True, considere la posibilidad de enviar una notificación al usuario final de que la red de participantes remotos podría ser mala y podría sugerirle que apague la cámara para ahorrar ancho de banda. Vea la sección Requisitos de ancho de banda de red para obtener más detalles sobre las capacidades de Internet necesarias para una llamada de Azure Communication Services.
cameraStartFailed Error genérico de la cámara. - Se establece en True cuando no se puede iniciar el envío de vídeo local porque es posible que el dispositivo de cámara esté deshabilitado en el sistema o en uso en otro proceso.
- Se establece en False cuando el dispositivo de cámara seleccionado vuelve a enviar vídeo local correctamente.
Errores de la cámara Cuando el valor se establece en True, se envía una notificación visual al usuario final de que no se pudo iniciar la cámara.
cameraStartTimedOut Escenario común en el que la cámara está en mal estado. - Se establece en True cuando se agotó el tiempo de espera del dispositivo de cámara para empezar a enviar la secuencia de vídeo.
- Se establece en False cuando el dispositivo de cámara seleccionado vuelve a enviar vídeo local correctamente.
Errores de la cámara Cuando el valor se establece en True, se envía una notificación visual al usuario final de que la cámara quizá tenga problemas. (Cuando se vuelve a establecer el valor en False, se quita la notificación).
cameraPermissionDenied Se denegaron los permisos de cámara en la configuración. - Se establece en True cuando la configuración del sistema (video) deniega el permiso de cámara.
- Se establece en False al adquirir correctamente la secuencia.
Nota: Este diagnóstico solo funciona en macOS Chrome.
Los permisos de cámara están deshabilitados en Configuración. Cuando el valor se establece en True, se envía una notificación visual al usuario final de que no habilitó el permiso para usar la cámara para una llamada de Azure Communication Services.
cameraStoppedUnexpectedly Funcionamiento incorrecto de la cámara - Se establece en True cuando la cámara entra en estado detenido inesperadamente.
- Se establece en False cuando la cámara empieza a enviar nuevamente la secuencia de vídeo de manera correcta.
Compruebe que la cámara funciona correctamente. Cuando el valor se establece en True, se envía una notificación visual al usuario final de que la cámara quizá tenga problemas. (Cuando se vuelve a establecer el valor en False, se quita la notificación).

Solo nativo

Nombre Descripción Valores posibles Casos de uso Pasos para la mitigación
speakerVolumeIsZero Volumen cero en un dispositivo (altavoz). - Se establece en True cuando el volumen de altavoz es cero.
- Se establece en False cuando el volumen de altavoz no es cero.
No se escucha el audio de los participantes en la llamada. Cuando el valor se establece en True, es posible que tenga accidentalmente el volumen en el valor más bajo (cero).
speakerMuted El dispositivo del altavoz está silenciado. - Se establece en True cuando el dispositivo del altavoz está silenciado.
- Se establece en False cuando el dispositivo del altavoz no está silenciado.
No se escucha el audio de los participantes en la llamada. Cuando el valor se establece en True, es posible que haya silenciado accidentalmente el altavoz.
speakerBusy El altavoz ya está en uso. El dispositivo se usa en modo exclusivo o el dispositivo se usa en modo compartido y el autor de la llamada pidió usar el dispositivo en modo exclusivo. - Se establece en True cuando se agota el tiempo de espera (audio) de la adquisición del flujo de dispositivo del altavoz.
- Se establece en False cuando la adquisición del hablante se realiza correctamente.
No se escucha audio de los participantes en la llamada a través del altavoz. Cuando el valor se establece en True, proporciona una notificación visual al usuario final para que pueda comprobar si otra aplicación está usando el altavoz e intente cerrarla.
speakerNotFunctioning El altavoz no funciona (no se pudo inicializar el cliente del dispositivo de audio o el dispositivo se volvió inactivo durante más de 5 segundos) - Se establece en True cuando el altavoz no está disponible o se agota el tiempo de espera (audio) de adquisición de flujo del dispositivo.
- Se establece en False cuando la adquisición del hablante se realiza correctamente.
No se escucha audio de los participantes en la llamada a través del altavoz. Pruebe a comprobar el estado del dispositivo del altavoz.
microphoneBusy El micrófono ya está en uso. El dispositivo se usa en modo exclusivo o el dispositivo se usa en modo compartido y el autor de la llamada pidió usar el dispositivo en modo exclusivo. - Se establece en True cuando se agota el tiempo de espera (audio) de la adquisición de flujo del dispositivo de micrófono.
- Se establece en False cuando la adquisición del micrófono se realiza correctamente.
El audio no llega a otros participantes en la llamada. Cuando el valor se establece en True, proporciona una notificación visual al usuario final para que pueda comprobar si otra aplicación está usando el micrófono e intente cerrarla.

Acceso a los diagnósticos

Los diagnósticos orientados al usuario son una característica extendida de la API Call principal que le permiten diagnosticar una llamada activa.

this.diagnosticsCallFeature = call.Features.LocalUserDiagnostics;

Eventos de diagnóstico orientados al usuario

  • Implemente agentes de escucha para eventos de diagnóstico.
private async void Call__OnNetworkUnavailableChanged(object sender, FlagDiagnosticChangedEventArgs args)
{
  var value = args.Value;
  // Handle the diagnostic event value changed...
}

// Listen to other network diagnostics

private async void Call__OnMediaSpeakerNotFunctioningChanged(object sender, FlagDiagnosticChangedEventArgs args)
{
  var value = args.Value;
  // Handle the diagnostic event value changed...
}

// Listen to other media diagnostics
  • Establezca métodos de evento para escuchar eventos.
this.diagnosticsCallFeature = call.Features.LocalUserDiagnostics;
this.networkDiagnostics = diagnosticsCallFeature.Network;
this.mediaDiagnostics = diagnosticsCallFeature.Media;

this.networkDiagnostics.NetworkUnavailableChanged += Call__OnNetworkUnavailableChanged;
// Listen to other network events as well ... 

this.mediaDiagnostics.SpeakerNotFunctioningChanged += Call__OnMediaSpeakerNotFunctioningChanged;
// Listen to other media events as well ... 

// Removing listeners

this.networkDiagnostics.NetworkUnavailable -= Call__NetworkUnavailableChanged;
// Remove the other listeners as well ... 

this.mediaDiagnostics.SpeakerNotFunctioningChanged -= Call__OnMediaSpeakerNotFunctioningChanged;
// Remove the other listeners as well ... 

Obtención de los últimos diagnósticos orientados al usuario

  • Obtenga los últimos valores de diagnóstico que se generaron en la llamada actual. Si todavía no hemos recibido un valor para el diagnóstico, se devuelve null o .unknown.
this.diagnosticsCallFeature = call.Features.LocalUserDiagnostics;
this.networkDiagnostics = diagnosticsCallFeature.Network;
this.mediaDiagnostics = diagnosticsCallFeature.Media;

bool? lastSpeakerNotFunctionValue = this.mediaDiagnostics.GetLatestDiagnostics().IsSpeakerNotFunctioning; // Boolean?
bool? lastNetworkRelayNotReachableValue = this.networkDiagnostics.GetLatestDiagnostics().IsNetworkRelaysUnreachable; // Boolean?
DiagnosticQuality lastReceiveQualityValue = this.networkDiagnostics.GetLatestDiagnostics().NetworkReceiveQuality; // DiagnosticQuality (.good, .poor, .bad)
// or .unknown if there isn't a diagnostic for this.