Share via


Diagnostica con connessione 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 utenti" (UFD) che può essere usata per esaminare varie proprietà di una chiamata per determinare quale potrebbe essere il problema. Diagnostica con connessione utente sono eventi attivati che potrebbero indicare a causa di un problema sottostante (rete scarsa, l'utente ha disattivato il microfono) che un utente potrebbe avere un'esperienza scarsa. Dopo che è stata attivata la diagnostica per l'utente, è consigliabile inviare commenti e suggerimenti a un utente finale che potrebbe riscontrare un problema sottostante. Tuttavia, l'output di Diagnostica con connessione utente è solo informativo e lo stack di chiamate non apporta modifiche in base a una diagnostica con connessione utente attivata.

Valori di diagnostica

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

Valori di rete

Nome Descrizione Possibili valori Utilizzare casi 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 Servizi di comunicazione di Azure inoltri.
- Impostare su False quando si effettua una nuova chiamata.
Durante una chiamata quando il segnale WiFi viene attivato e spento. 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 ci stiamo riconnettendo 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, senza Internet 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 larghezza di banda Internet disponibile.
networkSendQuality Indicatore relativo alla qualità del flusso in uscita. - Impostare suBad 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 c'è 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 larghezza di banda Internet disponibile.

Valori audio

Nome Descrizione Possibili valori Utilizzare casi 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.
parlareWhileMicrophoneIsMuted Parlando mentre si è in muto. - 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 annulla 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 parlarne. Quando il valore è impostato per True valutare la possibilità di inviare notifiche visive all'utente finale che potrebbero parlare e non 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 vengono scollegati durante la chiamata. Se il valore è impostato su True considera 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 abilitare il microfono dalla sezione Device Manger .
microphoneNotFunctioning Il microfono non funziona. - Impostare su True quando non si avvia l'invio del flusso audio locale perché il dispositivo microfono potrebbe essere stato disabilitato nel sistema o usato da un altro processo. Questo UFD richiede circa 10 secondi per essere generato.
- 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 per True inviare una notifica visiva all'utente finale che si è verificato un problema con il microfono.
microphoneMuteUnexpectedly Microfono disattivato - Impostare su True quando il microfono entra in stato disattivato in modo imprevisto.
- Impostare su False quando il microfono inizia a inviare correttamente il flusso audio
Il microfono viene disattivato dal sistema. La maggior parte dei casi si verifica quando l'utente è in una chiamata Servizi di comunicazione di Azure su un dispositivo mobile e arriva una telefonata. Nella maggior parte dei casi, il sistema operativo disattiva la chiamata 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 how to best handle OS muting an Servizi di comunicazione di Azure call section for more details.
microfonoPermissionDenied c'è un volume basso dal dispositivo 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 riuscita.
Nota: questa diagnostica funziona solo in macOS.
Le autorizzazioni del microfono sono disabilitate nella Impostazioni. Quando il valore è impostato su True, assegnare una notifica visiva all'utente finale che non ha abilitato l'autorizzazione per l'uso del microfono per una chiamata Servizi di comunicazione di Azure.

valori Fotocamera

Nome Descrizione Possibili valori Utilizzare casi Passaggi di mitigazione
cameraFreeze 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 significa che i partecipanti remoti non eseguono il rendering del video sullo schermo.
- Impostare su False quando termina il blocco e gli utenti possono visualizzare il video secondo le normali condizioni.
La Fotocamera è stata persa durante la chiamata o la rete non valida 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 partecipante remota 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 Servizi di comunicazione di Azure.
cameraStartFailed Errore generico della fotocamera. - Impostare su True quando non si avvia l'invio di video locali 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 video locale.
errori di Fotocamera Quando il valore è impostato su True, inviare una notifica visiva all'utente finale che la fotocamera non è riuscita ad avviare.
cameraStartTimedOut Scenario comune in cui la fotocamera è in stato non valido. - Impostare su True quando si verifica il timeout del dispositivo fotocamera per avviare l'invio del flusso video.
- Impostare su False quando il dispositivo fotocamera selezionato invia nuovamente video locale.
errori di Fotocamera Quando il valore è impostato su True, inviare una notifica visiva all'utente finale che la fotocamera presenta problemi. Quando il valore viene impostato di nuovo per False rimuovere la notifica.
cameraPermissionDenied Fotocamera autorizzazioni sono state negate nelle impostazioni. - Impostare su True quando l'autorizzazione della fotocamera viene negata dalle impostazioni di sistema (video).
- Impostare su False in caso di acquisizione del flusso riuscita.
Nota: questa diagnostica funziona solo in macOS Chrome.
Fotocamera le autorizzazioni sono disabilitate nelle impostazioni. Quando il valore è impostato su True, assegnare una notifica visiva all'utente finale che non ha abilitato l'autorizzazione per usare la fotocamera per una chiamata Servizi di comunicazione di Azure.
cameraStoppedUnexpectedly Fotocamera malfunzionamento - Impostato su True quando la fotocamera entra nello stato arrestato 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 presenta problemi. Quando il valore viene impostato di nuovo per False rimuovere la notifica.

