Share via


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 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 un diagnóstico orientado al usuario, debe considerar la posibilidad de enviar comentarios a un usuario final que podría 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 de un 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 ninguna red disponible. : se establece en True cuando no se inicia una llamada porque no hay ninguna 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 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 más información, vea la sección Configuración de firewall.
networkReconnect Se perdió la conexión y nos estamos reconectando a la red. : se establece enBad cuando la red está desconectada.
: se establece en Poorcuando se pierde la conectividad de transporte multimedia.
- 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 enBad cuando hay un problema grave al recibir la secuencia.
- Se establece en Poor cuando hay un problema leve con la recepción de 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. Sugerir 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 enBad cuando hay un problema grave con el envío de la secuencia.
- Se establece en Poor cuando hay un problema leve con el envío de 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, sugiere 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 hablante.
Todos los altavoces están desconectados Cuando el valor establecido en True, considere la posibilidad de proporcionar 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 establecido para True considerar la posibilidad de proporcionar una notificación visual al usuario final que podría estar hablando y no 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 establecido para True considerar la posibilidad de proporcionar una notificación visual al usuario final de que su sesión de llamada actual no tiene un 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 para True dar una notificación visual al usuario final de que hay un problema con su 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 operativomuta la llamada de Azure Communication Services para que un usuario pueda responder a la llamada telefónica. Cuando el valor se establece Trueen , dé una notificación visual al usuario final de que su llamada se ha silenciado porque se ha producido una llamada telefónica. Para más información, consulte cómo controlar mejor la silenciación del sistema operativo en una sección de llamadas de Azure Communication Services para más información.
microphonePermissionDenied hay un volumen bajo del dispositivo o es casi silencioso en macOS. : se establece en True cuando se deniega el permiso de audio desde la configuración del sistema (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 Trueen , asigne una notificación visual al usuario final 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
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. Este diagnóstico significa que el lado remoto ve el vídeo inmovilizado en su pantalla o significa que los participantes remotos no representan el vídeo en su 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 Trueen , considere la posibilidad de notificar al usuario final que la red del participante remoto podría ser incorrecta, posiblemente sugerir que apaguen su cámara para conservar el ancho de banda. Para más información, consulte la sección Requisitos de ancho de banda de red 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 Trueen , dé una notificación visual al usuario final de que la cámara no se pudo iniciar.
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 Trueen , dé una notificación visual al usuario final de que su cámara puede tener 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 se deniega el permiso de cámara desde la configuración del sistema (vídeo).
- 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 Trueen , asigne una notificación visual al usuario final 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 Trueen , dé una notificación visual al usuario final de que su cámara puede tener 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 Se denegó el uso compartido de pantalla del sistema de las preferencias de Configuración. - Se establece en True cuando se deniega el permiso de uso compartido de pantalla desde la configuración del sistema (uso compartido).
- 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 Trueen , asigne una notificación visual al usuario final que no 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 Trueen , proporcione una notificación visual al usuario final de que posiblemente haya un problema al compartir su pantalla. (Cuando el valor se vuelve a establecer en False, quite 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 Trueen , proporcione una notificación visual al usuario final que posiblemente haya un problema que provoque 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 ninguna red disponible. : se establece en True cuando no se inicia una llamada porque no hay ninguna 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 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 más información, vea la sección Configuración de firewall.
networkReconnectionQuality La conexión se perdió y estamos reconectando a la red. : se establece enBad cuando la red está desconectada.
: se establece en Poorcuando se pierde la conectividad de transporte multimedia.
- 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 enBad cuando hay un problema grave al recibir la secuencia.
- Se establece en Poor cuando hay un problema leve con la recepción de 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 enBad cuando hay un problema grave con el envío de la secuencia.
- Se establece en Poor cuando hay un problema leve con el envío de la secuencia.
: se establece en Good cuando no hay ningún problema con el envío de la secuencia.
- Similar a recibir 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, sugiere 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 hablante.
Todos los altavoces están desconectados Cuando el valor establecido en True, considere la posibilidad de proporcionar 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 silenciamiento.
Durante una llamada, habla mientras tiene silenciado el micrófono. Cuando el valor establecido para True considerar la posibilidad de proporcionar una notificación visual al usuario final que podría estar hablando y no 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 establecido para True considerar la posibilidad de proporcionar una notificación visual al usuario final de que su sesión de llamada actual no tiene un 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 se haya deshabilitado en el sistema o que otro proceso lo use. 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 para True dar una notificación visual al usuario final de que hay un problema con su 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 operativomuta la llamada de Azure Communication Services para que un usuario pueda responder a la llamada telefónica. Cuando el valor se establece Trueen , dé una notificación visual al usuario final de que su llamada se ha silenciado porque se ha producido una llamada telefónica. Para más información, consulte cómo controlar mejor la silenciación del sistema operativo en una sección de llamadas de Azure Communication Services para más información.
microphonePermissionDenied hay un volumen bajo del dispositivo o es casi silencioso en macOS. : se establece en True cuando se deniega el permiso de audio desde la configuración del sistema (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 Trueen , asigne una notificación visual al usuario final 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. Este diagnóstico significa que el lado remoto ve el vídeo inmovilizado en su pantalla o significa que los participantes remotos no representan el vídeo en su 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 Trueen , considere la posibilidad de notificar al usuario final que la red del participante remoto podría ser incorrecta, posiblemente sugerir que apaguen su cámara para conservar el ancho de banda. Para más información, consulte la sección Requisitos de ancho de banda de red sobre las capacidades de Internet necesarias para una llamada de Azure Communication Services.
cameraStartFailed Error genérico de la cámara. - Establézcalo True en cuando no podamos iniciar el envío de vídeo local porque es posible que el dispositivo de cámara se haya deshabilitado en el sistema o que otro proceso lo use.
- 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 Trueen , dé una notificación visual al usuario final de que la cámara no se pudo iniciar.
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 Trueen , dé una notificación visual al usuario final de que su cámara puede tener 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 se deniega el permiso de cámara desde la configuración del sistema (vídeo).
- 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 Trueen , proporcione 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 Trueen , dé una notificación visual al usuario final de que su cámara puede tener 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 del altavoz es cero.
- Se establece en False cuando el volumen del altavoz no es cero.
No escuchar audio de los participantes a la llamada. Cuando el valor se establece Trueen , 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 escuchar audio de los participantes a la llamada. Cuando el valor se establece Trueen , 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ó que usara el dispositivo en modo exclusivo. - Establézcalo en True cuando se agote el tiempo de espera (audio) de la adquisición del flujo del dispositivo del altavoz.
- Se establece en False cuando la adquisición del hablante se realiza correctamente.
No escuchar audio de los participantes en la llamada a través del hablante. Cuando el valor se establece Trueen , proporcione una notificación visual al usuario final para que pueda comprobar si otra aplicación usa 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 secuencias de dispositivo.
- Se establece en False cuando la adquisición del hablante se realiza correctamente.
No escuchar audio de los participantes en la llamada a través del hablante. 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ó que usara el dispositivo en modo exclusivo. : se establece en True cuando se agota el tiempo de espera (audio) de la adquisición del 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 Trueen , proporcione una notificación visual al usuario final para que pueda comprobar si otra aplicación usa 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 valores de diagnóstico más recientes 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 ninguna red disponible. : se establece en True cuando no se inicia una llamada porque no hay ninguna 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 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 más información, vea la sección Configuración de firewall.
networkReconnectionQuality La conexión se perdió y estamos reconectando a la red. : se establece enBad cuando la red está desconectada.
: se establece en Poorcuando se pierde la conectividad de transporte multimedia.
- 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 enBad cuando hay un problema grave al recibir la secuencia.
- Se establece en Poor cuando hay un problema leve con la recepción de 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 enBad cuando hay un problema grave con el envío de la secuencia.
- Se establece en Poor cuando hay un problema leve con el envío de la secuencia.
: se establece en Good cuando no hay ningún problema con el envío de la secuencia.
- Similar a recibir 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, sugiere 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 hablante.
Todos los altavoces están desconectados Cuando el valor establecido en True, considere la posibilidad de proporcionar 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 silenciamiento.
Durante una llamada, habla mientras tiene silenciado el micrófono. Cuando el valor establecido para True considerar la posibilidad de proporcionar una notificación visual al usuario final que podría estar hablando y no 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 establecido para True considerar la posibilidad de proporcionar una notificación visual al usuario final de que su sesión de llamada actual no tiene un 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 se haya deshabilitado en el sistema o que otro proceso lo use. 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 para True dar una notificación visual al usuario final de que hay un problema con su 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 operativomuta la llamada de Azure Communication Services para que un usuario pueda responder a la llamada telefónica. Cuando el valor se establece Trueen , dé una notificación visual al usuario final de que su llamada se ha silenciado porque se ha producido una llamada telefónica. Para más información, consulte cómo controlar mejor la silenciación del sistema operativo en una sección de llamadas de Azure Communication Services para más información.
microphonePermissionDenied hay un volumen bajo del dispositivo o es casi silencioso en macOS. : se establece en True cuando se deniega el permiso de audio desde la configuración del sistema (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 Trueen , asigne una notificación visual al usuario final 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. Este diagnóstico significa que el lado remoto ve el vídeo inmovilizado en su pantalla o significa que los participantes remotos no representan el vídeo en su 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 Trueen , considere la posibilidad de notificar al usuario final que la red del participante remoto podría ser incorrecta, posiblemente sugerir que apaguen su cámara para conservar el ancho de banda. Para más información, consulte la sección Requisitos de ancho de banda de red sobre las capacidades de Internet necesarias para una llamada de Azure Communication Services.
cameraStartFailed Error genérico de la cámara. - Establézcalo True en cuando no podamos iniciar el envío de vídeo local porque es posible que el dispositivo de cámara se haya deshabilitado en el sistema o que otro proceso lo use.
- 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 Trueen , dé una notificación visual al usuario final de que la cámara no se pudo iniciar.
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 Trueen , dé una notificación visual al usuario final de que su cámara puede tener 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 se deniega el permiso de cámara desde la configuración del sistema (vídeo).
- 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 Trueen , proporcione 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 Trueen , dé una notificación visual al usuario final de que su cámara puede tener 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 del altavoz es cero.
- Se establece en False cuando el volumen del altavoz no es cero.
No escuchar audio de los participantes a la llamada. Cuando el valor se establece Trueen , 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 escuchar audio de los participantes a la llamada. Cuando el valor se establece Trueen , 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ó que usara el dispositivo en modo exclusivo. - Establézcalo en True cuando se agote el tiempo de espera (audio) de la adquisición del flujo del dispositivo del altavoz.
- Se establece en False cuando la adquisición del hablante se realiza correctamente.
No escuchar audio de los participantes en la llamada a través del hablante. Cuando el valor se establece Trueen , proporcione una notificación visual al usuario final para que pueda comprobar si otra aplicación usa 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 secuencias de dispositivo.
- Se establece en False cuando la adquisición del hablante se realiza correctamente.
No escuchar audio de los participantes en la llamada a través del hablante. 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ó que usara el dispositivo en modo exclusivo. : se establece en True cuando se agota el tiempo de espera (audio) de la adquisición del 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 Trueen , proporcione una notificación visual al usuario final para que pueda comprobar si otra aplicación usa 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 media los orígenes de diagnóstico 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 media los diagnósticos y network 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 CallKit habilitado 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 desenfoque la aplicación en el micrófono debido a motivos de privacidad que harían que el didIsSpeakingWhileMicrophoneIsMuted evento no funcionara según lo previsto porque no se puede capturar la entrada del dispositivo de micrófono para detectar que el usuario habla.

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 o nil.unknown se devuelve.
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 ninguna red disponible. : se establece en True cuando no se inicia una llamada porque no hay ninguna 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 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 más información, vea la sección Configuración de firewall.
networkReconnectionQuality La conexión se perdió y estamos reconectando a la red. : se establece enBad cuando la red está desconectada.
: se establece en Poorcuando se pierde la conectividad de transporte multimedia.
- 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 enBad cuando hay un problema grave al recibir la secuencia.
- Se establece en Poor cuando hay un problema leve con la recepción de 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 enBad cuando hay un problema grave con el envío de la secuencia.
- Se establece en Poor cuando hay un problema leve con el envío de la secuencia.
: se establece en Good cuando no hay ningún problema con el envío de la secuencia.
- Similar a recibir 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, sugiere 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 hablante.
Todos los altavoces están desconectados Cuando el valor establecido en True, considere la posibilidad de proporcionar 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 silenciamiento.
Durante una llamada, habla mientras tiene silenciado el micrófono. Cuando el valor establecido para True considerar la posibilidad de proporcionar una notificación visual al usuario final que podría estar hablando y no 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 establecido para True considerar la posibilidad de proporcionar una notificación visual al usuario final de que su sesión de llamada actual no tiene un 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 se haya deshabilitado en el sistema o que otro proceso lo use. 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 para True dar una notificación visual al usuario final de que hay un problema con su 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 operativomuta la llamada de Azure Communication Services para que un usuario pueda responder a la llamada telefónica. Cuando el valor se establece Trueen , dé una notificación visual al usuario final de que su llamada se ha silenciado porque se ha producido una llamada telefónica. Para más información, consulte cómo controlar mejor la silenciación del sistema operativo en una sección de llamadas de Azure Communication Services para más información.
microphonePermissionDenied hay un volumen bajo del dispositivo o es casi silencioso en macOS. : se establece en True cuando se deniega el permiso de audio desde la configuración del sistema (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 Trueen , asigne una notificación visual al usuario final 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. Este diagnóstico significa que el lado remoto ve el vídeo inmovilizado en su pantalla o significa que los participantes remotos no representan el vídeo en su 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 Trueen , considere la posibilidad de notificar al usuario final que la red del participante remoto podría ser incorrecta, posiblemente sugerir que apaguen su cámara para conservar el ancho de banda. Para más información, consulte la sección Requisitos de ancho de banda de red sobre las capacidades de Internet necesarias para una llamada de Azure Communication Services.
cameraStartFailed Error genérico de la cámara. - Establézcalo True en cuando no podamos iniciar el envío de vídeo local porque es posible que el dispositivo de cámara se haya deshabilitado en el sistema o que otro proceso lo use.
- 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 Trueen , dé una notificación visual al usuario final de que la cámara no se pudo iniciar.
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 Trueen , dé una notificación visual al usuario final de que su cámara puede tener 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 se deniega el permiso de cámara desde la configuración del sistema (vídeo).
- 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 Trueen , proporcione 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 Trueen , dé una notificación visual al usuario final de que su cámara puede tener 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 del altavoz es cero.
- Se establece en False cuando el volumen del altavoz no es cero.
No escuchar audio de los participantes a la llamada. Cuando el valor se establece Trueen , 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 escuchar audio de los participantes a la llamada. Cuando el valor se establece Trueen , 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ó que usara el dispositivo en modo exclusivo. - Establézcalo en True cuando se agote el tiempo de espera (audio) de la adquisición del flujo del dispositivo del altavoz.
- Se establece en False cuando la adquisición del hablante se realiza correctamente.
No escuchar audio de los participantes en la llamada a través del hablante. Cuando el valor se establece Trueen , proporcione una notificación visual al usuario final para que pueda comprobar si otra aplicación usa 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 secuencias de dispositivo.
- Se establece en False cuando la adquisición del hablante se realiza correctamente.
No escuchar audio de los participantes en la llamada a través del hablante. 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ó que usara el dispositivo en modo exclusivo. : se establece en True cuando se agota el tiempo de espera (audio) de la adquisición del 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 Trueen , proporcione una notificación visual al usuario final para que pueda comprobar si otra aplicación usa 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 valores de diagnóstico más recientes que se generaron en la llamada actual. Si todavía no hemos recibido un valor para el diagnóstico o null.unknown para se devuelve.
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.