Condividi tramite


Diagnostica rivolta all’utente

Quando si lavora con le chiamate in Servizi di comunicazione di Azure, è possibile che si verifichino problemi che interessano i clienti. A tale scopo, Servizi di comunicazione di Azure fornisce una funzionalità denominata "Diagnostica rivolta all'utente" (UFD) che può essere usata per esaminare varie proprietà di una chiamata per determinare quale potrebbe essere il problema. Diagnostica rivolta all'utente indica eventi causati probabilmente da un problema sottostante (rete scarsa, l'utente ha disattivato il microfono) a causa dei quali l'esperienza utente potrebbe essere scarsa. Una volta attivata la Diagnostica rivolta all'utente, è consigliabile inviare commenti e suggerimenti a un utente finale secondo cui egli potrebbe essere interessato da un problema sottostante. Tuttavia, l'output di Diagnostica rivolta all'utente è puramente informativo e lo stack di chiamate non apporta modifiche sulla base di una Diagnostica rivolta all'utente attivata.

Valori di diagnostica

Sono disponibili le seguenti funzionalità di diagnostica rivolte all'utente:

Valori di rete

Nome Descrizione Possibili valori Casi d'uso Passaggi di mitigazione
noNetwork Non è disponibile alcuna rete. - Impostare su True quando una chiamata non viene avviata perché non è disponibile alcuna rete.
- Impostare su False quando sono presenti candidati ICE.
Il dispositivo non è connesso a una rete. Assicurarsi che la chiamata disponga di una connessione Internet affidabile in grado di sostenere una chiamata vocale. Per altre informazioni, vedere la sezione Ottimizzazione rete.
networkRelaysNotReachable Problemi con una rete. - Impostare su True quando la rete ha un vincolo che non consente di raggiungere gli inoltri di Servizi di comunicazione di Azure.
- Impostare su False quando si effettua una nuova chiamata.
Durante una chiamata quando il segnale WiFi viene attivato e disattivato. Assicurarsi che le regole del firewall e il routing di rete consentano al client di raggiungere i server di turno Microsoft. Per altre informazioni, vedere la sezione Configurazione del firewall.
networkReconnect La connessione è stata persa e stiamo effettuando nuovamente la connessione alla rete. - Impostare suBad quando la rete è disconnessa
- Impostare su Poorquando viene persa la connettività del trasporto multimediale
- Impostare su Good quando una nuova sessione è connessa.
Larghezza di banda ridotta, Internet non disponibile Assicurarsi che la chiamata disponga di una connessione Internet affidabile in grado di sostenere una chiamata vocale. Per altre informazioni, vedere la sezione Requisiti di larghezza di banda di rete.
networkReceiveQuality Indicatore relativo alla qualità del flusso in ingresso. - Impostare suBad quando si verifica un problema grave con la ricezione del flusso.
- Impostare su Poor quando si verifica un problema lieve con la ricezione del flusso.
- Impostare su Good quando non è presente alcun problema con la ricezione del flusso.
Larghezza di banda ridotta Assicurarsi che la chiamata disponga di una connessione Internet affidabile in grado di sostenere una chiamata vocale. Per altre informazioni, vedere la sezione Requisiti di larghezza di banda di rete. Suggerire all'utente finale di disattivare la fotocamera per risparmiare la larghezza di banda Internet disponibile.
networkSendQuality Indicatore relativo alla qualità del flusso in uscita. - Impostare su Bad quando si verifica un problema grave con l'invio del flusso.
- Impostare su Poor quando si verifica un problema lieve con l'invio del flusso.
- Impostare su Good quando non è presente alcun problema con l'invio del flusso.
Larghezza di banda ridotta Assicurarsi che la chiamata disponga di una connessione Internet affidabile in grado di sostenere una chiamata vocale. Per altre informazioni, vedere la sezione Requisiti di larghezza di banda di rete. Inoltre, suggerire all'utente finale di disattivare la fotocamera per risparmiare la larghezza di banda Internet disponibile.

Valori audio

Nome Descrizione Possibili valori Casi d'uso Passaggi di mitigazione
noSpeakerDevicesEnumerated non è presente alcun dispositivo di output audio (altoparlante) nel sistema dell'utente. - Impostare su True quando non sono presenti dispositivi altoparlanti nel sistema e la selezione dell'altoparlante è supportata.
- Impostare su False quando è presente almeno un dispositivo altoparlante nel sistema e la selezione dell'altoparlante è supportata.
Tutti gli altoparlanti sono scollegati Se il valore è impostato su True, valutare la possibilità di inviare una notifica visiva all'utente finale che la sessione di chiamata corrente non dispone di altoparlanti disponibili.
speakingWhileMicrophoneIsMuted Si sta parlando con il microfono disattivato. - Impostare su True quando il microfono locale viene disattivato e l'utente locale sta parlando.
- Impostare su False quando l'utente locale smette di parlare o riattiva l'audio del microfono.
*Nota: attualmente questa opzione non è supportata in Safari perché gli esempi di livello audio sono tratti dalle statistiche WebRTC.
Durante una chiamata, disattivare il microfono e parlare in esso. Quando il valore è impostato su True, valutare la possibilità di inviare notifiche visive all'utente finale circa che il fatto che potrebbe stare parlando senza rendersi conto che l'audio è disattivato.
noMicrophoneDevicesEnumerated Nessun dispositivo di acquisizione audio (microfono) nel sistema dell'utente - Impostare su True quando non sono presenti dispositivi microfono nel sistema.
- Impostare su False quando è presente almeno un dispositivo microfono nel sistema.
Tutti i microfoni sono scollegati durante la chiamata. Se il valore è impostato su True, valutare la possibilità di inviare una notifica visiva all'utente finale che la sessione di chiamata corrente non dispone di un microfono. Per altre informazioni, vedere la sezione abilitare il microfono da Gestione dispositivi.
microphoneNotFunctioning Il microfono non funziona. - Impostare su True quando l'invio del flusso audio locale non viene avviato perché il dispositivo microfono potrebbe essere stato disabilitato nel sistema o usato da un altro processo. La generazione di questo UFD richiede circa 10 secondi.
- Impostare su False quando il microfono inizia a inviare di nuovo il flusso audio.
Nessun microfono disponibile, accesso al microfono disabilitato in un sistema Quando il valore è impostato su True inviare una notifica visiva all'utente finale che si è verificato un problema con il microfono.
microphoneMuteUnexpectedly Il microfono è disattivato - Impostare su True quando il microfono viene disattivato in modo imprevisto.
- Impostare su False quando il microfono inizia a inviare correttamente il flusso audio
Il microfono è disattivato dal sistema. La maggior parte dei casi si verifica quando l'utente si trova in una chiamata di Servizi di comunicazione di Azure su un dispositivo mobile e arriva una telefonata. Nella maggior parte dei casi, il sistema operativo disattiva la chiamata di Servizi di comunicazione di Azure in modo che un utente possa rispondere alla telefonata. Quando il valore è impostato su True, inviare una notifica visiva all'utente finale che la chiamata è stata disattivata perché è arrivata una telefonata. Per altre informazioni, vedere la sezione come gestire al meglio la disattivazione da parte del sistema operativo di una chiamata di Servizi di comunicazione di Azure.
microphonePermissionDenied il volume del dispositivo è basso o è quasi silenzioso su macOS. - Impostare su True quando l'autorizzazione audio viene negata dalle impostazioni di sistema (audio).
- Impostare su False in caso di acquisizione del flusso eseguita con successo.
Nota: questa diagnostica funziona solo in macOS.
Le autorizzazioni per il microfono sono disabilitate in Impostazioni. Quando il valore è impostato su True, inviare una notifica visiva all'utente finale che non ha abilitato l'autorizzazione a usare il microfono per una chiamata di Servizi di comunicazione di Azure.