Valori misc

Nome Descrizione Possibili valori Utilizzare casi Passaggi per la prevenzione
screenshareRecordingDisabled La condivisione dello schermo di sistema è stata negata dalle preferenze in Impostazioni. - Impostare su True quando viene negata l'autorizzazione di condivisione dello schermo dalle impostazioni di sistema (condivisione).
- Impostare su False in caso di acquisizione del flusso riuscita.
Nota: questa diagnostica funziona solo in macOS.Chrome.
La registrazione dello schermo è disabilitata in Impostazioni. Quando il valore è impostato su True, assegnare una notifica visiva all'utente finale che non ha abilitato l'autorizzazione per condividere la schermata per una chiamata Servizi di comunicazione di Azure.
capturerStartFailed Condivisione dello schermo di sistema non riuscita. - Impostare su True quando non si avvia l'acquisizione dello schermo.
- Impostare su False quando l'acquisizione della schermata può essere avviata correttamente.
Quando il valore è impostato su True, inviare una notifica visiva all'utente finale che 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 dello schermo entra nello stato arrestato in modo imprevisto.
- Impostare su False quando l'utilità di acquisizione dello schermo 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 potrebbe verificarsi un problema che causa l'arresto della condivisione dello schermo. Quando il valore viene impostato di nuovo per False rimuovere la notifica.

Accesso alla diagnostica

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

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

Eventi di diagnostica rivolti 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 con connessione utente più recente

  • Ottenere i valori di diagnostica più recenti generati. Se una diagnostica non è definita, ciò è dovuto al fatto che non è mai stato generato.
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 Utilizzare casi 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 Servizi di comunicazione di Azure inoltri.
- Impostare su False quando si effettua una nuova chiamata.
Durante una chiamata quando il segnale WiFi viene attivato e spento. 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 la connessione viene riconnessa 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, senza Internet 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 suBad 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 c'è alcun problema con l'invio del flusso.
- Analogamente alla ricezione della diagnostica della qualità, è 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 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 larghezza di banda Internet disponibile.

Valori audio

Nome Descrizione Possibili valori Utilizzare casi 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.
parlareWhileMicrophoneIsMuted Parlando mentre si è in muto. - 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 annulla l'audio del microfono.
- Questo evento di diagnostica può essere disabilitato automaticamente se viene attivato per una determinata quantità di volte senza alcuna azione dell'utente per evitare rumori e offrire un'esperienza utente migliore. Verrà nuovamente abilitata quando si verifica una nuova azione di disattivazione automatica.
Durante una chiamata, disattivare il microfono e parlarne. Quando il valore è impostato per True valutare la possibilità di inviare notifiche visive all'utente finale che potrebbero parlare e non 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 vengono scollegati durante la chiamata. Se il valore è impostato su True considera 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 abilitare il microfono dalla sezione Device Manger .
microphoneNotFunctioning Il microfono non funziona. - Impostare su True quando non si avvia l'invio del flusso audio locale perché il dispositivo microfono potrebbe essere stato disabilitato nel sistema o usato da un altro processo. Questo UFD richiede circa 10 secondi per essere generato.
- 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 per True inviare una notifica visiva all'utente finale che si è verificato un problema con il microfono.
microphoneMuteUnexpectedly Microfono disattivato - Impostare su True quando il microfono entra in stato disattivato in modo imprevisto.
- Impostare su False quando il microfono inizia a inviare correttamente il flusso audio
Il microfono viene disattivato dal sistema. La maggior parte dei casi si verifica quando l'utente è in una chiamata Servizi di comunicazione di Azure su un dispositivo mobile e arriva una telefonata. Nella maggior parte dei casi, il sistema operativo disattiva la chiamata 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 how to best handle OS muting an Servizi di comunicazione di Azure call section for more details.
microfonoPermissionDenied c'è un volume basso dal dispositivo 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 riuscita.
Nota: questa diagnostica funziona solo in macOS.
Le autorizzazioni del microfono sono disabilitate nella Impostazioni. Quando il valore è impostato su True, assegnare una notifica visiva all'utente finale che non ha abilitato l'autorizzazione per l'uso del microfono per una chiamata Servizi di comunicazione di Azure.

