Diagnostics accessibles à l’utilisateur

Lorsque vous utilisez des appels dans Azure Communication Services, vous pouvez rencontrer des problèmes qui affectent vos clients. Pour vous aider à cela, Azure Communication Services fournit une fonctionnalité appelée « Diagnostics accessibles par l’utilisateur » (UFD) qui peut être utilisée pour examiner différentes propriétés d’un appel pour déterminer ce que le problème peut être. Les diagnostics accessibles par l’utilisateur sont des événements déclenchés qui peuvent indiquer en raison d’un problème sous-jacent (réseau médiocre, l’utilisateur a son microphone désactivé) qu’un utilisateur peut avoir une expérience médiocre. Une fois qu’un diagnostic accessible par l’utilisateur est déclenché, vous devez envisager d’envoyer des commentaires à un utilisateur final susceptible d’avoir un problème sous-jacent. Toutefois, la sortie diagnostic côté utilisateur est informationnelle uniquement et la pile appelante n’apporte aucune modification en fonction du déclenchement d’un diagnostic accessible par l’utilisateur.

Valeurs des diagnostics

Les diagnostics accessibles à l’utilisateur sont les suivants :

Valeurs concernant le réseau

Nom Description Valeurs possibles Cas d’utilisation Étapes de correction
noNetwork Aucun réseau n’est disponible. - Défini sur True lorsqu’un appel ne démarre pas, car aucun réseau n’est disponible.
- Défini sur False en cas de présence de candidats ICE.
L’appareil n’est pas connecté à un réseau. Assurez-vous que l’appel dispose d’une connexion Internet fiable qui peut supporter un appel vocal. Pour plus d’informations, consultez la section Optimisation du réseau.
networkRelaysNotReachable Problèmes avec un réseau. - Défini True sur le moment où le réseau a une contrainte qui ne vous permet pas d’atteindre les relais Azure Communication Services.
- Défini sur False lors de la réalisation d’un nouvel appel.
Pendant un appel lorsque le signal WiFi s’active et se désactive. Assurez-vous que les règles de pare-feu et le routage réseau autorisent le client à atteindre les serveurs Microsoft. Pour plus d’informations, consultez la section Configuration du pare-feu.
networkReconnect La connexion a été perdue et nous nous reconnectons au réseau. - Défini surBad le moment où le réseau est déconnecté
- Défini sur Poorle moment où la connectivité de transport multimédia est perdue
- Défini sur Good lorsqu’une nouvelle session est connectée.
Faible bande passante, pas d’Internet Assurez-vous que l’appel dispose d’une connexion Internet fiable qui peut supporter un appel vocal. Pour plus d’informations, consultez la section Exigences en matière de bande passante réseau.
networkReceiveQuality Indicateur concernant la qualité du flux entrant. - DéfiniBad sur le moment où il existe un problème grave lors de la réception du flux.
- Défini Poor sur le moment où il y a un problème léger avec la réception du flux.
- Défini Good sur le moment où il n’y a aucun problème de réception du flux.
Faible bande passante Assurez-vous que l’appel dispose d’une connexion Internet fiable qui peut supporter un appel vocal. Pour plus d’informations, consultez la section Exigences en matière de bande passante réseau. Suggèrez que l’utilisateur final désactive sa caméra pour conserver la bande passante Internet disponible.
networkSendQuality Indicateur concernant la qualité du flux sortant. - DéfiniBad sur le moment où il existe un problème grave lors de l’envoi du flux.
- Défini Poor sur le moment où il y a un problème léger avec l’envoi du flux.
- Défini Good sur le moment où il n’y a aucun problème avec l’envoi du flux.
Faible bande passante Assurez-vous que l’appel dispose d’une connexion Internet fiable qui peut supporter un appel vocal. Pour plus d’informations, consultez la section Exigences en matière de bande passante réseau. En outre, suggèrez que l’utilisateur final désactive sa caméra pour conserver la bande passante Internet disponible.

Valeurs concernant l’audio

Nom Description Valeurs possibles Cas d’utilisation Étapes de correction
noSpeakerDevicesEnumerated il n’existe aucun périphérique de sortie audio (haut-parleur) sur le système de l’utilisateur. - Défini sur True lorsque le système ne comporte pas d’appareil haut-parleur, et que la sélection de haut-parleur est prise en charge.
- Défini False sur le moment où il y a au moins un appareil haut-parleur sur le système, et la sélection de l’orateur est prise en charge.
Tous les haut-parleurs sont débranchés Lorsque la valeur est définie True, envisagez de donner une notification visuelle à l’utilisateur final que sa session d’appel actuelle n’a pas de haut-parleurs disponibles.
speakingWhileMicrophoneIsMuted Parler avec le micro désactivé. - Défini sur True lorsque le micro local est désactivé et que l’utilisateur local est en train de parler.
- Défini sur False lorsque l’utilisateur local cesse de parler ou réactive le micro.
* Remarque : Actuellement, cette option n’est pas prise en charge sur Safari, car les exemples de niveau audio sont extraits des statistiques WebRTC.
Pendant un appel, désactivez votre micro et parlez dedans. Lorsque la valeur est définie pour envisager de donner une True notification visuelle à l’utilisateur final qu’il peut parler et ne pas se rendre compte que son audio est désactivé.
noMicrophoneDevicesEnumerated Le système de l’utilisateur ne comporte aucun appareil de capture audio (micro) - Défini sur True lorsque le système ne comporte pas de micro.
- Défini False sur le moment où il y a au moins un périphérique microphone sur le système.
Tous les micros sont débranchés pendant l’appel. Lorsque la valeur définie pour envisager de donner une True notification visuelle à l’utilisateur final que sa session d’appel actuelle n’a pas de microphone. Pour plus d’informations, consultez la section Activer le microphone à partir du gestionnaire d’appareils.
microphoneNotFunctioning Le microphone ne fonctionne pas. - Défini sur True en cas d’échec de l’envoi du flux audio local parce que le micro a peut-être été désactivé dans le système ou qu’il est utilisé par un autre processus. Il faut environ 10 secondes pour déclencher ce périphérique.
- Défini sur False lorsque le micro recommence à envoyer correctement le flux audio.
Aucun micro disponible, accès au micro désactivé dans un système Lorsque la valeur est définie pour donner à True l’utilisateur final une notification visuelle indiquant qu’il existe un problème avec son microphone.
microphoneMuteUnexpectedly Le micro est désactivé - Défini sur True lorsque le micro est désactivé de manière inattendue.
- Défini sur False lorsque le micro commence à envoyer correctement le flux audio.
Le micro est désactivé dans le système. La plupart des cas se produisent lorsque l’utilisateur passe un appel Azure Communication Services sur un appareil mobile et qu’un appel téléphonique arrive. Dans la plupart des cas, le système d’exploitation mute l’appel Azure Communication Services afin qu’un utilisateur puisse répondre à l’appel téléphonique. Lorsque la valeur est définie True, donnez à l’utilisateur final une notification visuelle indiquant que son appel a été désactivé parce qu’un appel téléphonique est entré. Pour plus d’informations, consultez comment gérer le meilleur fonctionnement du système d’exploitation en mutant une section d’appel Azure Communication Services pour plus d’informations.
microphonePermissionDenied il existe un volume faible à partir de l’appareil ou il est presque silencieux sur macOS. - Défini sur True le moment où l’autorisation audio est refusée à partir des paramètres système (audio).
- Défini sur False en cas de réussite d’acquisition de flux.
Remarque : ce diagnostic fonctionne uniquement sous macOS.
Les autorisations de micro sont désactivées dans les Paramètres. Lorsque la valeur est définie True, donnez à l’utilisateur final une notification visuelle indiquant qu’il n’a pas activé l’autorisation d’utiliser le microphone pour un appel Azure Communication Services.

