La chiamata termina con 410/3112
Il motivo per cui la chiamata termina con errore 410/3112 è che il client non è in grado di raggiungere l'altro endpoint e non vengono raccolti candidati di inoltro. Questo codice di errore 410/3112 può verificarsi quando non è possibile stabilire il percorso multimediale a causa di problemi di rete, restrizioni del firewall o impostazioni di configurazione non corrette. Pertanto, i peer non erano in grado di stabilire una connessione diretta o di inoltro.
I candidati di inoltro non sono necessari se il client è in grado di stabilire una connessione diretta all'altro peer. Tuttavia, quando WebRTC non riesce a raccogliere candidati di inoltro, spesso indica un problema con la configurazione del server TURN (Traversal Using Relays around NAT) o le restrizioni di rete. I candidati per l'inoltro sono fondamentali per stabilire connessioni in ambienti di rete restrittivi.
Modalità di rilevamento tramite SDK
È possibile apprendere il motivo della fine della chiamata usando il frammento di codice seguente.
call.on('stateChanged', () => {
if (call.state === 'Disconnected') {
if (call.callEndReason.code === 410 && call.callEndReason.subCode === 3112) {
// show error message
}
}
});
Per comprendere i codici e i codici secondari, vedere Informazioni sui codici chiamanti e sugli errori dei codici secondari.
Quando non è possibile stabilire il percorso multimediale, la chiamata termina con il codice 410 e il codice secondario 3112.
L'SDK attiva anche l'evento UFD networkRelaysNotReachable.
Ecco un frammento di codice che illustra come acquisire l'evento networkRelaysNotReachable UFD
.
call.feature(Features.UserFacingDiagnostics).network.on('diagnosticChanged', (diagnosticInfo) => {
if (diagnosticInfo.diagnostic === 'networkRelaysNotReachable') {
if (diagnosticInfo.value === true) {
// show a warning message on UI
} else {
// The networkRelaysNotReachable UFD recovered, notify the user
}
}
});
Come analizzare il problema con lo strumento Log Analytics o Diagnostica chiamate
Quando un utente segnala che non è in grado di effettuare una chiamata, è possibile usare lo strumento Diagnostica chiamata per analizzare il motivo dell'errore. Per eseguire il debug delle chiamate utente, è necessario l'ID chiamata. Se la chiamata dell'utente non è riuscita perché il firewall ha bloccato la connessione di inoltro, è possibile trovare il codice finale e il codice secondario 410 e 3112 nella pagina di panoramica della chiamata.
Inoltre, è anche possibile trovare l'evento UFD networkRelaysNotReachable nella pagina dei problemi di chiamata.
Per comprendere la tempistica delle azioni o degli eventi dell'utente, è possibile controllare i dettagli nella pagina della sequenza temporale.
In questo esempio l'utente riceve networkRelaysNotReachable UFD
l'evento alle 16:41:47 e chiama l'evento di modifica dello stato alle 16:41:49.
Lo strumento Diagnostica chiamata offre una panoramica e le informazioni necessarie per il debug di una singola chiamata. Se si vuole comprendere il numero di utenti che riscontrano questo problema o la frequenza con cui gli utenti riscontrano il problema, è possibile usare lo strumento Log Analytics per ottenere informazioni dettagliate su questo problema.
Ad esempio, se si vuole ottenere l'ID chiamata disconnesso con il codice secondario 3112 negli ultimi sette giorni, è possibile eseguire questa query:
ACSCallSummary
| where ParticipantEndSubCode == 3112
| project TimeGenerated, CorrelationId, ParticipantId, Identifier, CallType
È anche possibile eseguire il rendering di un grafico temporale per comprendere il numero giornaliero di chiamate che terminano con il codice secondario 3112
ACSCallSummary
| where ParticipantEndSubCode == 3112
| summarize count() by bin(TimeGenerated, 1d)
| render timechart
Il grafico ora fornisce solo una panoramica degli utenti con lo stesso ID risorsa ACS. Eseguendo query più specifiche, è possibile identificare modelli o anomalie che non sono immediatamente evidenti dal grafico temporale, consentendo di individuare la causa radice di eventuali problemi in modo più accurato.
Ad esempio, se viene visualizzato un picco nel numero di chiamate che terminano con il codice secondario 3112, potrebbe essere dovuto al volume elevato di chiamate mentre il rapporto di occorrenza del problema è rimasto invariato. In alternativa, il picco potrebbe essere attribuito a un determinato utente che ha ritentato più volte e tutti i tentativi non sono riusciti con il codice secondario 3112.
In questa query vengono analizzati i dati in base agli identificatori utente, presupponendo che l'app mantenga lo stesso identificatore utente per ogni individuo.
ACSCallSummary
| summarize Total = count(), SuccessCount = countif(ParticipantEndSubCode == 0), SubCode3112Count = countif(ParticipantEndSubCode == 3112) by Identifier
| where SubCode3112Count > 0
| order by SubCode3112Count desc
In questo esempio, un utente aveva un totale di 180 chiamate, di cui 160 chiamate hanno avuto esito positivo e solo due chiamate hanno avuto esito negativo con il codice secondario 3112. Questo modello suggerisce un problema di rete temporaneo, che può essere risolto riprovando. D'altra parte, un altro utente aveva un totale di sei chiamate, tutte con codice secondario 3112. Questa coerenza nel valore del codice secondario indica un probabile problema di configurazione di rete per l'utente, in cui è improbabile che la ripetizione dei tentativi sia utile.
Modalità di mitigazione o risoluzione
Se un utente riscontra in modo coerente un errore 410/3112, è consigliabile controllare le impostazioni del firewall. Gli utenti devono seguire le linee guida per la configurazione del firewall indicate nel documento Raccomandazioni sulla rete. Assicurarsi che l'utente o l'amministratore controlli le impostazioni NAT (Network Address Translation) e verifichi se i criteri del firewall bloccano i pacchetti UDP (User Datagram Protocol). Le impostazioni del firewall non sono limitate al computer dell'utente; se l'utente si trova in un ambiente aziendale, potrebbe essere necessario configurare anche il firewall dell'azienda.
Inoltre, se l'applicazione usa server TURN personalizzati, assicurarsi che l'indirizzo IP, la porta e il protocollo specificati non siano bloccati da alcun firewall.
Per l'applicazione, è importante gestire gli eventi dalla funzionalità diagnostica con connessione utente e inviare notifiche agli utenti di conseguenza. In questo modo, l'utente è a conoscenza del problema e può risolvere il problema.
In rari casi, questo codice di errore viene visualizzato in modo casuale anche se le impostazioni del firewall dell'utente sono corrette. Se lo stesso utente è stato precedentemente in grado di connettersi e chiamare correttamente, questo problema potrebbe essere dovuto a modifiche delle condizioni di rete. Potrebbe trattarsi di un problema temporaneo. Provare a avviare o partecipare di nuovo alla chiamata.