valori Fotocamera

Nome Descrizione Possibili valori Utilizzare casi Passaggi di mitigazione
cameraFrozen 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 significa che i partecipanti remoti non eseguono il rendering del video sullo schermo.
- Impostare su False quando termina il blocco e gli utenti possono visualizzare il video secondo le normali condizioni.
La Fotocamera è stata persa durante la chiamata o la rete non valida 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 partecipante remota 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 Servizi di comunicazione di Azure.
cameraStartFailed Errore generico della fotocamera. - Impostare su True quando non si avvia l'invio di video locali 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 video locale.
errori di Fotocamera Quando il valore è impostato su True, inviare una notifica visiva all'utente finale che la fotocamera non è riuscita ad avviare.
cameraStartTimedOut Scenario comune in cui la fotocamera è in stato non valido. - Impostare su True quando si verifica il timeout del dispositivo fotocamera per avviare l'invio del flusso video.
- Impostare su False quando il dispositivo fotocamera selezionato invia nuovamente video locale.
errori di Fotocamera Quando il valore è impostato su True, inviare una notifica visiva all'utente finale che la fotocamera presenta problemi. Quando il valore viene impostato di nuovo per False rimuovere la notifica.
cameraPermissionDenied Fotocamera autorizzazioni sono state negate nelle impostazioni. - Impostare su True quando l'autorizzazione della fotocamera viene negata dalle impostazioni di sistema (video).
- Impostare su False in caso di acquisizione del flusso riuscita.
Nota: questa diagnostica funziona solo in macOS Chrome.
Fotocamera le autorizzazioni sono disabilitate nelle impostazioni. Quando il valore è impostato su True, inviare una notifica visiva all'utente finale che non ha abilitato l'autorizzazione per l'uso della fotocamera per una chiamata Servizi di comunicazione di Azure.
cameraStoppedUnexpectedly Fotocamera malfunzionamento - Impostato su True quando la fotocamera entra nello stato arrestato 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 presenta problemi. Quando il valore viene impostato di nuovo per False rimuovere la notifica.

Solo nativa

Nome Descrizione Possibili valori Utilizzare casi 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 ascoltare l'audio dei partecipanti alla chiamata. Quando il valore è impostato su True, è possibile che il volume sia stato accidentalmente impostato su lowest(zero).
speakerMuted Il dispositivo altoparlante è disattivato. - Impostare su True quando il dispositivo altoparlante è disattivato.
- Impostare su False quando il dispositivo altoparlante non è disattivato.
Non ascoltare l'audio dei partecipanti alla chiamata. Quando il valore è impostato su True, è possibile che l'altoparlante sia stato disattivato accidentalmente.
speakerBusy Il parlante è già in uso. Il dispositivo viene usato in modalità esclusiva oppure il dispositivo viene usato in modalità condivisa e il chiamante ha chiesto di usare il dispositivo 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 ascoltare l'audio dei partecipanti alla chiamata tramite altoparlante. Quando il valore è impostato su True, assegnare una notifica visiva all'utente finale in modo che possa verificare se un'altra applicazione usa l'altoparlante e provare a chiuderla.
speakerNotFunctioning L'altoparlante non funziona (non è stato possibile inizializzare il client del dispositivo audio o 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 ascoltare l'audio dei partecipanti alla chiamata tramite altoparlante. Provare a controllare lo stato del dispositivo altoparlante.
microfonoBusy Il microfono è già in uso. Il dispositivo viene usato in modalità esclusiva oppure il dispositivo viene usato in modalità condivisa e il chiamante ha chiesto di usare il dispositivo 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 usa il microfono e provare a chiuderla.

Accesso alla diagnostica

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

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

Eventi di diagnostica rivolti 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 con connessione 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 Utilizzare casi 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 Servizi di comunicazione di Azure inoltri.
- Impostare su False quando si effettua una nuova chiamata.
Durante una chiamata quando il segnale WiFi viene attivato e spento. 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 la connessione viene riconnessa 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, senza Internet 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 suBad 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 c'è alcun problema con l'invio del flusso.
- Analogamente alla ricezione della diagnostica della qualità, è 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 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 larghezza di banda Internet disponibile.