Valori della fotocamera

Nome Descrizione Possibili valori Casi d'uso Passaggi di mitigazione
cameraFreeze La fotocamera smette di produrre fotogrammi per più di 5 secondi. - Impostare su True quando il flusso video locale è bloccato. Questa diagnostica significa che il lato remoto sta visualizzando il video bloccato sullo schermo o che i partecipanti remoti non stanno eseguendo il rendering del video sullo schermo.
- Impostare su False quando termina il blocco e gli utenti possono visualizzare normalmente il video.
La fotocamera è stata persa durante la chiamata o la rete scarsa ha causato il blocco della fotocamera. Quando il valore è impostato su True, prendere in considerazione la possibilità di inviare una notifica all'utente finale che la rete del partecipante remoto potrebbe non essere valida. È possibile suggerire di disattivare la fotocamera per risparmiare larghezza di banda. Per altre informazioni, vedere la sezione Requisiti di larghezza di banda di rete sulle capacità Internet necessarie per una chiamata di Servizi di comunicazione di Azure.
cameraStartFailed Errore generico della fotocamera. - Impostare su True quando l'invio di video locali non viene avviato perché il dispositivo fotocamera potrebbe essere stato disabilitato nel sistema o viene usato da un altro processo~.
- Impostare su False quando il dispositivo fotocamera selezionato invia nuovamente il video locale.
Errori della fotocamera Quando il valore è impostato su True, inviare una notifica visiva all'utente finale che l'avvio della sua fotocamera non è riuscito.
cameraStartTimedOut Scenario comune in cui la fotocamera non funziona. - Impostare su True quando si verifica il timeout del dispositivo fotocamera sull'avvio dell'invio del flusso video.
- Impostare su False quando il dispositivo fotocamera selezionato invia nuovamente il video locale.
Errori della fotocamera Quando il valore è impostato su True, inviare una notifica visiva all'utente finale che la fotocamera potrebbe avere problemi. (quando il valore viene impostato di nuovo su False rimuovere la notifica).
cameraPermissionDenied Le autorizzazioni della fotocamera sono state negate nelle impostazioni. - Impostare su True quando l'autorizzazione per la fotocamera viene negata dalle impostazioni di sistema (video).
- Impostare su False in caso di acquisizione del flusso eseguita con successo.
Nota: questa diagnostica funziona solo in macOS Chrome.
Le autorizzazioni della fotocamera sono disabilitate nelle impostazioni. Quando il valore è impostato su True, inviare una notifica visiva all'utente finale che non ha abilitato l'autorizzazione a usare la fotocamera per una chiamata di Servizi di comunicazione di Azure.
cameraStoppedUnexpectedly Malfunzionamento della fotocamera - Impostare su True quando la fotocamera entra nello stato di arresto in modo imprevisto.
- Impostare su False quando la fotocamera inizia a inviare di nuovo il flusso video.
Controllare che la fotocamera funzioni correttamente. Quando il valore è impostato su True, inviare una notifica visiva all'utente finale che la fotocamera potrebbe avere problemi. (quando il valore viene impostato di nuovo su False rimuovere la notifica).

Valori vari

Nome Descrizione Possibili valori Casi d'uso Passaggi per la prevenzione
screenshareRecordingDisabled La condivisione dello schermo di sistema è stata negata dalle preferenze in Impostazioni. - Impostare su True quando l'autorizzazione alla condivisione dello schermo viene negata dalle impostazioni di sistema (video).
- Impostare su False in caso di acquisizione del flusso eseguita con successo.
Nota: questa diagnostica funziona solo in macOS.Chrome.
La registrazione dello schermo è disabilitata in Impostazioni. Quando il valore è impostato su True, inviare una notifica visiva all'utente finale che non ha abilitato l'autorizzazione a condividere lo schermo per una chiamata di Servizi di comunicazione di Azure.
capturerStartFailed Condivisione dello schermo di sistema non riuscita. - Impostare su True quando l'acquisizione della schermata non è avviata.
- Impostare su False quando è possibile avviare correttamente l'acquisizione della schermata.
Quando il valore è impostato su True, inviare una notifica visiva all'utente finale che probabilmente si è verificato un problema durante la condivisione dello schermo. (quando il valore viene impostato di nuovo su False rimuovere la notifica).
capturerStoppedUnexpectedly Malfunzionamento della condivisione dello schermo di sistema - Impostare su True quando l'utilità di acquisizione della schermata entra nello stato arrestato in modo imprevisto.
- Impostare su False quando l'utilità di acquisizione della schermata inizia a acquisire nuovamente.
Controllare che la condivisione dello schermo funzioni correttamente Quando il valore è impostato su True, inviare una notifica visiva all'utente finale che probabilmente si è verificato un problema che causa l'arresto della condivisione dello schermo. (quando il valore viene impostato di nuovo su False rimuovere la notifica).

Accesso alla diagnostica in corso

La Diagnostica rivolta all'utente è una funzionalità estesa dell'API Call core e consente di diagnosticare una chiamata attiva.

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

Eventi di Diagnostica rivolta all'utente

  • Sottoscrivere l'evento diagnosticChanged per monitorare quando viene modificata la Diagnostica rivolta all'utente.
