Hovor končí na 410/3112.
Důvodem, proč volání končí chybou 410/3112, je, že se klient nemůže spojit s jiným koncovým bodem a neshromažďují se žádní kandidáti na přenos. Tento kód chyby 410/3112 může nastat, když se cesta k médiu nedá navázat kvůli problémům se sítí, omezením brány firewall nebo nesprávným nastavením konfigurace. Z toho důvodu se partnerským uzlům nepodařilo navázat přímé nebo předávací připojení.
Kandidáti na přenos nejsou potřeba, pokud klient dokáže navázat přímé připojení k druhému partnerskému uzlu. Pokud se ale WebRTC nepodaří shromáždit kandidáty na přenos, často značí problém s konfigurací serveru TURN (procházení pomocí přenosů kolem překladu adres (NAT) nebo síťovými omezeními. Kandidáti na přenos jsou zásadní pro navázání připojení v omezujících síťových prostředích.
Zjištění pomocí sady SDK
Důvod ukončení volání můžete zjistit pomocí následujícího fragmentu kódu.
call.on('stateChanged', () => {
if (call.state === 'Disconnected') {
if (call.callEndReason.code === 410 && call.callEndReason.subCode === 3112) {
// show error message
}
}
});
Informace o kódech a podkódech najdete v tématu Vysvětlení chyb volání a podkódů.
Pokud nelze navázat cestu k médiu, volání se ukončí kódem 410 a podkódem 3112.
Sada SDK také aktivuje událost networkRelaysNotReachable UFD .
Tady je fragment kódu, který ukazuje, jak zachytit networkRelaysNotReachable UFD
událost.
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
}
}
});
Analýza problému s Log Analytics nebo nástrojem pro diagnostiku volání
Když uživatel hlásí, že se mu nedaří volat, můžete pomocí nástroje Diagnostika volání analyzovat příčinu selhání. K ladění uživatelských volání potřebujete ID volání. Pokud volání uživatele selhalo, protože brána firewall zablokovala připojení k přenosu, najdete koncový kód a podkód na 410 a 3112 na stránce přehledu hovoru.
Kromě toho můžete na stránce problémů volání najít také událost networkRelaysNotReachable UFD .
Pokud chcete porozumět načasování akcí nebo událostí uživatelů, můžete zkontrolovat podrobnosti na stránce časové osy.
V tomto příkladu uživatel obdržel networkRelaysNotReachable UFD
událost v 16:41:47 a událost změny stavu volání v 16:41:49.
Nástroj Diagnostika volání poskytuje přehled a potřebné informace pro ladění jednoho volání. Pokud chcete zjistit, kolik uživatelů na tento problém narazí nebo jak často k problému dochází, můžete pomocí nástroje Log Analytics získat přehledy o tomto problému.
Pokud například chcete získat ID volání, které bylo odpojeno s podkódem 3112 za posledních 7 dnů, můžete tento dotaz spustit:
ACSCallSummary
| where ParticipantEndSubCode == 3112
| project TimeGenerated, CorrelationId, ParticipantId, Identifier, CallType
Můžete také vykreslit časový diagram, abyste porozuměli dennímu počtu volání končících podkódem 3112.
ACSCallSummary
| where ParticipantEndSubCode == 3112
| summarize count() by bin(TimeGenerated, 1d)
| render timechart
Časový graf poskytuje přehled pouze uživatelů ve stejném ID prostředku služby ACS. Spuštěním konkrétnějších dotazů můžete identifikovat vzory nebo anomálie, které nejsou přímo z časového grafu zřejmé, což vám pomůže určit původní příčinu jakýchkoli problémů přesněji.
Pokud se například zobrazí špička v počtu volání končících podkódem 3112, může to být způsobeno velkým objemem volání, zatímco poměr výskytů problému zůstal stejný. Případně může být špička přiřazena konkrétnímu uživateli, který se mnohokrát pokusil o opakování a všechny pokusy se nezdařily s podkódem 3112.
V tomto dotazu analyzujeme data na základě identifikátorů uživatelů za předpokladu, že aplikace udržuje stejný identifikátor uživatele pro každého jednotlivce.
ACSCallSummary
| summarize Total = count(), SuccessCount = countif(ParticipantEndSubCode == 0), SubCode3112Count = countif(ParticipantEndSubCode == 3112) by Identifier
| where SubCode3112Count > 0
| order by SubCode3112Count desc
V tomto příkladu měl jeden uživatel celkem 180 volání, z nichž 160 bylo úspěšné a pouze dvě volání selhala s podkódem 3112. Tento model naznačuje přechodný problém se sítí, který může být vyřešen opakovaným pokusem. Na druhou stranu měl jiný uživatel celkem šest volání, z nichž všechna selhala s podkódem 3112. Tato konzistence v hodnotě podkódu značí pravděpodobné potíže s konfigurací sítě pro daného uživatele, kdy opakování pravděpodobně nepomůže.
Jak zmírnit nebo vyřešit
Pokud zjistíte, že uživatel konzistentně používá chybu 410/3112, měli byste doporučit, aby zkontroloval nastavení brány firewall. Uživatelé by měli postupovat podle pokynů konfigurace brány firewall uvedených v dokumentu doporučení k síti. Ujistěte se, že uživatel nebo správce zkontrolují nastavení překladu síťových adres (NAT) a ověří, jestli zásady brány firewall blokují pakety UDP (User Datagram Protocol). Nastavení brány firewall nejsou omezena na počítač uživatele; pokud je uživatel v podnikovém prostředí, může být potřeba nakonfigurovat i bránu firewall společnosti.
Navíc pokud aplikace používá vlastní servery TURN, ujistěte se, že zadaná IP adresa, port a protokol nejsou blokovány žádnou bránou firewall.
Pro aplikaci je důležité zpracovávat události z funkce Diagnostiky uživatelů a odpovídajícím způsobem informovat uživatele. Uživatel tak o problému ví a může řešit potíže v síťovém prostředí.
Ve výjimečných případech se tento kód chyby zobrazí náhodně i v případě, že je nastavení brány firewall uživatele správné. Pokud se stejný uživatel dříve mohl připojit a volat úspěšně, příčinou tohoto problému můžou být změny v podmínkách sítě. Může se jednat o dočasný problém. Zkuste zahájit hovor nebo se k němu znovu připojit.