Valori audio

Nome Descrizione Possibili valori Utilizzare casi 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.
parlareWhileMicrophoneIsMuted Parlando mentre si è in muto. - 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 annulla l'audio del microfono.
- Questo evento di diagnostica può essere disabilitato automaticamente se viene attivato per una determinata quantità di volte senza alcuna azione dell'utente per evitare rumori e offrire un'esperienza utente migliore. Verrà nuovamente abilitata quando si verifica una nuova azione di disattivazione automatica.
Durante una chiamata, disattivare il microfono e parlarne. Quando il valore è impostato per True valutare la possibilità di inviare notifiche visive all'utente finale che potrebbero parlare e non 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 vengono scollegati durante la chiamata. Se il valore è impostato su True considera 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 abilitare il microfono dalla sezione Device Manger .
microphoneNotFunctioning Il microfono non funziona. - Impostare su True quando non si avvia l'invio del flusso audio locale perché il dispositivo microfono potrebbe essere stato disabilitato nel sistema o usato da un altro processo. Questo UFD richiede circa 10 secondi per essere generato.
- 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 per True inviare una notifica visiva all'utente finale che si è verificato un problema con il microfono.
microphoneMuteUnexpectedly Microfono disattivato - Impostare su True quando il microfono entra in stato disattivato in modo imprevisto.
- Impostare su False quando il microfono inizia a inviare correttamente il flusso audio
Il microfono viene disattivato dal sistema. La maggior parte dei casi si verifica quando l'utente è in una chiamata Servizi di comunicazione di Azure su un dispositivo mobile e arriva una telefonata. Nella maggior parte dei casi, il sistema operativo disattiva la chiamata 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 how to best handle OS muting an Servizi di comunicazione di Azure call section for more details.
microfonoPermissionDenied c'è un volume basso dal dispositivo 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 riuscita.
Nota: questa diagnostica funziona solo in macOS.
Le autorizzazioni del microfono sono disabilitate nella Impostazioni. Quando il valore è impostato su True, assegnare una notifica visiva all'utente finale che non ha abilitato l'autorizzazione per l'uso del microfono per una chiamata Servizi di comunicazione di Azure.

valori Fotocamera

Nome Descrizione Possibili valori Utilizzare casi Passaggi di mitigazione
cameraFrozen 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 significa che i partecipanti remoti non eseguono il rendering del video sullo schermo.
- Impostare su False quando termina il blocco e gli utenti possono visualizzare il video secondo le normali condizioni.
La Fotocamera è stata persa durante la chiamata o la rete non valida 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 partecipante remota 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 Servizi di comunicazione di Azure.
cameraStartFailed Errore generico della fotocamera. - Impostare su True quando non si avvia l'invio di video locali 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 video locale.
errori di Fotocamera Quando il valore è impostato su True, inviare una notifica visiva all'utente finale che la fotocamera non è riuscita ad avviare.
cameraStartTimedOut Scenario comune in cui la fotocamera è in stato non valido. - Impostare su True quando si verifica il timeout del dispositivo fotocamera per avviare l'invio del flusso video.
- Impostare su False quando il dispositivo fotocamera selezionato invia nuovamente video locale.
errori di Fotocamera Quando il valore è impostato su True, inviare una notifica visiva all'utente finale che la fotocamera presenta problemi. Quando il valore viene impostato di nuovo per False rimuovere la notifica.
cameraPermissionDenied Fotocamera autorizzazioni sono state negate nelle impostazioni. - Impostare su True quando l'autorizzazione della fotocamera viene negata dalle impostazioni di sistema (video).
- Impostare su False in caso di acquisizione del flusso riuscita.
Nota: questa diagnostica funziona solo in macOS Chrome.
Fotocamera le autorizzazioni sono disabilitate nelle impostazioni. Quando il valore è impostato su True, inviare una notifica visiva all'utente finale che non ha abilitato l'autorizzazione per l'uso della fotocamera per una chiamata Servizi di comunicazione di Azure.
cameraStoppedUnexpectedly Fotocamera malfunzionamento - Impostato su True quando la fotocamera entra nello stato arrestato 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 presenta problemi. Quando il valore viene impostato di nuovo per False rimuovere la notifica.