Valeurs concernant la caméra

Nom Description Valeurs possibles Cas d’utilisation Étapes de correction
cameraFreeze La caméra cesse de produire des images pendant plus de 5 secondes. - Défini sur True lorsque le flux de vidéo local est figé. Ce diagnostic signifie que le côté distant voit votre vidéo figée sur son écran ou signifie que les participants distants ne rendent pas votre vidéo sur leur écran.
- Défini sur False lorsque le blocage se termine et que les utilisateurs peuvent voir votre vidéo normalement.
La caméra a été perdue pendant l’appel ou un mauvais réseau a entraîné le blocage de la caméra. Lorsque la valeur est définie True, envisagez d’accorder une notification à l’utilisateur final indiquant que le réseau de participants distants peut être incorrect, ce qui peut suggérer qu’il désactive son appareil photo pour conserver la bande passante. Pour plus d’informations, consultez la section Exigences en bande passante réseau sur les capacités Internet nécessaires pour un appel Azure Communication Services.
cameraStartFailed Échec générique de la caméra. - Défini sur True en cas d’échec de l’envoi de vidéo locale parce que la caméra a peut-être été désactivée dans le système ou qu’elle est utilisée par un autre processus.
- Défini sur False lorsque la caméra sélectionnée parvient à nouveau à envoyer la vidéo locale.
Défaillances de caméra Lorsque la valeur est définie True, donnez à l’utilisateur final une notification visuelle indiquant que son appareil photo n’a pas pu démarrer.
cameraStartTimedOut Scénario courant où la caméra est dans un mauvais état de fonctionnement. - Défini sur True en cas d’expiration du délai d’attente d’envoi du flux vidéo de la caméra.
- Défini sur False lorsque la caméra sélectionnée parvient à nouveau à envoyer la vidéo locale.
Défaillances de caméra Lorsque la valeur est définie True, donnez une notification visuelle à l’utilisateur final que son appareil photo rencontre peut-être des problèmes. (Lorsque la valeur est définie sur False, supprimer la notification).
cameraPermissionDenied Les autorisations de caméra ont été refusées dans les paramètres. - Défini sur True le moment où l’autorisation de la caméra est refusée à partir des paramètres système (vidéo).
- Défini sur False en cas de réussite d’acquisition de flux.
Remarque : ce diagnostic fonctionne uniquement sous macOS Chrome.
Les autorisations de caméra sont désactivées dans les paramètres. Lorsque la valeur est définie True, donnez à l’utilisateur final une notification visuelle indiquant qu’il n’a pas autorisé l’utilisation de la caméra pour un appel Azure Communication Services.
cameraStoppedUnexpectedly Dysfonctionnement de la caméra - Défini sur True lorsque la caméra bascule dans un état d’arrêt de manière inattendue.
- Défini sur False lorsque la caméra recommence à envoyer correctement le flux vidéo.
Vérifier que la caméra fonctionne correctement. Lorsque la valeur est définie True, donnez une notification visuelle à l’utilisateur final que son appareil photo rencontre peut-être des problèmes. (Lorsque la valeur est définie sur False, supprimer la notification).

Valeurs concernant d’autres aspects

Nom Description Valeurs possibles Cas d’utilisation Procédure d’atténuation
screenshareRecordingDisabled Le partage d’écran système a été refusé à partir des préférences de Paramètres. - Défini sur True le moment où l’autorisation de partage d’écran est refusée à partir des paramètres système (partage).
- Défini sur False en cas de réussite d’acquisition de flux.
Remarque : ce diagnostic fonctionne uniquement sous macOS.Chrome.
L’enregistrement d’écran est désactivé dans les Paramètres. Lorsque la valeur est définie True, donnez une notification visuelle à l’utilisateur final qu’il n’a pas activé l’autorisation de partager son écran pour un appel Azure Communication Services.
capturerStartFailed Échec du partage de l’écran système. - Défini sur True lorsque le démarrage de la capture de l’écran échoue.
- Défini sur False lorsque la capture de l’écran peut débuter correctement.
Lorsque la valeur est définie True, donnez à l’utilisateur final une notification visuelle indiquant qu’il y avait peut-être un problème de partage de son écran. (Lorsque la valeur est rétablie False, supprimez la notification).
capturerStoppedUnexpectedly Dysfonctionnement du partage d’écran système - Défini sur True lorsque la capture de l’écran bascule dans un état d’arrêt de manière inattendue.
- Défini sur False lorsque la capture de l’écran recommence à fonctionner.
Vérifier que le partage d’écran fonctionne correctement Lorsque la valeur est définie True, donnez à l’utilisateur final une notification visuelle indiquant qu’il y a peut-être un problème qui provoque l’arrêt du partage de son écran. (Lorsque la valeur est définie sur False, supprimer la notification).

Accès aux diagnostics

Les diagnostics accessibles à l’utilisateur constituent une fonctionnalité étendue de l’API Call de base et vous permettent de diagnostiquer un appel actif.

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

Événements de diagnostics accessibles à l’utilisateur

  • Abonnez-vous à l’événement diagnosticChanged pour superviser tout changement de diagnostic accessible à l’utilisateur.