/**
 *  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);

Ottenere la Diagnostica rivolta all'utente più recente

  • Ottenere i valori di diagnostica più recenti generati. Se una diagnostica non è definita, ciò è dovuto al fatto che non è mai stato generata.
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}`
);

Valori di diagnostica

Sono disponibili le seguenti funzionalità di diagnostica rivolte all'utente:

Valori di rete

Nome Descrizione Possibili valori Casi d'uso Passaggi di mitigazione
networkUnavailable Non è disponibile alcuna rete. - Impostare su True quando una chiamata non viene avviata perché non è disponibile alcuna rete.
- Impostare su False quando sono presenti candidati ICE.
Il dispositivo non è connesso a una rete. Assicurarsi che la chiamata disponga di una connessione Internet affidabile in grado di sostenere una chiamata vocale. Per altre informazioni, vedere la sezione Ottimizzazione rete.
networkRelaysUnreachable Problemi con una rete. - Impostare su True quando la rete ha un vincolo che non consente di raggiungere gli inoltri di Servizi di comunicazione di Azure.
- Impostare su False quando si effettua una nuova chiamata.
Durante una chiamata quando il segnale WiFi viene attivato e disattivato. Assicurarsi che le regole del firewall e il routing di rete consentano al client di raggiungere i server di turno Microsoft. Per altre informazioni, vedere la sezione Configurazione del firewall.
networkReconnectionQuality La connessione è stata persa e stiamo effettuando nuovamente la connessione alla rete. - Impostare suBad quando la rete è disconnessa
- Impostare su Poorquando viene persa la connettività del trasporto multimediale
- Impostare su Good quando una nuova sessione è connessa.
Larghezza di banda ridotta, Internet non disponibile Assicurarsi che la chiamata disponga di una connessione Internet affidabile in grado di sostenere una chiamata vocale. Per altre informazioni, vedere la sezione Requisiti di larghezza di banda di rete.
networkReceiveQuality Indicatore relativo alla qualità del flusso in ingresso. - Impostare suBad quando si verifica un problema grave con la ricezione del flusso.
- Impostare su Poor quando si verifica un problema lieve con la ricezione del flusso.
- Impostare su Good quando non è presente alcun problema con la ricezione del flusso.
- È visibile solo se è presente un flusso audio attivo nella chiamata, il che significa che un partecipante sta parlando attivamente per un periodo di tempo.
Larghezza di banda ridotta Assicurarsi che la chiamata disponga di una connessione Internet affidabile in grado di sostenere una chiamata vocale. Per altre informazioni, vedere la sezione Requisiti di larghezza di banda di rete. Suggerire all'utente finale di disattivare la fotocamera per risparmiare la larghezza di banda Internet disponibile.
networkSendQuality Indicatore relativo alla qualità del flusso in uscita. - Impostare su Bad quando si verifica un problema grave con l'invio del flusso.
- Impostare su Poor quando si verifica un problema lieve con l'invio del flusso.
- Impostare su Good quando non è presente alcun problema con l'invio del flusso.
- Analogamente alla diagnostica della qualità di ricezione, è visibile solo se è presente un flusso audio attivo nella chiamata, il che significa che un partecipante sta parlando attivamente per un periodo di tempo. Ma funziona solo in una chiamata 1:1 perché si basa su informazioni fornite dall'altro lato per verificare la qualità. Dove l'altro lato deve segnalare i dati ricevuti.
Larghezza di banda ridotta Assicurarsi che la chiamata disponga di una connessione Internet affidabile in grado di sostenere una chiamata vocale. Per altre informazioni, vedere la sezione Requisiti di larghezza di banda di rete. Inoltre, suggerire all'utente finale di disattivare la fotocamera per risparmiare la larghezza di banda Internet disponibile.

Valori audio

Nome Descrizione Possibili valori Casi d'uso Passaggi di mitigazione
noSpeakerDevicesAvailable non è presente alcun dispositivo di output audio (altoparlante) nel sistema dell'utente. - Impostare su True quando non sono presenti dispositivi altoparlanti nel sistema e la selezione dell'altoparlante è supportata.
- Impostare su False quando è presente almeno un dispositivo altoparlante nel sistema e la selezione dell'altoparlante è supportata.
Tutti gli altoparlanti sono scollegati Se il valore è impostato su True, valutare la possibilità di inviare una notifica visiva all'utente finale che la sessione di chiamata corrente non dispone di altoparlanti disponibili.
speakingWhileMicrophoneIsMuted Si sta parlando con il microfono disattivato. - Impostare su True quando il microfono locale viene disattivato e l'utente locale sta parlando.
- Impostare su False quando l'utente locale smette di parlare o riattiva l'audio del microfono.
- È possibile disabilitare automaticamente questo evento di diagnostica se viene attivato per una determinata quantità di volte senza alcuna azione dell'utente, al fine di evitare rumori e offrire un'esperienza utente migliore. Verrà nuovamente abilitato quando ha luogo una nuova azione di disattivazione automatica.
Durante una chiamata, disattivare il microfono e parlare in esso. Quando il valore è impostato su True, valutare la possibilità di inviare notifiche visive all'utente finale circa che il fatto che potrebbe stare parlando senza rendersi conto che l'audio è disattivato.
noMicrophoneDevicesAvailable Nessun dispositivo di acquisizione audio (microfono) nel sistema dell'utente - Impostare su True quando non sono presenti dispositivi microfono nel sistema.
- Impostare su False quando è presente almeno un dispositivo microfono nel sistema.
Tutti i microfoni sono scollegati durante la chiamata. Se il valore è impostato su True, valutare la possibilità di inviare una notifica visiva all'utente finale che la sessione di chiamata corrente non dispone di un microfono. Per altre informazioni, vedere la sezione abilitare il microfono da Gestione dispositivi.
microphoneNotFunctioning Il microfono non funziona. - Impostare su True quando l'invio del flusso audio locale non viene avviato perché il dispositivo microfono potrebbe essere stato disabilitato nel sistema o usato da un altro processo. La generazione di questo UFD richiede circa 10 secondi.
- Impostare su False quando il microfono inizia a inviare di nuovo il flusso audio.
Nessun microfono disponibile, accesso al microfono disabilitato in un sistema Quando il valore è impostato su True inviare una notifica visiva all'utente finale che si è verificato un problema con il microfono.
microphoneMuteUnexpectedly Il microfono è disattivato - Impostare su True quando il microfono viene disattivato in modo imprevisto.
- Impostare su False quando il microfono inizia a inviare correttamente il flusso audio
Il microfono è disattivato dal sistema. La maggior parte dei casi si verifica quando l'utente si trova in una chiamata di Servizi di comunicazione di Azure su un dispositivo mobile e arriva una telefonata. Nella maggior parte dei casi, il sistema operativo disattiva la chiamata di Servizi di comunicazione di Azure in modo che un utente possa rispondere alla telefonata. Quando il valore è impostato su True, inviare una notifica visiva all'utente finale che la chiamata è stata disattivata perché è arrivata una telefonata. Per altre informazioni, vedere la sezione come gestire al meglio la disattivazione da parte del sistema operativo di una chiamata di Servizi di comunicazione di Azure.
microphonePermissionDenied il volume del dispositivo è basso o è quasi silenzioso su macOS. - Impostare su True quando l'autorizzazione audio viene negata dalle impostazioni di sistema (audio).
- Impostare su False in caso di acquisizione del flusso eseguita con successo.
Nota: questa diagnostica funziona solo in macOS.
Le autorizzazioni per il microfono sono disabilitate in Impostazioni. Quando il valore è impostato su True, inviare una notifica visiva all'utente finale che non ha abilitato l'autorizzazione a usare il microfono per una chiamata di Servizi di comunicazione di Azure.

Valori della fotocamera

Nome Descrizione Possibili valori Casi d'uso Passaggi di mitigazione
cameraFrozen La fotocamera smette di produrre fotogrammi per più di 5 secondi. - Impostare su True quando il flusso video locale è bloccato. Questa diagnostica significa che il lato remoto visualizza il video bloccato sullo schermo o che i partecipanti remoti non stanno eseguendo il rendering del video sullo schermo.
- Impostare su False quando termina il blocco e gli utenti possono visualizzare normalmente il video.
La fotocamera è stata persa durante la chiamata o la rete scarsa ha causato il blocco della fotocamera. Quando il valore è impostato su True, prendere in considerazione la possibilità di inviare una notifica all'utente finale che la rete del partecipante remoto potrebbe non essere valida. È possibile suggerire di disattivare la fotocamera per risparmiare larghezza di banda. Per altre informazioni, vedere la sezione Requisiti di larghezza di banda di rete sulle capacità Internet necessarie per una chiamata di Servizi di comunicazione di Azure.
cameraStartFailed Errore generico della fotocamera. - Impostare su True quando l'invio di video locali non viene avviato perché il dispositivo fotocamera potrebbe essere stato disabilitato nel sistema o usato da un altro processo~.
- Impostare su False quando il dispositivo fotocamera selezionato invia nuovamente il video locale.
Errori della fotocamera Quando il valore è impostato su True, inviare una notifica visiva all'utente finale che l'avvio della sua fotocamera non è riuscito.
cameraStartTimedOut Scenario comune in cui la fotocamera non funziona. - Impostare su True quando si verifica il timeout del dispositivo fotocamera sull'avvio dell'invio del flusso video.
- Impostare su False quando il dispositivo fotocamera selezionato invia nuovamente il video locale.
Errori della fotocamera Quando il valore è impostato su True, inviare una notifica visiva all'utente finale che la fotocamera potrebbe avere problemi. (quando il valore viene impostato di nuovo su False rimuovere la notifica).
cameraPermissionDenied Le autorizzazioni della fotocamera sono state negate nelle impostazioni. - Impostare su True quando l'autorizzazione per la fotocamera viene negata dalle impostazioni di sistema (video).
- Impostare su False in caso di acquisizione del flusso eseguita con successo.
Nota: questa diagnostica funziona solo in macOS Chrome.
Le autorizzazioni della fotocamera sono disabilitate nelle impostazioni. Quando il valore è impostato su True, inviare una notifica visiva all'utente finale che non ha abilitato l'autorizzazione a usare la fotocamera per una chiamata di Servizi di comunicazione di Azure.
cameraStoppedUnexpectedly Malfunzionamento della fotocamera - Impostare su True quando la fotocamera entra nello stato di arresto in modo imprevisto.
- Impostare su False quando la fotocamera inizia a inviare di nuovo il flusso video.
Controllare che la fotocamera funzioni correttamente. Quando il valore è impostato su True, inviare una notifica visiva all'utente finale che la fotocamera potrebbe avere problemi. (quando il valore viene impostato di nuovo su False rimuovere la notifica).

Solo nativa

Nome Descrizione Possibili valori Casi d'uso Passaggi per la prevenzione
speakerVolumeIsZero Volume zero su un dispositivo (altoparlante). - Impostare su True quando il volume dell'altoparlante è zero.
- Impostare su False quando il volume dell'altoparlante non è zero.
Non è possibile sentire l'audio dei partecipanti alla chiamata. Quando il valore è impostato su True, è possibile che il volume sia stato accidentalmente impostato su valore più basso (zero).
speakerMuted Il dispositivo altoparlante è disattivato. - Impostare su True quando il dispositivo altoparlante è disattivato.
- Impostare su False quando il dispositivo altoparlante non è disattivato.
Non è possibile sentire l'audio dei partecipanti alla chiamata. Quando il valore è impostato su True, è possibile che l'altoparlante sia stato disattivato accidentalmente.
speakerBusy L'altoparlante è già in uso. Il dispositivo è usato in modalità esclusiva oppure in modalità condivisa e il chiamante ha chiesto di usarlo in modalità esclusiva. - Impostare su True quando si verifica il timeout dell'acquisizione del flusso del dispositivo altoparlante (audio).
- Impostare su False quando l'acquisizione dell'altoparlante ha esito positivo.
Non è possibile sentire l'audio dei partecipanti alla chiamata tramite l'altoparlante. Quando il valore è impostato su True, inviare una notifica visiva all'utente finale in modo che possa verificare se un'altra applicazione sta usando l'altoparlante e provare a chiuderla.
speakerNotFunctioning L'altoparlante non funziona (non è stato possibile inizializzare il client del dispositivo audio oppure il dispositivo è diventato inattivo per più di 5 sec) - Impostare su True quando l'altoparlante non è disponibile o si verifica il timeout dell'acquisizione del flusso del dispositivo (audio).
- Impostare su False quando l'acquisizione dell'altoparlante ha esito positivo.
Non è possibile sentire l'audio dei partecipanti alla chiamata tramite l'altoparlante. Provare a controllare lo stato del dispositivo altoparlante.
microfonoBusy Il microfono è già in uso. Il dispositivo è usato in modalità esclusiva oppure in modalità condivisa e il chiamante ha chiesto di usarlo in modalità esclusiva. - Impostare su True quando si verifica il timeout dell'acquisizione del flusso del dispositivo microfono (audio).
- Impostare su False quando l'acquisizione del microfono ha esito positivo.
L'audio non raggiunge altri partecipanti alla chiamata. Quando il valore è impostato su True, inviare una notifica visiva all'utente finale in modo che possa verificare se un'altra applicazione sta usando il microfono e provare a chiuderla.

Accesso alla diagnostica in corso

La Diagnostica rivolta all'utente è una funzionalità estesa dell'API Call core e consente di diagnosticare una chiamata attiva.

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

Eventi di Diagnostica rivolta all'utente

  • Ottenere l'oggetto funzionalità e aggiungere listener agli eventi di diagnostica.
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);

Ottenere la Diagnostica rivolta all'utente più recente

  • Ottenere i valori di diagnostica più recenti generati nella chiamata corrente. Se non è ancora stato ricevuto un valore per la diagnostica, viene generata un'eccezione.
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 ...

Valori di diagnostica

Sono disponibili le seguenti funzionalità di diagnostica rivolte all'utente:

Valori di rete

Nome Descrizione Possibili valori Casi d'uso Passaggi di mitigazione
networkUnavailable Non è disponibile alcuna rete. - Impostare su True quando una chiamata non viene avviata perché non è disponibile alcuna rete.
- Impostare su False quando sono presenti candidati ICE.
Il dispositivo non è connesso a una rete. Assicurarsi che la chiamata disponga di una connessione Internet affidabile in grado di sostenere una chiamata vocale. Per altre informazioni, vedere la sezione Ottimizzazione rete.
networkRelaysUnreachable Problemi con una rete. - Impostare su True quando la rete ha un vincolo che non consente di raggiungere gli inoltri di Servizi di comunicazione di Azure.
- Impostare su False quando si effettua una nuova chiamata.
Durante una chiamata quando il segnale WiFi viene attivato e disattivato. Assicurarsi che le regole del firewall e il routing di rete consentano al client di raggiungere i server di turno Microsoft. Per altre informazioni, vedere la sezione Configurazione del firewall.
networkReconnectionQuality La connessione è stata persa e stiamo effettuando nuovamente la connessione alla rete. - Impostare suBad quando la rete è disconnessa
- Impostare su Poorquando viene persa la connettività del trasporto multimediale
- Impostare su Good quando una nuova sessione è connessa.
Larghezza di banda ridotta, Internet non disponibile Assicurarsi che la chiamata disponga di una connessione Internet affidabile in grado di sostenere una chiamata vocale. Per altre informazioni, vedere la sezione Requisiti di larghezza di banda di rete.
networkReceiveQuality Indicatore relativo alla qualità del flusso in ingresso. - Impostare suBad quando si verifica un problema grave con la ricezione del flusso.
- Impostare su Poor quando si verifica un problema lieve con la ricezione del flusso.
- Impostare su Good quando non è presente alcun problema con la ricezione del flusso.
- È visibile solo se è presente un flusso audio attivo nella chiamata, il che significa che un partecipante sta parlando attivamente per un periodo di tempo.
Larghezza di banda ridotta Assicurarsi che la chiamata disponga di una connessione Internet affidabile in grado di sostenere una chiamata vocale. Per altre informazioni, vedere la sezione Requisiti di larghezza di banda di rete. Suggerire all'utente finale di disattivare la fotocamera per risparmiare la larghezza di banda Internet disponibile.
networkSendQuality Indicatore relativo alla qualità del flusso in uscita. - Impostare su Bad quando si verifica un problema grave con l'invio del flusso.
- Impostare su Poor quando si verifica un problema lieve con l'invio del flusso.
- Impostare su Good quando non è presente alcun problema con l'invio del flusso.
- Analogamente alla diagnostica della qualità di ricezione, è visibile solo se è presente un flusso audio attivo nella chiamata, il che significa che un partecipante sta parlando attivamente per un periodo di tempo. Ma funziona solo in una chiamata 1:1 perché si basa su informazioni fornite dall'altro lato per verificare la qualità. Dove l'altro lato deve segnalare i dati ricevuti.
Larghezza di banda ridotta Assicurarsi che la chiamata disponga di una connessione Internet affidabile in grado di sostenere una chiamata vocale. Per altre informazioni, vedere la sezione Requisiti di larghezza di banda di rete. Inoltre, suggerire all'utente finale di disattivare la fotocamera per risparmiare la larghezza di banda Internet disponibile.

Valori audio

Nome Descrizione Possibili valori Casi d'uso Passaggi di mitigazione
noSpeakerDevicesAvailable non è presente alcun dispositivo di output audio (altoparlante) nel sistema dell'utente. - Impostare su True quando non sono presenti dispositivi altoparlanti nel sistema e la selezione dell'altoparlante è supportata.
- Impostare su False quando è presente almeno un dispositivo altoparlante nel sistema e la selezione dell'altoparlante è supportata.
Tutti gli altoparlanti sono scollegati Se il valore è impostato su True, valutare la possibilità di inviare una notifica visiva all'utente finale che la sessione di chiamata corrente non dispone di altoparlanti disponibili.
speakingWhileMicrophoneIsMuted Si sta parlando con il microfono disattivato. - Impostare su True quando il microfono locale viene disattivato e l'utente locale sta parlando.
- Impostare su False quando l'utente locale smette di parlare o riattiva l'audio del microfono.
- È possibile disabilitare automaticamente questo evento di diagnostica se viene attivato per una determinata quantità di volte senza alcuna azione dell'utente, al fine di evitare rumori e offrire un'esperienza utente migliore. Verrà nuovamente abilitato quando ha luogo una nuova azione di disattivazione automatica.
Durante una chiamata, disattivare il microfono e parlare in esso. Quando il valore è impostato su True, valutare la possibilità di inviare notifiche visive all'utente finale circa che il fatto che potrebbe stare parlando senza rendersi conto che l'audio è disattivato.
noMicrophoneDevicesAvailable Nessun dispositivo di acquisizione audio (microfono) nel sistema dell'utente - Impostare su True quando non sono presenti dispositivi microfono nel sistema.
- Impostare su False quando è presente almeno un dispositivo microfono nel sistema.
Tutti i microfoni sono scollegati durante la chiamata. Se il valore è impostato su True, valutare la possibilità di inviare una notifica visiva all'utente finale che la sessione di chiamata corrente non dispone di un microfono. Per altre informazioni, vedere la sezione abilitare il microfono da Gestione dispositivi.
microphoneNotFunctioning Il microfono non funziona. - Impostare su True quando l'invio del flusso audio locale non viene avviato perché il dispositivo microfono potrebbe essere stato disabilitato nel sistema o usato da un altro processo. La generazione di questo UFD richiede circa 10 secondi.
- Impostare su False quando il microfono inizia a inviare di nuovo il flusso audio.
Nessun microfono disponibile, accesso al microfono disabilitato in un sistema Quando il valore è impostato su True inviare una notifica visiva all'utente finale che si è verificato un problema con il microfono.
microphoneMuteUnexpectedly Il microfono è disattivato - Impostare su True quando il microfono viene disattivato in modo imprevisto.
- Impostare su False quando il microfono inizia a inviare correttamente il flusso audio
Il microfono è disattivato dal sistema. La maggior parte dei casi si verifica quando l'utente si trova in una chiamata di Servizi di comunicazione di Azure su un dispositivo mobile e arriva una telefonata. Nella maggior parte dei casi, il sistema operativo disattiva la chiamata di Servizi di comunicazione di Azure in modo che un utente possa rispondere alla telefonata. Quando il valore è impostato su True, inviare una notifica visiva all'utente finale che la chiamata è stata disattivata perché è arrivata una telefonata. Per altre informazioni, vedere la sezione come gestire al meglio la disattivazione da parte del sistema operativo di una chiamata di Servizi di comunicazione di Azure.
microphonePermissionDenied il volume del dispositivo è basso o è quasi silenzioso su macOS. - Impostare su True quando l'autorizzazione audio viene negata dalle impostazioni di sistema (audio).
- Impostare su False in caso di acquisizione del flusso eseguita con successo.
Nota: questa diagnostica funziona solo in macOS.
Le autorizzazioni per il microfono sono disabilitate in Impostazioni. Quando il valore è impostato su True, inviare una notifica visiva all'utente finale che non ha abilitato l'autorizzazione a usare il microfono per una chiamata di Servizi di comunicazione di Azure.

Valori della fotocamera

Nome Descrizione Possibili valori Casi d'uso Passaggi di mitigazione
cameraFrozen La fotocamera smette di produrre fotogrammi per più di 5 secondi. - Impostare su True quando il flusso video locale è bloccato. Questa diagnostica significa che il lato remoto visualizza il video bloccato sullo schermo o che i partecipanti remoti non stanno eseguendo il rendering del video sullo schermo.
- Impostare su False quando termina il blocco e gli utenti possono visualizzare normalmente il video.
La fotocamera è stata persa durante la chiamata o la rete scarsa ha causato il blocco della fotocamera. Quando il valore è impostato su True, prendere in considerazione la possibilità di inviare una notifica all'utente finale che la rete del partecipante remoto potrebbe non essere valida. È possibile suggerire di disattivare la fotocamera per risparmiare larghezza di banda. Per altre informazioni, vedere la sezione Requisiti di larghezza di banda di rete sulle capacità Internet necessarie per una chiamata di Servizi di comunicazione di Azure.
cameraStartFailed Errore generico della fotocamera. - Impostare su True quando l'invio di video locali non viene avviato perché il dispositivo fotocamera potrebbe essere stato disabilitato nel sistema o usato da un altro processo~.
- Impostare su False quando il dispositivo fotocamera selezionato invia nuovamente il video locale.
Errori della fotocamera Quando il valore è impostato su True, inviare una notifica visiva all'utente finale che l'avvio della sua fotocamera non è riuscito.
cameraStartTimedOut Scenario comune in cui la fotocamera non funziona. - Impostare su True quando si verifica il timeout del dispositivo fotocamera sull'avvio dell'invio del flusso video.
- Impostare su False quando il dispositivo fotocamera selezionato invia nuovamente il video locale.
Errori della fotocamera Quando il valore è impostato su True, inviare una notifica visiva all'utente finale che la fotocamera potrebbe avere problemi. (quando il valore viene impostato di nuovo su False rimuovere la notifica).
cameraPermissionDenied Le autorizzazioni della fotocamera sono state negate nelle impostazioni. - Impostare su True quando l'autorizzazione per la fotocamera viene negata dalle impostazioni di sistema (video).
- Impostare su False in caso di acquisizione del flusso eseguita con successo.
Nota: questa diagnostica funziona solo in macOS Chrome.
Le autorizzazioni della fotocamera sono disabilitate nelle impostazioni. Quando il valore è impostato su True, inviare una notifica visiva all'utente finale che non ha abilitato l'autorizzazione a usare la fotocamera per una chiamata di Servizi di comunicazione di Azure.
cameraStoppedUnexpectedly Malfunzionamento della fotocamera - Impostare su True quando la fotocamera entra nello stato di arresto in modo imprevisto.
- Impostare su False quando la fotocamera inizia a inviare di nuovo il flusso video.
Controllare che la fotocamera funzioni correttamente. Quando il valore è impostato su True, inviare una notifica visiva all'utente finale che la fotocamera potrebbe avere problemi. (quando il valore viene impostato di nuovo su False rimuovere la notifica).

Solo nativa

Nome Descrizione Possibili valori Casi d'uso Passaggi per la prevenzione
speakerVolumeIsZero Volume zero su un dispositivo (altoparlante). - Impostare su True quando il volume dell'altoparlante è zero.
- Impostare su False quando il volume dell'altoparlante non è zero.
Non è possibile sentire l'audio dei partecipanti alla chiamata. Quando il valore è impostato su True, è possibile che il volume sia stato accidentalmente impostato su valore più basso (zero).
speakerMuted Il dispositivo altoparlante è disattivato. - Impostare su True quando il dispositivo altoparlante è disattivato.
- Impostare su False quando il dispositivo altoparlante non è disattivato.
Non è possibile sentire l'audio dei partecipanti alla chiamata. Quando il valore è impostato su True, è possibile che l'altoparlante sia stato disattivato accidentalmente.
speakerBusy L'altoparlante è già in uso. Il dispositivo è usato in modalità esclusiva oppure in modalità condivisa e il chiamante ha chiesto di usarlo in modalità esclusiva. - Impostare su True quando si verifica il timeout dell'acquisizione del flusso del dispositivo altoparlante (audio).
- Impostare su False quando l'acquisizione dell'altoparlante ha esito positivo.
Non è possibile sentire l'audio dei partecipanti alla chiamata tramite l'altoparlante. Quando il valore è impostato su True, inviare una notifica visiva all'utente finale in modo che possa verificare se un'altra applicazione sta usando l'altoparlante e provare a chiuderla.
speakerNotFunctioning L'altoparlante non funziona (non è stato possibile inizializzare il client del dispositivo audio oppure il dispositivo è diventato inattivo per più di 5 sec) - Impostare su True quando l'altoparlante non è disponibile o si verifica il timeout dell'acquisizione del flusso del dispositivo (audio).
- Impostare su False quando l'acquisizione dell'altoparlante ha esito positivo.
Non è possibile sentire l'audio dei partecipanti alla chiamata tramite l'altoparlante. Provare a controllare lo stato del dispositivo altoparlante.
microfonoBusy Il microfono è già in uso. Il dispositivo è usato in modalità esclusiva oppure in modalità condivisa e il chiamante ha chiesto di usarlo in modalità esclusiva. - Impostare su True quando si verifica il timeout dell'acquisizione del flusso del dispositivo microfono (audio).
- Impostare su False quando l'acquisizione del microfono ha esito positivo.
L'audio non raggiunge altri partecipanti alla chiamata. Quando il valore è impostato su True, inviare una notifica visiva all'utente finale in modo che possa verificare se un'altra applicazione sta usando il microfono e provare a chiuderla.

Accesso alla diagnostica in corso

La Diagnostica rivolta all'utente è una funzionalità estesa dell'API Call core e consente di diagnosticare una chiamata attiva.

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

Eventi di Diagnostica rivolta all'utente

  • Implementare i delegati per le origini di diagnostica media e network. MediaDiagnosticsDelegate e NetworkDiagnosticsDelegate rispettivamente.
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...
  }
}
  • Mantenere un riferimento alla diagnostica media e network e impostare l'oggetto delegato per l'ascolto degli eventi.
self.mediaDiagnostics = userFacingDiagnostics?.media
self.networkDiagnostics = userFacingDiagnostics?.network
self.mediaDiagnostics?.delegate = self.callObserver
self.networkDiagnostics?.delegate = self.callObserver

Nota

Se si ha abilitatoCallKit tramite SDK o si ha implementato l'integrazione di CallKit nell'applicazione, la segnalazione dello stato di disattivazione dell'audio a Callkit può far sì che il sistema autonomo sblocchi il microfono per motivi di privacy che potrebbero far sì che l'evento didIsSpeakingWhileMicrophoneIsMuted non funzioni come previsto, in quanto non è possibile acquisire l'input dal dispositivo microfono per rilevare se l'utente sta parlando.

Ottenere la Diagnostica rivolta all'utente più recente

  • Ottenere i valori di diagnostica più recenti generati. Se non è ancora stato ricevuto un valore per la diagnostica, viene restituito nil o .unknown.
let lastSpeakerNotFunctionValue = self.mediaDiagnostics.latest.isSpeakerNotFunctioning // Boolean?
let lastNetworkRelayNotReachableValue = self.networkDiagnostics.latest.networkRelaysUnreachable // Boolean?
let lastReceiveQualityValue = self.networkDiagnostics.latest.networkReceiveQuality // DiagnosticQuality (.good, .poor, .bad)
// or .unknown if there isn't a diagnostic for this.

Valori di diagnostica

Sono disponibili le seguenti funzionalità di diagnostica rivolte all'utente:

Valori di rete

Nome Descrizione Possibili valori Casi d'uso Passaggi di mitigazione
networkUnavailable Non è disponibile alcuna rete. - Impostare su True quando una chiamata non viene avviata perché non è disponibile alcuna rete.
- Impostare su False quando sono presenti candidati ICE.
Il dispositivo non è connesso a una rete. Assicurarsi che la chiamata disponga di una connessione Internet affidabile in grado di sostenere una chiamata vocale. Per altre informazioni, vedere la sezione Ottimizzazione rete.
networkRelaysUnreachable Problemi con una rete. - Impostare su True quando la rete ha un vincolo che non consente di raggiungere gli inoltri di Servizi di comunicazione di Azure.
- Impostare su False quando si effettua una nuova chiamata.
Durante una chiamata quando il segnale WiFi viene attivato e disattivato. Assicurarsi che le regole del firewall e il routing di rete consentano al client di raggiungere i server di turno Microsoft. Per altre informazioni, vedere la sezione Configurazione del firewall.
networkReconnectionQuality La connessione è stata persa e stiamo effettuando nuovamente la connessione alla rete. - Impostare suBad quando la rete è disconnessa
- Impostare su Poorquando viene persa la connettività del trasporto multimediale
- Impostare su Good quando una nuova sessione è connessa.
Larghezza di banda ridotta, Internet non disponibile Assicurarsi che la chiamata disponga di una connessione Internet affidabile in grado di sostenere una chiamata vocale. Per altre informazioni, vedere la sezione Requisiti di larghezza di banda di rete.
networkReceiveQuality Indicatore relativo alla qualità del flusso in ingresso. - Impostare suBad quando si verifica un problema grave con la ricezione del flusso.
- Impostare su Poor quando si verifica un problema lieve con la ricezione del flusso.
- Impostare su Good quando non è presente alcun problema con la ricezione del flusso.
- È visibile solo se è presente un flusso audio attivo nella chiamata, il che significa che un partecipante sta parlando attivamente per un periodo di tempo.
Larghezza di banda ridotta Assicurarsi che la chiamata disponga di una connessione Internet affidabile in grado di sostenere una chiamata vocale. Per altre informazioni, vedere la sezione Requisiti di larghezza di banda di rete. Suggerire all'utente finale di disattivare la fotocamera per risparmiare la larghezza di banda Internet disponibile.
networkSendQuality Indicatore relativo alla qualità del flusso in uscita. - Impostare su Bad quando si verifica un problema grave con l'invio del flusso.
- Impostare su Poor quando si verifica un problema lieve con l'invio del flusso.
- Impostare su Good quando non è presente alcun problema con l'invio del flusso.
- Analogamente alla diagnostica della qualità di ricezione, è visibile solo se è presente un flusso audio attivo nella chiamata, il che significa che un partecipante sta parlando attivamente per un periodo di tempo. Ma funziona solo in una chiamata 1:1 perché si basa su informazioni fornite dall'altro lato per verificare la qualità. Dove l'altro lato deve segnalare i dati ricevuti.
Larghezza di banda ridotta Assicurarsi che la chiamata disponga di una connessione Internet affidabile in grado di sostenere una chiamata vocale. Per altre informazioni, vedere la sezione Requisiti di larghezza di banda di rete. Inoltre, suggerire all'utente finale di disattivare la fotocamera per risparmiare la larghezza di banda Internet disponibile.

Valori audio

Nome Descrizione Possibili valori Casi d'uso Passaggi di mitigazione
noSpeakerDevicesAvailable non è presente alcun dispositivo di output audio (altoparlante) nel sistema dell'utente. - Impostare su True quando non sono presenti dispositivi altoparlanti nel sistema e la selezione dell'altoparlante è supportata.
- Impostare su False quando è presente almeno un dispositivo altoparlante nel sistema e la selezione dell'altoparlante è supportata.
Tutti gli altoparlanti sono scollegati Se il valore è impostato su True, valutare la possibilità di inviare una notifica visiva all'utente finale che la sessione di chiamata corrente non dispone di altoparlanti disponibili.
speakingWhileMicrophoneIsMuted Si sta parlando con il microfono disattivato. - Impostare su True quando il microfono locale viene disattivato e l'utente locale sta parlando.
- Impostare su False quando l'utente locale smette di parlare o riattiva l'audio del microfono.
- È possibile disabilitare automaticamente questo evento di diagnostica se viene attivato per una determinata quantità di volte senza alcuna azione dell'utente, al fine di evitare rumori e offrire un'esperienza utente migliore. Verrà nuovamente abilitato quando ha luogo una nuova azione di disattivazione automatica.
Durante una chiamata, disattivare il microfono e parlare in esso. Quando il valore è impostato su True, valutare la possibilità di inviare notifiche visive all'utente finale circa che il fatto che potrebbe stare parlando senza rendersi conto che l'audio è disattivato.
noMicrophoneDevicesAvailable Nessun dispositivo di acquisizione audio (microfono) nel sistema dell'utente - Impostare su True quando non sono presenti dispositivi microfono nel sistema.
- Impostare su False quando è presente almeno un dispositivo microfono nel sistema.
Tutti i microfoni sono scollegati durante la chiamata. Se il valore è impostato su True, valutare la possibilità di inviare una notifica visiva all'utente finale che la sessione di chiamata corrente non dispone di un microfono. Per altre informazioni, vedere la sezione abilitare il microfono da Gestione dispositivi.
microphoneNotFunctioning Il microfono non funziona. - Impostare su True quando l'invio del flusso audio locale non viene avviato perché il dispositivo microfono potrebbe essere stato disabilitato nel sistema o usato da un altro processo. La generazione di questo UFD richiede circa 10 secondi.
- Impostare su False quando il microfono inizia a inviare di nuovo il flusso audio.
Nessun microfono disponibile, accesso al microfono disabilitato in un sistema Quando il valore è impostato su True inviare una notifica visiva all'utente finale che si è verificato un problema con il microfono.
microphoneMuteUnexpectedly Il microfono è disattivato - Impostare su True quando il microfono viene disattivato in modo imprevisto.
- Impostare su False quando il microfono inizia a inviare correttamente il flusso audio
Il microfono è disattivato dal sistema. La maggior parte dei casi si verifica quando l'utente si trova in una chiamata di Servizi di comunicazione di Azure su un dispositivo mobile e arriva una telefonata. Nella maggior parte dei casi, il sistema operativo disattiva la chiamata di Servizi di comunicazione di Azure in modo che un utente possa rispondere alla telefonata. Quando il valore è impostato su True, inviare una notifica visiva all'utente finale che la chiamata è stata disattivata perché è arrivata una telefonata. Per altre informazioni, vedere la sezione come gestire al meglio la disattivazione da parte del sistema operativo di una chiamata di Servizi di comunicazione di Azure.
microphonePermissionDenied il volume del dispositivo è basso o è quasi silenzioso su macOS. - Impostare su True quando l'autorizzazione audio viene negata dalle impostazioni di sistema (audio).
- Impostare su False in caso di acquisizione del flusso eseguita con successo.
Nota: questa diagnostica funziona solo in macOS.
Le autorizzazioni per il microfono sono disabilitate in Impostazioni. Quando il valore è impostato su True, inviare una notifica visiva all'utente finale che non ha abilitato l'autorizzazione a usare il microfono per una chiamata di Servizi di comunicazione di Azure.

Valori della fotocamera

Nome Descrizione Possibili valori Casi d'uso Passaggi di mitigazione
cameraFrozen La fotocamera smette di produrre fotogrammi per più di 5 secondi. - Impostare su True quando il flusso video locale è bloccato. Questa diagnostica significa che il lato remoto visualizza il video bloccato sullo schermo o che i partecipanti remoti non stanno eseguendo il rendering del video sullo schermo.
- Impostare su False quando termina il blocco e gli utenti possono visualizzare normalmente il video.
La fotocamera è stata persa durante la chiamata o la rete scarsa ha causato il blocco della fotocamera. Quando il valore è impostato su True, prendere in considerazione la possibilità di inviare una notifica all'utente finale che la rete del partecipante remoto potrebbe non essere valida. È possibile suggerire di disattivare la fotocamera per risparmiare larghezza di banda. Per altre informazioni, vedere la sezione Requisiti di larghezza di banda di rete sulle capacità Internet necessarie per una chiamata di Servizi di comunicazione di Azure.
cameraStartFailed Errore generico della fotocamera. - Impostare su True quando l'invio di video locali non viene avviato perché il dispositivo fotocamera potrebbe essere stato disabilitato nel sistema o usato da un altro processo~.
- Impostare su False quando il dispositivo fotocamera selezionato invia nuovamente il video locale.
Errori della fotocamera Quando il valore è impostato su True, inviare una notifica visiva all'utente finale che l'avvio della sua fotocamera non è riuscito.
cameraStartTimedOut Scenario comune in cui la fotocamera non funziona. - Impostare su True quando si verifica il timeout del dispositivo fotocamera sull'avvio dell'invio del flusso video.
- Impostare su False quando il dispositivo fotocamera selezionato invia nuovamente il video locale.
Errori della fotocamera Quando il valore è impostato su True, inviare una notifica visiva all'utente finale che la fotocamera potrebbe avere problemi. (quando il valore viene impostato di nuovo su False rimuovere la notifica).
cameraPermissionDenied Le autorizzazioni della fotocamera sono state negate nelle impostazioni. - Impostare su True quando l'autorizzazione per la fotocamera viene negata dalle impostazioni di sistema (video).
- Impostare su False in caso di acquisizione del flusso eseguita con successo.
Nota: questa diagnostica funziona solo in macOS Chrome.
Le autorizzazioni della fotocamera sono disabilitate nelle impostazioni. Quando il valore è impostato su True, inviare una notifica visiva all'utente finale che non ha abilitato l'autorizzazione a usare la fotocamera per una chiamata di Servizi di comunicazione di Azure.
cameraStoppedUnexpectedly Malfunzionamento della fotocamera - Impostare su True quando la fotocamera entra nello stato di arresto in modo imprevisto.
- Impostare su False quando la fotocamera inizia a inviare di nuovo il flusso video.
Controllare che la fotocamera funzioni correttamente. Quando il valore è impostato su True, inviare una notifica visiva all'utente finale che la fotocamera potrebbe avere problemi. (quando il valore viene impostato di nuovo su False rimuovere la notifica).

Solo nativa

Nome Descrizione Possibili valori Casi d'uso Passaggi per la prevenzione
speakerVolumeIsZero Volume zero su un dispositivo (altoparlante). - Impostare su True quando il volume dell'altoparlante è zero.
- Impostare su False quando il volume dell'altoparlante non è zero.
Non è possibile sentire l'audio dei partecipanti alla chiamata. Quando il valore è impostato su True, è possibile che il volume sia stato accidentalmente impostato su valore più basso (zero).
speakerMuted Il dispositivo altoparlante è disattivato. - Impostare su True quando il dispositivo altoparlante è disattivato.
- Impostare su False quando il dispositivo altoparlante non è disattivato.
Non è possibile sentire l'audio dei partecipanti alla chiamata. Quando il valore è impostato su True, è possibile che l'altoparlante sia stato disattivato accidentalmente.
speakerBusy L'altoparlante è già in uso. Il dispositivo è usato in modalità esclusiva oppure in modalità condivisa e il chiamante ha chiesto di usarlo in modalità esclusiva. - Impostare su True quando si verifica il timeout dell'acquisizione del flusso del dispositivo altoparlante (audio).
- Impostare su False quando l'acquisizione dell'altoparlante ha esito positivo.
Non è possibile sentire l'audio dei partecipanti alla chiamata tramite l'altoparlante. Quando il valore è impostato su True, inviare una notifica visiva all'utente finale in modo che possa verificare se un'altra applicazione sta usando l'altoparlante e provare a chiuderla.
speakerNotFunctioning L'altoparlante non funziona (non è stato possibile inizializzare il client del dispositivo audio oppure il dispositivo è diventato inattivo per più di 5 sec) - Impostare su True quando l'altoparlante non è disponibile o si verifica il timeout dell'acquisizione del flusso del dispositivo (audio).
- Impostare su False quando l'acquisizione dell'altoparlante ha esito positivo.
Non è possibile sentire l'audio dei partecipanti alla chiamata tramite l'altoparlante. Provare a controllare lo stato del dispositivo altoparlante.
microfonoBusy Il microfono è già in uso. Il dispositivo è usato in modalità esclusiva oppure in modalità condivisa e il chiamante ha chiesto di usarlo in modalità esclusiva. - Impostare su True quando si verifica il timeout dell'acquisizione del flusso del dispositivo microfono (audio).
- Impostare su False quando l'acquisizione del microfono ha esito positivo.
L'audio non raggiunge altri partecipanti alla chiamata. Quando il valore è impostato su True, inviare una notifica visiva all'utente finale in modo che possa verificare se un'altra applicazione sta usando il microfono e provare a chiuderla.

Accesso alla diagnostica in corso

La Diagnostica rivolta all'utente è una funzionalità estesa dell'API Call core e consente di diagnosticare una chiamata attiva.

this.diagnosticsCallFeature = call.Features.LocalUserDiagnostics;

Eventi di Diagnostica rivolta all'utente

  • Implementare listener per gli eventi di diagnostica.
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
  • Impostare i metodi di evento per l'ascolto degli eventi.
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 ... 

Ottenere la Diagnostica rivolta all'utente più recente

  • Ottenere i valori di diagnostica più recenti generati nella chiamata corrente. Se non è ancora stato ricevuto un valore per la diagnostica, viene restituito null o .unknown.
this.diagnosticsCallFeature = call.Features.LocalUserDiagnostics;
this.networkDiagnostics = diagnosticsCallFeature.Network;
this.mediaDiagnostics = diagnosticsCallFeature.Media;

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