Solo nativa

Nome Descrizione Possibili valori Utilizzare casi 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 ascoltare l'audio dei partecipanti alla chiamata. Quando il valore è impostato su True, è possibile che il volume sia stato accidentalmente impostato su lowest(zero).
speakerMuted Il dispositivo altoparlante è disattivato. - Impostare su True quando il dispositivo altoparlante è disattivato.
- Impostare su False quando il dispositivo altoparlante non è disattivato.
Non ascoltare l'audio dei partecipanti alla chiamata. Quando il valore è impostato su True, è possibile che l'altoparlante sia stato disattivato accidentalmente.
speakerBusy Il parlante è già in uso. Il dispositivo viene usato in modalità esclusiva oppure il dispositivo viene usato in modalità condivisa e il chiamante ha chiesto di usare il dispositivo 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 ascoltare l'audio dei partecipanti alla chiamata tramite altoparlante. Quando il valore è impostato su True, assegnare una notifica visiva all'utente finale in modo che possa verificare se un'altra applicazione usa l'altoparlante e provare a chiuderla.
speakerNotFunctioning L'altoparlante non funziona (non è stato possibile inizializzare il client del dispositivo audio o 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 ascoltare l'audio dei partecipanti alla chiamata tramite altoparlante. Provare a controllare lo stato del dispositivo altoparlante.
microfonoBusy Il microfono è già in uso. Il dispositivo viene usato in modalità esclusiva oppure il dispositivo viene usato in modalità condivisa e il chiamante ha chiesto di usare il dispositivo 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 usa il microfono e provare a chiuderla.

Accesso alla diagnostica

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

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

Eventi di diagnostica rivolti all'utente

  • Implementare i delegati per media le origini di diagnostica 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 a media e network diagnostica 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 è stata CallKit abilitata tramite SDK o implementa l'integrazione di CallKit nell'applicazione, la segnalazione dello stato di disattivazione dello stato in CallKit può comportare la disattivazione del microfono dell'applicazione a causa di motivi di privacy che potrebbero causare il didIsSpeakingWhileMicrophoneIsMuted mancato funzionamento dell'evento perché non è possibile acquisire l'input dal dispositivo microfono per rilevare che l'utente sta parlando.

Ottenere la diagnostica con connessione utente più recente

  • Ottenere i valori di diagnostica più recenti generati. Se non è ancora stato ricevuto un valore per la diagnostica nil o .unknown viene restituito.
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 Utilizzare casi 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 Servizi di comunicazione di Azure inoltri.
- Impostare su False quando si effettua una nuova chiamata.
Durante una chiamata quando il segnale WiFi viene attivato e spento. 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 la connessione viene riconnessa 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, senza Internet 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 suBad 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 c'è alcun problema con l'invio del flusso.
- Analogamente alla ricezione della diagnostica della qualità, è 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 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 larghezza di banda Internet disponibile.

Valori audio

Nome Descrizione Possibili valori Utilizzare casi 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.
parlareWhileMicrophoneIsMuted Parlando mentre si è in muto. - 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 annulla l'audio del microfono.
- Questo evento di diagnostica può essere disabilitato automaticamente se viene attivato per una determinata quantità di volte senza alcuna azione dell'utente per evitare rumori e offrire un'esperienza utente migliore. Verrà nuovamente abilitata quando si verifica una nuova azione di disattivazione automatica.
Durante una chiamata, disattivare il microfono e parlarne. Quando il valore è impostato per True valutare la possibilità di inviare notifiche visive all'utente finale che potrebbero parlare e non 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 vengono scollegati durante la chiamata. Se il valore è impostato su True considera 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 abilitare il microfono dalla sezione Device Manger .
microphoneNotFunctioning Il microfono non funziona. - Impostare su True quando non si avvia l'invio del flusso audio locale perché il dispositivo microfono potrebbe essere stato disabilitato nel sistema o usato da un altro processo. Questo UFD richiede circa 10 secondi per essere generato.
- 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 per True inviare una notifica visiva all'utente finale che si è verificato un problema con il microfono.
microphoneMuteUnexpectedly Microfono disattivato - Impostare su True quando il microfono entra in stato disattivato in modo imprevisto.
- Impostare su False quando il microfono inizia a inviare correttamente il flusso audio
Il microfono viene disattivato dal sistema. La maggior parte dei casi si verifica quando l'utente è in una chiamata Servizi di comunicazione di Azure su un dispositivo mobile e arriva una telefonata. Nella maggior parte dei casi, il sistema operativo disattiva la chiamata 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 how to best handle OS muting an Servizi di comunicazione di Azure call section for more details.
microfonoPermissionDenied c'è un volume basso dal dispositivo 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 riuscita.
Nota: questa diagnostica funziona solo in macOS.
Le autorizzazioni del microfono sono disabilitate nella Impostazioni. Quando il valore è impostato su True, assegnare una notifica visiva all'utente finale che non ha abilitato l'autorizzazione per l'uso del microfono per una chiamata Servizi di comunicazione di Azure.