/**
 *  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);

Obtenir les derniers diagnostics accessibles à l’utilisateur

  • Obtenez les dernières valeurs de diagnostic qui ont été générées. Un diagnostic n’est pas défini s’il n’a jamais été déclenché.
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}`
);

Valeurs des diagnostics

Les diagnostics accessibles à l’utilisateur sont les suivants :

Valeurs concernant le réseau

Nom Description Valeurs possibles Cas d’utilisation Étapes de correction
networkUnavailable Aucun réseau n’est disponible. - Défini sur True lorsqu’un appel ne démarre pas, car aucun réseau n’est disponible.
- Défini sur False en cas de présence de candidats ICE.
L’appareil n’est pas connecté à un réseau. Assurez-vous que l’appel dispose d’une connexion Internet fiable qui peut supporter un appel vocal. Pour plus d’informations, consultez la section Optimisation du réseau.
networkRelaysUnreachable Problèmes avec un réseau. - Défini True sur le moment où le réseau a une contrainte qui ne vous permet pas d’atteindre les relais Azure Communication Services.
- Défini sur False lors de la réalisation d’un nouvel appel.
Pendant un appel lorsque le signal WiFi s’active et se désactive. Assurez-vous que les règles de pare-feu et le routage réseau autorisent le client à atteindre les serveurs Microsoft. Pour plus d’informations, consultez la section Configuration du pare-feu.
networkReconnectionQuality La connexion a été perdue et nous nous reconnectons au réseau. - Défini surBad le moment où le réseau est déconnecté
- Défini sur Poorle moment où la connectivité de transport multimédia est perdue
- Défini sur Good lorsqu’une nouvelle session est connectée.
Faible bande passante, pas d’Internet Assurez-vous que l’appel dispose d’une connexion Internet fiable qui peut supporter un appel vocal. Pour plus d’informations, consultez la section Exigences en matière de bande passante réseau.
networkReceiveQuality Indicateur concernant la qualité du flux entrant. - DéfiniBad sur le moment où il existe un problème grave lors de la réception du flux.
- Défini Poor sur le moment où il y a un problème léger avec la réception du flux.
- Défini Good sur le moment où il n’y a aucun problème de réception du flux.
- Il n’est visible que s’il existe un flux audio actif dans l’appel, ce qui signifie qu’un participant parle activement pendant une période donnée.
Faible bande passante Assurez-vous que l’appel dispose d’une connexion Internet fiable qui peut supporter un appel vocal. Pour plus d’informations, consultez la section Exigences en matière de bande passante réseau. Suggèrez que l’utilisateur final désactive sa caméra pour conserver la bande passante Internet disponible.
networkSendQuality Indicateur concernant la qualité du flux sortant. - DéfiniBad sur le moment où il existe un problème grave lors de l’envoi du flux.
- Défini Poor sur le moment où il y a un problème léger avec l’envoi du flux.
- Défini Good sur le moment où il n’y a aucun problème avec l’envoi du flux.
- Comme pour recevoir un diagnostic de qualité, il n’est visible que s’il existe un flux audio actif dans l’appel, ce qui signifie qu’un participant parle activement pendant une période de temps. Mais il fonctionne uniquement dans un appel 1 :1 car il s’appuie sur des informations de l’autre côté afin de vérifier la qualité. Où l’autre côté doit signaler les données reçues.
Faible bande passante Assurez-vous que l’appel dispose d’une connexion Internet fiable qui peut supporter un appel vocal. Pour plus d’informations, consultez la section Exigences en matière de bande passante réseau. En outre, suggèrez que l’utilisateur final désactive son appareil photo pour conserver la bande passante Internet disponible.

Valeurs concernant l’audio

Nom Description Valeurs possibles Cas d’utilisation Étapes de correction
noSpeakerDevicesAvailable il n’existe aucun périphérique de sortie audio (haut-parleur) sur le système de l’utilisateur. - Défini sur True lorsque le système ne comporte pas d’appareil haut-parleur, et que la sélection de haut-parleur est prise en charge.
- Défini False sur le moment où il y a au moins un appareil haut-parleur sur le système, et la sélection de l’orateur est prise en charge.
Tous les haut-parleurs sont débranchés Lorsque la valeur est définie True, envisagez de donner une notification visuelle à l’utilisateur final que sa session d’appel actuelle n’a pas de haut-parleurs disponibles.
speakingWhileMicrophoneIsMuted Parler avec le micro désactivé. - Défini sur True lorsque le micro local est désactivé et que l’utilisateur local est en train de parler.
- Défini sur False lorsque l’utilisateur local cesse de parler ou réactive le micro.
- Cet événement de diagnostic peut être automatiquement désactivé s’il est déclenché pendant une certaine quantité de fois sans aucune action de l’utilisateur pour éviter le bruit et offrir une meilleure expérience utilisateur. Elle sera réactivé lorsqu’une nouvelle action de désactivation du son se produit.
Pendant un appel, désactivez votre micro et parlez dedans. Lorsque la valeur est définie pour envisager de donner une True notification visuelle à l’utilisateur final qu’il peut parler et ne pas se rendre compte que son audio est désactivé.
noMicrophoneDevicesAvailable Le système de l’utilisateur ne comporte aucun appareil de capture audio (micro) - Défini sur True lorsque le système ne comporte pas de micro.
- Défini False sur le moment où il y a au moins un périphérique microphone sur le système.
Tous les micros sont débranchés pendant l’appel. Lorsque la valeur définie pour envisager de donner une True notification visuelle à l’utilisateur final que sa session d’appel actuelle n’a pas de microphone. Pour plus d’informations, consultez la section Activer le microphone à partir du gestionnaire d’appareils.
microphoneNotFunctioning Le microphone ne fonctionne pas. - Défini True sur le moment où nous ne parvenons pas à envoyer le flux audio local, car l’appareil microphone a peut-être été désactivé dans le système ou il est utilisé par un autre processus. Il faut environ 10 secondes pour déclencher ce périphérique.
- Défini sur False lorsque le micro recommence à envoyer correctement le flux audio.
Aucun micro disponible, accès au micro désactivé dans un système Lorsque la valeur est définie pour donner à True l’utilisateur final une notification visuelle indiquant qu’il existe un problème avec son microphone.
microphoneMuteUnexpectedly Le micro est désactivé - Défini sur True lorsque le micro est désactivé de manière inattendue.
- Défini sur False lorsque le micro commence à envoyer correctement le flux audio.
Le micro est désactivé dans le système. La plupart des cas se produisent lorsque l’utilisateur passe un appel Azure Communication Services sur un appareil mobile et qu’un appel téléphonique arrive. Dans la plupart des cas, le système d’exploitation mute l’appel Azure Communication Services afin qu’un utilisateur puisse répondre à l’appel téléphonique. Lorsque la valeur est définie True, donnez à l’utilisateur final une notification visuelle indiquant que son appel a été désactivé parce qu’un appel téléphonique est entré. Pour plus d’informations, consultez comment gérer le meilleur fonctionnement du système d’exploitation en mutant une section d’appel Azure Communication Services pour plus d’informations.
microphonePermissionDenied il existe un volume faible à partir de l’appareil ou il est presque silencieux sur macOS. - Défini sur True le moment où l’autorisation audio est refusée à partir des paramètres système (audio).
- Défini sur False en cas de réussite d’acquisition de flux.
Remarque : ce diagnostic fonctionne uniquement sous macOS.
Les autorisations de micro sont désactivées dans les Paramètres. Lorsque la valeur est définie True, donnez à l’utilisateur final une notification visuelle indiquant qu’il n’a pas autorisé à utiliser le microphone pour un appel Azure Communication Services.

Valeurs concernant la caméra

Nom Description Valeurs possibles Cas d’utilisation Étapes de correction
cameraFrozen La caméra cesse de produire des images pendant plus de 5 secondes. - Défini sur True lorsque le flux de vidéo local est figé. Ce diagnostic signifie que le côté distant voit votre vidéo figée sur son écran ou signifie que les participants distants ne rendent pas votre vidéo sur leur écran.
- Défini sur False lorsque le blocage se termine et que les utilisateurs peuvent voir votre vidéo normalement.
La caméra a été perdue pendant l’appel ou un mauvais réseau a entraîné le blocage de la caméra. Lorsque la valeur est définie True, envisagez d’accorder une notification à l’utilisateur final indiquant que le réseau de participants distants peut être incorrect, ce qui peut suggérer qu’il désactive son appareil photo pour conserver la bande passante. Pour plus d’informations, consultez la section Exigences en bande passante réseau sur les capacités Internet nécessaires pour un appel Azure Communication Services.
cameraStartFailed Échec générique de la caméra. - Défini True sur quand nous ne parvenons pas à envoyer une vidéo locale, car l’appareil photo a peut-être été désactivé dans le système ou il est utilisé par un autre processus~.
- Défini sur False lorsque la caméra sélectionnée parvient à nouveau à envoyer la vidéo locale.
Défaillances de caméra Lorsque la valeur est définie True, donnez à l’utilisateur final une notification visuelle indiquant que son appareil photo n’a pas pu démarrer.
cameraStartTimedOut Scénario courant où la caméra est dans un mauvais état de fonctionnement. - Défini sur True en cas d’expiration du délai d’attente d’envoi du flux vidéo de la caméra.
- Défini sur False lorsque la caméra sélectionnée parvient à nouveau à envoyer la vidéo locale.
Défaillances de caméra Lorsque la valeur est définie True, donnez une notification visuelle à l’utilisateur final que son appareil photo rencontre peut-être des problèmes. (Lorsque la valeur est définie sur False, supprimer la notification).
cameraPermissionDenied Les autorisations de caméra ont été refusées dans les paramètres. - Défini sur True le moment où l’autorisation de la caméra est refusée à partir des paramètres système (vidéo).
- Défini sur False en cas de réussite d’acquisition de flux.
Remarque : ce diagnostic fonctionne uniquement sous macOS Chrome.
Les autorisations de caméra sont désactivées dans les paramètres. Lorsque la valeur est définie True, donnez à l’utilisateur final une notification visuelle indiquant qu’il n’a pas activé l’autorisation d’utiliser la caméra pour un appel Azure Communication Services.
cameraStoppedUnexpectedly Dysfonctionnement de la caméra - Défini sur True lorsque la caméra bascule dans un état d’arrêt de manière inattendue.
- Défini sur False lorsque la caméra recommence à envoyer correctement le flux vidéo.
Vérifier que la caméra fonctionne correctement. Lorsque la valeur est définie True, donnez une notification visuelle à l’utilisateur final que son appareil photo rencontre peut-être des problèmes. (Lorsque la valeur est définie sur False, supprimer la notification).

Natif uniquement

Nom Description Valeurs possibles Cas d’utilisation Procédure d’atténuation
speakerVolumeIsZero Volume zéro sur un appareil (haut-parleur). - Défini sur le moment où le volume de l’orateur est égal à True zéro.
- Défini sur le moment où le volume de l’orateur n’est pas égal à False zéro.
Ne pas entendre l’audio des participants à l’appel. Lorsque la valeur est définie True, vous pouvez avoir accidentellement le volume au plus bas(zéro).
speakerMuted L’appareil du haut-parleur est désactivé. - Défini sur True le moment où l’appareil du haut-parleur est désactivé.
- Défini sur False le moment où l’appareil du haut-parleur n’est pas désactivé.
Ne pas entendre l’audio des participants à l’appel. Lorsque la valeur est définie True, vous avez peut-être désactivé accidentellement l’orateur.
speakerBusy L’orateur est déjà utilisé. Soit l’appareil est utilisé en mode exclusif, soit l’appareil est utilisé en mode partagé et l’appelant a demandé à utiliser l’appareil en mode exclusif. - Défini True sur quand l’acquisition du flux de flux de l’appareil haut-parleur expire (audio).
- Défini sur False le moment où l’acquisition de l’orateur réussit.
Ne pas entendre l’audio des participants à l’appel par le biais de l’orateur. Lorsque la valeur est définieTrue, donnez une notification visuelle à l’utilisateur final afin qu’il puisse case activée si une autre application utilise l’orateur et essayez de la fermer.
speakerNotFunctioning Le haut-parleur ne fonctionne pas (échec de l’initialisation du client d’appareil audio ou de l’appareil est devenu inactif pendant plus de 5 secondes) - Défini sur True le moment où le haut-parleur n’est pas disponible ou si l’acquisition de flux d’appareil expire (audio).
- Défini sur False le moment où l’acquisition de l’orateur réussit.
Ne pas entendre l’audio des participants à l’appel par le biais de l’orateur. Essayez de case activée l’état de l’appareil haut-parleur.
microphoneBusy Le microphone est déjà utilisé. Soit l’appareil est utilisé en mode exclusif, soit l’appareil est utilisé en mode partagé et l’appelant a demandé à utiliser l’appareil en mode exclusif. - Défini sur True le moment où l’acquisition du flux de flux de microphone expire (audio).
- Défini sur False le moment où l’acquisition du microphone réussit.
Votre audio n’atteint pas d’autres participants dans l’appel. Lorsque la valeur est définieTrue, donnez une notification visuelle à l’utilisateur final afin qu’il puisse case activée si une autre application utilise le microphone et essayez de la fermer.

Accès aux diagnostics

Les diagnostics accessibles à l’utilisateur constituent une fonctionnalité étendue de l’API Call de base et vous permettent de diagnostiquer un appel actif.

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

Événements de diagnostics accessibles à l’utilisateur

  • Obtenez l’objet de fonctionnalité et ajoutez des écouteurs aux événements de diagnostic.
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);

Obtenir les derniers diagnostics accessibles à l’utilisateur

  • Obtenez les dernières valeurs de diagnostic qui ont été déclenchées lors de l’appel actuel. Si nous n’avons toujours pas reçu de valeur pour le diagnostic, une exception est levée.
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 ...

Valeurs des diagnostics

Les diagnostics accessibles à l’utilisateur sont les suivants :

Valeurs concernant le réseau

Nom Description Valeurs possibles Cas d’utilisation Étapes de correction
networkUnavailable Aucun réseau n’est disponible. - Défini sur True lorsqu’un appel ne démarre pas, car aucun réseau n’est disponible.
- Défini sur False en cas de présence de candidats ICE.
L’appareil n’est pas connecté à un réseau. Assurez-vous que l’appel dispose d’une connexion Internet fiable qui peut supporter un appel vocal. Pour plus d’informations, consultez la section Optimisation du réseau.
networkRelaysUnreachable Problèmes avec un réseau. - Défini True sur le moment où le réseau a une contrainte qui ne vous permet pas d’atteindre les relais Azure Communication Services.
- Défini sur False lors de la réalisation d’un nouvel appel.
Pendant un appel lorsque le signal WiFi s’active et se désactive. Assurez-vous que les règles de pare-feu et le routage réseau autorisent le client à atteindre les serveurs Microsoft. Pour plus d’informations, consultez la section Configuration du pare-feu.
networkReconnectionQuality La connexion a été perdue et nous nous reconnectons au réseau. - Défini surBad le moment où le réseau est déconnecté
- Défini sur Poorle moment où la connectivité de transport multimédia est perdue
- Défini sur Good lorsqu’une nouvelle session est connectée.
Faible bande passante, pas d’Internet Assurez-vous que l’appel dispose d’une connexion Internet fiable qui peut supporter un appel vocal. Pour plus d’informations, consultez la section Exigences en matière de bande passante réseau.
networkReceiveQuality Indicateur concernant la qualité du flux entrant. - DéfiniBad sur le moment où il existe un problème grave lors de la réception du flux.
- Défini Poor sur le moment où il y a un problème léger avec la réception du flux.
- Défini Good sur le moment où il n’y a aucun problème de réception du flux.
- Il n’est visible que s’il existe un flux audio actif dans l’appel, ce qui signifie qu’un participant parle activement pendant une période donnée.
Faible bande passante Assurez-vous que l’appel dispose d’une connexion Internet fiable qui peut supporter un appel vocal. Pour plus d’informations, consultez la section Exigences en matière de bande passante réseau. Suggèrez que l’utilisateur final désactive sa caméra pour conserver la bande passante Internet disponible.
networkSendQuality Indicateur concernant la qualité du flux sortant. - DéfiniBad sur le moment où il existe un problème grave lors de l’envoi du flux.
- Défini Poor sur le moment où il y a un problème léger avec l’envoi du flux.
- Défini Good sur le moment où il n’y a aucun problème avec l’envoi du flux.
- Comme pour recevoir un diagnostic de qualité, il n’est visible que s’il existe un flux audio actif dans l’appel, ce qui signifie qu’un participant parle activement pendant une période de temps. Mais il fonctionne uniquement dans un appel 1 :1 car il s’appuie sur des informations de l’autre côté afin de vérifier la qualité. Où l’autre côté doit signaler les données reçues.
Faible bande passante Assurez-vous que l’appel dispose d’une connexion Internet fiable qui peut supporter un appel vocal. Pour plus d’informations, consultez la section Exigences en matière de bande passante réseau. En outre, suggèrez que l’utilisateur final désactive son appareil photo pour conserver la bande passante Internet disponible.

Valeurs concernant l’audio

Nom Description Valeurs possibles Cas d’utilisation Étapes de correction
noSpeakerDevicesAvailable il n’existe aucun périphérique de sortie audio (haut-parleur) sur le système de l’utilisateur. - Défini sur True lorsque le système ne comporte pas d’appareil haut-parleur, et que la sélection de haut-parleur est prise en charge.
- Défini False sur le moment où il y a au moins un appareil haut-parleur sur le système, et la sélection de l’orateur est prise en charge.
Tous les haut-parleurs sont débranchés Lorsque la valeur est définie True, envisagez de donner une notification visuelle à l’utilisateur final que sa session d’appel actuelle n’a pas de haut-parleurs disponibles.
speakingWhileMicrophoneIsMuted Parler avec le micro désactivé. - Défini sur True lorsque le micro local est désactivé et que l’utilisateur local est en train de parler.
- Défini sur False lorsque l’utilisateur local cesse de parler ou réactive le micro.
- Cet événement de diagnostic peut être automatiquement désactivé s’il est déclenché pendant une certaine quantité de fois sans aucune action de l’utilisateur pour éviter le bruit et offrir une meilleure expérience utilisateur. Elle sera réactivé lorsqu’une nouvelle action de désactivation du son se produit.
Pendant un appel, désactivez votre micro et parlez dedans. Lorsque la valeur est définie pour envisager de donner une True notification visuelle à l’utilisateur final qu’il peut parler et ne pas se rendre compte que son audio est désactivé.
noMicrophoneDevicesAvailable Le système de l’utilisateur ne comporte aucun appareil de capture audio (micro) - Défini sur True lorsque le système ne comporte pas de micro.
- Défini False sur le moment où il y a au moins un périphérique microphone sur le système.
Tous les micros sont débranchés pendant l’appel. Lorsque la valeur définie pour envisager de donner une True notification visuelle à l’utilisateur final que sa session d’appel actuelle n’a pas de microphone. Pour plus d’informations, consultez la section Activer le microphone à partir du gestionnaire d’appareils.
microphoneNotFunctioning Le microphone ne fonctionne pas. - Défini True sur le moment où nous ne parvenons pas à envoyer le flux audio local, car l’appareil microphone a peut-être été désactivé dans le système ou il est utilisé par un autre processus. Il faut environ 10 secondes pour déclencher ce périphérique.
- Défini sur False lorsque le micro recommence à envoyer correctement le flux audio.
Aucun micro disponible, accès au micro désactivé dans un système Lorsque la valeur est définie pour donner à True l’utilisateur final une notification visuelle indiquant qu’il existe un problème avec son microphone.
microphoneMuteUnexpectedly Le micro est désactivé - Défini sur True lorsque le micro est désactivé de manière inattendue.
- Défini sur False lorsque le micro commence à envoyer correctement le flux audio.
Le micro est désactivé dans le système. La plupart des cas se produisent lorsque l’utilisateur passe un appel Azure Communication Services sur un appareil mobile et qu’un appel téléphonique arrive. Dans la plupart des cas, le système d’exploitation mute l’appel Azure Communication Services afin qu’un utilisateur puisse répondre à l’appel téléphonique. Lorsque la valeur est définie True, donnez à l’utilisateur final une notification visuelle indiquant que son appel a été désactivé parce qu’un appel téléphonique est entré. Pour plus d’informations, consultez comment gérer le meilleur fonctionnement du système d’exploitation en mutant une section d’appel Azure Communication Services pour plus d’informations.
microphonePermissionDenied il existe un volume faible à partir de l’appareil ou il est presque silencieux sur macOS. - Défini sur True le moment où l’autorisation audio est refusée à partir des paramètres système (audio).
- Défini sur False en cas de réussite d’acquisition de flux.
Remarque : ce diagnostic fonctionne uniquement sous macOS.
Les autorisations de micro sont désactivées dans les Paramètres. Lorsque la valeur est définie True, donnez à l’utilisateur final une notification visuelle indiquant qu’il n’a pas autorisé à utiliser le microphone pour un appel Azure Communication Services.

Valeurs concernant la caméra

Nom Description Valeurs possibles Cas d’utilisation Étapes de correction
cameraFrozen La caméra cesse de produire des images pendant plus de 5 secondes. - Défini sur True lorsque le flux de vidéo local est figé. Ce diagnostic signifie que le côté distant voit votre vidéo figée sur son écran ou signifie que les participants distants ne rendent pas votre vidéo sur leur écran.
- Défini sur False lorsque le blocage se termine et que les utilisateurs peuvent voir votre vidéo normalement.
La caméra a été perdue pendant l’appel ou un mauvais réseau a entraîné le blocage de la caméra. Lorsque la valeur est définie True, envisagez d’accorder une notification à l’utilisateur final indiquant que le réseau de participants distants peut être incorrect, ce qui peut suggérer qu’il désactive son appareil photo pour conserver la bande passante. Pour plus d’informations, consultez la section Exigences en bande passante réseau sur les capacités Internet nécessaires pour un appel Azure Communication Services.
cameraStartFailed Échec générique de la caméra. - Défini True sur quand nous ne parvenons pas à envoyer une vidéo locale, car l’appareil photo a peut-être été désactivé dans le système ou il est utilisé par un autre processus~.
- Défini sur False lorsque la caméra sélectionnée parvient à nouveau à envoyer la vidéo locale.
Défaillances de caméra Lorsque la valeur est définie True, donnez à l’utilisateur final une notification visuelle indiquant que son appareil photo n’a pas pu démarrer.
cameraStartTimedOut Scénario courant où la caméra est dans un mauvais état de fonctionnement. - Défini sur True en cas d’expiration du délai d’attente d’envoi du flux vidéo de la caméra.
- Défini sur False lorsque la caméra sélectionnée parvient à nouveau à envoyer la vidéo locale.
Défaillances de caméra Lorsque la valeur est définie True, donnez une notification visuelle à l’utilisateur final que son appareil photo rencontre peut-être des problèmes. (Lorsque la valeur est définie sur False, supprimer la notification).
cameraPermissionDenied Les autorisations de caméra ont été refusées dans les paramètres. - Défini sur True le moment où l’autorisation de la caméra est refusée à partir des paramètres système (vidéo).
- Défini sur False en cas de réussite d’acquisition de flux.
Remarque : ce diagnostic fonctionne uniquement sous macOS Chrome.
Les autorisations de caméra sont désactivées dans les paramètres. Lorsque la valeur est définie True, donnez à l’utilisateur final une notification visuelle indiquant qu’il n’a pas activé l’autorisation d’utiliser la caméra pour un appel Azure Communication Services.
cameraStoppedUnexpectedly Dysfonctionnement de la caméra - Défini sur True lorsque la caméra bascule dans un état d’arrêt de manière inattendue.
- Défini sur False lorsque la caméra recommence à envoyer correctement le flux vidéo.
Vérifier que la caméra fonctionne correctement. Lorsque la valeur est définie True, donnez une notification visuelle à l’utilisateur final que son appareil photo rencontre peut-être des problèmes. (Lorsque la valeur est définie sur False, supprimer la notification).

Natif uniquement

Nom Description Valeurs possibles Cas d’utilisation Procédure d’atténuation
speakerVolumeIsZero Volume zéro sur un appareil (haut-parleur). - Défini sur le moment où le volume de l’orateur est égal à True zéro.
- Défini sur le moment où le volume de l’orateur n’est pas égal à False zéro.
Ne pas entendre l’audio des participants à l’appel. Lorsque la valeur est définie True, vous pouvez avoir accidentellement le volume au plus bas(zéro).
speakerMuted L’appareil du haut-parleur est désactivé. - Défini sur True le moment où l’appareil du haut-parleur est désactivé.
- Défini sur False le moment où l’appareil du haut-parleur n’est pas désactivé.
Ne pas entendre l’audio des participants à l’appel. Lorsque la valeur est définie True, vous avez peut-être désactivé accidentellement l’orateur.
speakerBusy L’orateur est déjà utilisé. Soit l’appareil est utilisé en mode exclusif, soit l’appareil est utilisé en mode partagé et l’appelant a demandé à utiliser l’appareil en mode exclusif. - Défini True sur quand l’acquisition du flux de flux de l’appareil haut-parleur expire (audio).
- Défini sur False le moment où l’acquisition de l’orateur réussit.
Ne pas entendre l’audio des participants à l’appel par le biais de l’orateur. Lorsque la valeur est définieTrue, donnez une notification visuelle à l’utilisateur final afin qu’il puisse case activée si une autre application utilise l’orateur et essayez de la fermer.
speakerNotFunctioning Le haut-parleur ne fonctionne pas (échec de l’initialisation du client d’appareil audio ou de l’appareil est devenu inactif pendant plus de 5 secondes) - Défini sur True le moment où le haut-parleur n’est pas disponible ou si l’acquisition de flux d’appareil expire (audio).
- Défini sur False le moment où l’acquisition de l’orateur réussit.
Ne pas entendre l’audio des participants à l’appel par le biais de l’orateur. Essayez de case activée l’état de l’appareil haut-parleur.
microphoneBusy Le microphone est déjà utilisé. Soit l’appareil est utilisé en mode exclusif, soit l’appareil est utilisé en mode partagé et l’appelant a demandé à utiliser l’appareil en mode exclusif. - Défini sur True le moment où l’acquisition du flux de flux de microphone expire (audio).
- Défini sur False le moment où l’acquisition du microphone réussit.
Votre audio n’atteint pas d’autres participants dans l’appel. Lorsque la valeur est définieTrue, donnez une notification visuelle à l’utilisateur final afin qu’il puisse case activée si une autre application utilise le microphone et essayez de la fermer.

Accès aux diagnostics

Les diagnostics accessibles à l’utilisateur constituent une fonctionnalité étendue de l’API Call de base et vous permettent de diagnostiquer un appel actif.

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

Événements de diagnostics accessibles à l’utilisateur

  • Implémentez les délégués pour et network les media sources de diagnostic. MediaDiagnosticsDelegate et NetworkDiagnosticsDelegate.
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...
  }
}
  • Maintenez une référence à media et des diagnostics et network définissez un objet délégué pour écouter les événements.
self.mediaDiagnostics = userFacingDiagnostics?.media
self.networkDiagnostics = userFacingDiagnostics?.network
self.mediaDiagnostics?.delegate = self.callObserver
self.networkDiagnostics?.delegate = self.callObserver

Remarque

Si vous avez CallKit activé via le Kit de développement logiciel (SDK) ou implémentez l’intégration de CallKit dans votre application, la création de rapports sur l’état du mute de CallKit peut entraîner le relâchement du système d’exploitation en raison de raisons de confidentialité qui entraîneraient le non-fonctionnement de l’événement didIsSpeakingWhileMicrophoneIsMuted comme prévu, car nous ne pouvons pas capturer l’entrée de l’appareil microphone pour détecter que l’utilisateur parle.

Obtenir les derniers diagnostics accessibles à l’utilisateur

  • Obtenez les dernières valeurs de diagnostic qui ont été générées. Si nous n’avons toujours pas reçu de valeur pour le diagnostic, nil ou .unknown si nous sommes retournés.
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.

Valeurs des diagnostics

Les diagnostics accessibles à l’utilisateur sont les suivants :

Valeurs concernant le réseau

Nom Description Valeurs possibles Cas d’utilisation Étapes de correction
networkUnavailable Aucun réseau n’est disponible. - Défini sur True lorsqu’un appel ne démarre pas, car aucun réseau n’est disponible.
- Défini sur False en cas de présence de candidats ICE.
L’appareil n’est pas connecté à un réseau. Assurez-vous que l’appel dispose d’une connexion Internet fiable qui peut supporter un appel vocal. Pour plus d’informations, consultez la section Optimisation du réseau.
networkRelaysUnreachable Problèmes avec un réseau. - Défini True sur le moment où le réseau a une contrainte qui ne vous permet pas d’atteindre les relais Azure Communication Services.
- Défini sur False lors de la réalisation d’un nouvel appel.
Pendant un appel lorsque le signal WiFi s’active et se désactive. Assurez-vous que les règles de pare-feu et le routage réseau autorisent le client à atteindre les serveurs Microsoft. Pour plus d’informations, consultez la section Configuration du pare-feu.
networkReconnectionQuality La connexion a été perdue et nous nous reconnectons au réseau. - Défini surBad le moment où le réseau est déconnecté
- Défini sur Poorle moment où la connectivité de transport multimédia est perdue
- Défini sur Good lorsqu’une nouvelle session est connectée.
Faible bande passante, pas d’Internet Assurez-vous que l’appel dispose d’une connexion Internet fiable qui peut supporter un appel vocal. Pour plus d’informations, consultez la section Exigences en matière de bande passante réseau.
networkReceiveQuality Indicateur concernant la qualité du flux entrant. - DéfiniBad sur le moment où il existe un problème grave lors de la réception du flux.
- Défini Poor sur le moment où il y a un problème léger avec la réception du flux.
- Défini Good sur le moment où il n’y a aucun problème de réception du flux.
- Il n’est visible que s’il existe un flux audio actif dans l’appel, ce qui signifie qu’un participant parle activement pendant une période donnée.
Faible bande passante Assurez-vous que l’appel dispose d’une connexion Internet fiable qui peut supporter un appel vocal. Pour plus d’informations, consultez la section Exigences en matière de bande passante réseau. Suggèrez que l’utilisateur final désactive sa caméra pour conserver la bande passante Internet disponible.
networkSendQuality Indicateur concernant la qualité du flux sortant. - DéfiniBad sur le moment où il existe un problème grave lors de l’envoi du flux.
- Défini Poor sur le moment où il y a un problème léger avec l’envoi du flux.
- Défini Good sur le moment où il n’y a aucun problème avec l’envoi du flux.
- Comme pour recevoir un diagnostic de qualité, il n’est visible que s’il existe un flux audio actif dans l’appel, ce qui signifie qu’un participant parle activement pendant une période de temps. Mais il fonctionne uniquement dans un appel 1 :1 car il s’appuie sur des informations de l’autre côté afin de vérifier la qualité. Où l’autre côté doit signaler les données reçues.
Faible bande passante Assurez-vous que l’appel dispose d’une connexion Internet fiable qui peut supporter un appel vocal. Pour plus d’informations, consultez la section Exigences en matière de bande passante réseau. En outre, suggèrez que l’utilisateur final désactive son appareil photo pour conserver la bande passante Internet disponible.

Valeurs concernant l’audio

Nom Description Valeurs possibles Cas d’utilisation Étapes de correction
noSpeakerDevicesAvailable il n’existe aucun périphérique de sortie audio (haut-parleur) sur le système de l’utilisateur. - Défini sur True lorsque le système ne comporte pas d’appareil haut-parleur, et que la sélection de haut-parleur est prise en charge.
- Défini False sur le moment où il y a au moins un appareil haut-parleur sur le système, et la sélection de l’orateur est prise en charge.
Tous les haut-parleurs sont débranchés Lorsque la valeur est définie True, envisagez de donner une notification visuelle à l’utilisateur final que sa session d’appel actuelle n’a pas de haut-parleurs disponibles.
speakingWhileMicrophoneIsMuted Parler avec le micro désactivé. - Défini sur True lorsque le micro local est désactivé et que l’utilisateur local est en train de parler.
- Défini sur False lorsque l’utilisateur local cesse de parler ou réactive le micro.
- Cet événement de diagnostic peut être automatiquement désactivé s’il est déclenché pendant une certaine quantité de fois sans aucune action de l’utilisateur pour éviter le bruit et offrir une meilleure expérience utilisateur. Elle sera réactivé lorsqu’une nouvelle action de désactivation du son se produit.
Pendant un appel, désactivez votre micro et parlez dedans. Lorsque la valeur est définie pour envisager de donner une True notification visuelle à l’utilisateur final qu’il peut parler et ne pas se rendre compte que son audio est désactivé.
noMicrophoneDevicesAvailable Le système de l’utilisateur ne comporte aucun appareil de capture audio (micro) - Défini sur True lorsque le système ne comporte pas de micro.
- Défini False sur le moment où il y a au moins un périphérique microphone sur le système.
Tous les micros sont débranchés pendant l’appel. Lorsque la valeur définie pour envisager de donner une True notification visuelle à l’utilisateur final que sa session d’appel actuelle n’a pas de microphone. Pour plus d’informations, consultez la section Activer le microphone à partir du gestionnaire d’appareils.
microphoneNotFunctioning Le microphone ne fonctionne pas. - Défini True sur le moment où nous ne parvenons pas à envoyer le flux audio local, car l’appareil microphone a peut-être été désactivé dans le système ou il est utilisé par un autre processus. Il faut environ 10 secondes pour déclencher ce périphérique.
- Défini sur False lorsque le micro recommence à envoyer correctement le flux audio.
Aucun micro disponible, accès au micro désactivé dans un système Lorsque la valeur est définie pour donner à True l’utilisateur final une notification visuelle indiquant qu’il existe un problème avec son microphone.
microphoneMuteUnexpectedly Le micro est désactivé - Défini sur True lorsque le micro est désactivé de manière inattendue.
- Défini sur False lorsque le micro commence à envoyer correctement le flux audio.
Le micro est désactivé dans le système. La plupart des cas se produisent lorsque l’utilisateur passe un appel Azure Communication Services sur un appareil mobile et qu’un appel téléphonique arrive. Dans la plupart des cas, le système d’exploitation mute l’appel Azure Communication Services afin qu’un utilisateur puisse répondre à l’appel téléphonique. Lorsque la valeur est définie True, donnez à l’utilisateur final une notification visuelle indiquant que son appel a été désactivé parce qu’un appel téléphonique est entré. Pour plus d’informations, consultez comment gérer le meilleur fonctionnement du système d’exploitation en mutant une section d’appel Azure Communication Services pour plus d’informations.
microphonePermissionDenied il existe un volume faible à partir de l’appareil ou il est presque silencieux sur macOS. - Défini sur True le moment où l’autorisation audio est refusée à partir des paramètres système (audio).
- Défini sur False en cas de réussite d’acquisition de flux.
Remarque : ce diagnostic fonctionne uniquement sous macOS.
Les autorisations de micro sont désactivées dans les Paramètres. Lorsque la valeur est définie True, donnez à l’utilisateur final une notification visuelle indiquant qu’il n’a pas autorisé à utiliser le microphone pour un appel Azure Communication Services.

Valeurs concernant la caméra

Nom Description Valeurs possibles Cas d’utilisation Étapes de correction
cameraFrozen La caméra cesse de produire des images pendant plus de 5 secondes. - Défini sur True lorsque le flux de vidéo local est figé. Ce diagnostic signifie que le côté distant voit votre vidéo figée sur son écran ou signifie que les participants distants ne rendent pas votre vidéo sur leur écran.
- Défini sur False lorsque le blocage se termine et que les utilisateurs peuvent voir votre vidéo normalement.
La caméra a été perdue pendant l’appel ou un mauvais réseau a entraîné le blocage de la caméra. Lorsque la valeur est définie True, envisagez d’accorder une notification à l’utilisateur final indiquant que le réseau de participants distants peut être incorrect, ce qui peut suggérer qu’il désactive son appareil photo pour conserver la bande passante. Pour plus d’informations, consultez la section Exigences en bande passante réseau sur les capacités Internet nécessaires pour un appel Azure Communication Services.
cameraStartFailed Échec générique de la caméra. - Défini True sur quand nous ne parvenons pas à envoyer une vidéo locale, car l’appareil photo a peut-être été désactivé dans le système ou il est utilisé par un autre processus~.
- Défini sur False lorsque la caméra sélectionnée parvient à nouveau à envoyer la vidéo locale.
Défaillances de caméra Lorsque la valeur est définie True, donnez à l’utilisateur final une notification visuelle indiquant que son appareil photo n’a pas pu démarrer.
cameraStartTimedOut Scénario courant où la caméra est dans un mauvais état de fonctionnement. - Défini sur True en cas d’expiration du délai d’attente d’envoi du flux vidéo de la caméra.
- Défini sur False lorsque la caméra sélectionnée parvient à nouveau à envoyer la vidéo locale.
Défaillances de caméra Lorsque la valeur est définie True, donnez une notification visuelle à l’utilisateur final que son appareil photo rencontre peut-être des problèmes. (Lorsque la valeur est définie sur False, supprimer la notification).
cameraPermissionDenied Les autorisations de caméra ont été refusées dans les paramètres. - Défini sur True le moment où l’autorisation de la caméra est refusée à partir des paramètres système (vidéo).
- Défini sur False en cas de réussite d’acquisition de flux.
Remarque : ce diagnostic fonctionne uniquement sous macOS Chrome.
Les autorisations de caméra sont désactivées dans les paramètres. Lorsque la valeur est définie True, donnez à l’utilisateur final une notification visuelle indiquant qu’il n’a pas activé l’autorisation d’utiliser la caméra pour un appel Azure Communication Services.
cameraStoppedUnexpectedly Dysfonctionnement de la caméra - Défini sur True lorsque la caméra bascule dans un état d’arrêt de manière inattendue.
- Défini sur False lorsque la caméra recommence à envoyer correctement le flux vidéo.
Vérifier que la caméra fonctionne correctement. Lorsque la valeur est définie True, donnez une notification visuelle à l’utilisateur final que son appareil photo rencontre peut-être des problèmes. (Lorsque la valeur est définie sur False, supprimer la notification).

Natif uniquement

Nom Description Valeurs possibles Cas d’utilisation Procédure d’atténuation
speakerVolumeIsZero Volume zéro sur un appareil (haut-parleur). - Défini sur le moment où le volume de l’orateur est égal à True zéro.
- Défini sur le moment où le volume de l’orateur n’est pas égal à False zéro.
Ne pas entendre l’audio des participants à l’appel. Lorsque la valeur est définie True, vous pouvez avoir accidentellement le volume au plus bas(zéro).
speakerMuted L’appareil du haut-parleur est désactivé. - Défini sur True le moment où l’appareil du haut-parleur est désactivé.
- Défini sur False le moment où l’appareil du haut-parleur n’est pas désactivé.
Ne pas entendre l’audio des participants à l’appel. Lorsque la valeur est définie True, vous avez peut-être désactivé accidentellement l’orateur.
speakerBusy L’orateur est déjà utilisé. Soit l’appareil est utilisé en mode exclusif, soit l’appareil est utilisé en mode partagé et l’appelant a demandé à utiliser l’appareil en mode exclusif. - Défini True sur quand l’acquisition du flux de flux de l’appareil haut-parleur expire (audio).
- Défini sur False le moment où l’acquisition de l’orateur réussit.
Ne pas entendre l’audio des participants à l’appel par le biais de l’orateur. Lorsque la valeur est définieTrue, donnez une notification visuelle à l’utilisateur final afin qu’il puisse case activée si une autre application utilise l’orateur et essayez de la fermer.
speakerNotFunctioning Le haut-parleur ne fonctionne pas (échec de l’initialisation du client d’appareil audio ou de l’appareil est devenu inactif pendant plus de 5 secondes) - Défini sur True le moment où le haut-parleur n’est pas disponible ou si l’acquisition de flux d’appareil expire (audio).
- Défini sur False le moment où l’acquisition de l’orateur réussit.
Ne pas entendre l’audio des participants à l’appel par le biais de l’orateur. Essayez de case activée l’état de l’appareil haut-parleur.
microphoneBusy Le microphone est déjà utilisé. Soit l’appareil est utilisé en mode exclusif, soit l’appareil est utilisé en mode partagé et l’appelant a demandé à utiliser l’appareil en mode exclusif. - Défini sur True le moment où l’acquisition du flux de flux de microphone expire (audio).
- Défini sur False le moment où l’acquisition du microphone réussit.
Votre audio n’atteint pas d’autres participants dans l’appel. Lorsque la valeur est définieTrue, donnez une notification visuelle à l’utilisateur final afin qu’il puisse case activée si une autre application utilise le microphone et essayez de la fermer.

Accès aux diagnostics

Les diagnostics accessibles à l’utilisateur constituent une fonctionnalité étendue de l’API Call de base et vous permettent de diagnostiquer un appel actif.

this.diagnosticsCallFeature = call.Features.LocalUserDiagnostics;

Événements de diagnostics accessibles à l’utilisateur

  • Implémentez des écouteurs pour les événements de diagnostic.
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
  • Définissez les méthodes d’événement pour écouter les événements.
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 ... 

Obtenir les derniers diagnostics accessibles à l’utilisateur

  • Obtenez les dernières valeurs de diagnostic qui ont été déclenchées lors de l’appel actuel. Si nous n’avons toujours pas reçu de valeur pour le diagnostic ou null.unknown pour lequel nous sommes retournés.
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.