valori Fotocamera

Nome Descrizione Possibili valori Utilizzare casi Passaggi di mitigazione
cameraFrozen 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 significa che i partecipanti remoti non eseguono il rendering del video sullo schermo.
- Impostare su False quando termina il blocco e gli utenti possono visualizzare il video secondo le normali condizioni.
La Fotocamera è stata persa durante la chiamata o la rete non valida 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 partecipante remota 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 Servizi di comunicazione di Azure.
cameraStartFailed Errore generico della fotocamera. - Impostare su True quando non si avvia l'invio di video locali 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 video locale.
errori di Fotocamera Quando il valore è impostato su True, inviare una notifica visiva all'utente finale che la fotocamera non è riuscita ad avviare.
cameraStartTimedOut Scenario comune in cui la fotocamera è in stato non valido. - Impostare su True quando si verifica il timeout del dispositivo fotocamera per avviare l'invio del flusso video.
- Impostare su False quando il dispositivo fotocamera selezionato invia nuovamente video locale.
errori di Fotocamera Quando il valore è impostato su True, inviare una notifica visiva all'utente finale che la fotocamera presenta problemi. Quando il valore viene impostato di nuovo per False rimuovere la notifica.
cameraPermissionDenied Fotocamera autorizzazioni sono state negate nelle impostazioni. - Impostare su True quando l'autorizzazione della fotocamera viene negata dalle impostazioni di sistema (video).
- Impostare su False in caso di acquisizione del flusso riuscita.
Nota: questa diagnostica funziona solo in macOS Chrome.
Fotocamera le autorizzazioni sono disabilitate nelle impostazioni. Quando il valore è impostato su True, inviare una notifica visiva all'utente finale che non ha abilitato l'autorizzazione per l'uso della fotocamera per una chiamata Servizi di comunicazione di Azure.
cameraStoppedUnexpectedly Fotocamera malfunzionamento - Impostato su True quando la fotocamera entra nello stato arrestato 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 presenta problemi. Quando il valore viene impostato di nuovo per False rimuovere la notifica.

Solo nativa

Nome Descrizione Possibili valori Utilizzare casi 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 ascoltare l'audio dei partecipanti alla chiamata. Quando il valore è impostato su True, è possibile che il volume sia stato accidentalmente impostato su lowest(zero).
speakerMuted Il dispositivo altoparlante è disattivato. - Impostare su True quando il dispositivo altoparlante è disattivato.
- Impostare su False quando il dispositivo altoparlante non è disattivato.
Non ascoltare l'audio dei partecipanti alla chiamata. Quando il valore è impostato su True, è possibile che l'altoparlante sia stato disattivato accidentalmente.
speakerBusy Il parlante è già in uso. Il dispositivo viene usato in modalità esclusiva oppure il dispositivo viene usato in modalità condivisa e il chiamante ha chiesto di usare il dispositivo 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 ascoltare l'audio dei partecipanti alla chiamata tramite altoparlante. Quando il valore è impostato su True, assegnare una notifica visiva all'utente finale in modo che possa verificare se un'altra applicazione usa l'altoparlante e provare a chiuderla.
speakerNotFunctioning L'altoparlante non funziona (non è stato possibile inizializzare il client del dispositivo audio o 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 ascoltare l'audio dei partecipanti alla chiamata tramite altoparlante. Provare a controllare lo stato del dispositivo altoparlante.
microfonoBusy Il microfono è già in uso. Il dispositivo viene usato in modalità esclusiva oppure il dispositivo viene usato in modalità condivisa e il chiamante ha chiesto di usare il dispositivo 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 usa il microfono e provare a chiuderla.

Accesso alla diagnostica

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

this.diagnosticsCallFeature = call.Features.LocalUserDiagnostics;

Eventi di diagnostica rivolti 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 con connessione utente più recente

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