De oproep eindigt met 410/3112
De reden waarom de aanroep eindigt op 410/3112-fout, is dat de client geen contact kan opnemen met het andere eindpunt en dat er geen relaykandidaten worden verzameld. Deze foutcode van 410/3112 kan optreden wanneer het mediapad niet tot stand kan worden gebracht vanwege netwerkproblemen, firewallbeperkingen of onjuiste configuratie-instellingen. De peers konden daarom geen directe of relayverbinding tot stand brengen.
De relaykandidaten zijn niet nodig als de client een directe verbinding met de andere peer tot stand kan brengen. Wanneer WebRTC echter geen relaykandidaten kan verzamelen, geeft dit vaak een probleem aan met de serverconfiguratie of netwerkbeperkingen van TURN (Traversal Using Relays around NAT). Relay-kandidaten zijn van cruciaal belang voor het tot stand brengen van verbindingen in beperkende netwerkomgevingen.
Detecteren met behulp van de SDK
U kunt de reden voor het beëindigen van de aanroep leren met behulp van het volgende codefragment.
call.on('stateChanged', () => {
if (call.state === 'Disconnected') {
if (call.callEndReason.code === 410 && call.callEndReason.subCode === 3112) {
// show error message
}
}
});
Zie Understanding calling codes and subcodes errors (Informatie over aanroepende codes en subcodes) voor meer informatie over de codes en subcodes.
Wanneer het mediapad niet tot stand kan worden gebracht, wordt de aanroep beëindigd met code 410 en subcode 3112.
De SDK activeert ook de UFD-gebeurtenis networkRelaysNotReachable.
Hier volgt een codefragment waarin wordt getoond hoe u de networkRelaysNotReachable UFD
gebeurtenis kunt vastleggen.
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
}
}
});
Het probleem analyseren met het hulpprogramma Log Analytics of Diagnostische gegevens aanroepen
Wanneer een gebruiker rapporteert dat hij of zij geen oproep kan doen, kunt u het hulpprogramma Diagnostische oproep gebruiken om de reden voor de fout te analyseren. Als u fouten wilt opsporen in gebruikersaanroepen, hebt u de aanroep-id nodig. Als de aanroep van de gebruiker is mislukt omdat de firewall de relayverbinding heeft geblokkeerd, vindt u de eindcode en subcode 410 en 3112 op de overzichtspagina van de aanroep.
Daarnaast kunt u ook networkRelaysNotReachable UFD-gebeurtenis vinden op de pagina oproepproblemen.
Als u de timing van gebruikersacties of gebeurtenissen wilt begrijpen, kunt u de details op de tijdlijnpagina controleren.
In dit voorbeeld heeft networkRelaysNotReachable UFD
de gebruiker de gebeurtenis om 16:41:47 ontvangen en de gebeurtenis statuswijziging aangeroepen om 16:41:49.
Het hulpprogramma Gespreksdiagnose geeft u een overzicht en de benodigde informatie voor het opsporen van fouten in één aanroep. Als u wilt weten hoeveel gebruikers dit probleem ondervinden of hoe vaak gebruikers het probleem ervaren, kunt u het hulpprogramma Log Analytics gebruiken om inzicht te krijgen in dit probleem.
Als u bijvoorbeeld de aanroep-id wilt ophalen die de verbinding met subcode 3112 in de afgelopen zeven dagen is verbroken, kunt u deze query uitvoeren:
ACSCallSummary
| where ParticipantEndSubCode == 3112
| project TimeGenerated, CorrelationId, ParticipantId, Identifier, CallType
U kunt ook een tijddiagram weergeven om inzicht te hebben in het dagelijkse aantal aanroepen dat eindigt op subcode 3112
ACSCallSummary
| where ParticipantEndSubCode == 3112
| summarize count() by bin(TimeGenerated, 1d)
| render timechart
Het tijddiagram biedt alleen een overzicht van de gebruikers onder dezelfde ACS-resource-id. Door specifiekere query's uit te voeren, kunt u patronen of afwijkingen identificeren die niet direct zichtbaar zijn in het tijddiagram, zodat u de hoofdoorzaak van problemen nauwkeuriger kunt vaststellen.
Als u bijvoorbeeld een piek ziet in het aantal aanroepen dat eindigt op subcode 3112, kan dit worden veroorzaakt door het grote aantal aanroepen terwijl de frequentieverhouding van het probleem hetzelfde bleef. De piek kan ook worden toegeschreven aan een bepaalde gebruiker die meerdere keren opnieuw heeft geprobeerd en alle pogingen zijn mislukt met subcode 3112.
In deze query analyseren we de gegevens op basis van de gebruikers-id's, ervan uitgaande dat de app dezelfde gebruikers-id voor elke persoon onderhoudt.
ACSCallSummary
| summarize Total = count(), SuccessCount = countif(ParticipantEndSubCode == 0), SubCode3112Count = countif(ParticipantEndSubCode == 3112) by Identifier
| where SubCode3112Count > 0
| order by SubCode3112Count desc
In dit voorbeeld had één gebruiker in totaal 180 aanroepen, waarvan 160 aanroepen zijn geslaagd en slechts twee aanroepen zijn mislukt met subcode 3112. Dit patroon suggereert een tijdelijk netwerkprobleem, dat kan worden opgelost door het opnieuw te proberen. Aan de andere kant had een andere gebruiker in totaal zes aanroepen, die allemaal zijn mislukt met subcode 3112. Deze consistentie in de waarde van de subcode geeft een waarschijnlijk probleem met de netwerkconfiguratie voor die gebruiker aan, waarbij opnieuw proberen waarschijnlijk niet kan helpen.
Hoe u dit kunt beperken of oplossen
Als u merkt dat een gebruiker consistent 410/3112-fout ondervindt, raden ze aan hun firewallinstellingen te controleren. Gebruikers moeten de firewallconfiguratie-richtlijn volgen die wordt vermeld in het document met aanbevelingen voor netwerken . Zorg ervoor dat de gebruiker of beheerder de NAT-instellingen (Network Address Translation) controleert en controleert of het firewallbeleid UDP-pakketten (User Datagram Protocol) blokkeert. De firewallinstellingen zijn niet beperkt tot de computer van de gebruiker; als de gebruiker zich in een bedrijfsomgeving bevindt, moet de firewall van het bedrijf mogelijk ook worden geconfigureerd.
Als de toepassing gebruikmaakt van aangepaste TURN-servers, moet u er bovendien voor zorgen dat het opgegeven IP-adres, de poort en het protocol niet worden geblokkeerd door een firewall.
Voor de toepassing is het belangrijk om gebeurtenissen van de functie Diagnostische gegevens van gebruikers af te handelen en de gebruikers dienovereenkomstig op de hoogte te stellen. Hierdoor is de gebruiker op de hoogte van het probleem en kan deze de netwerkomgeving oplossen.
In zeldzame gevallen wordt deze foutcode willekeurig weergegeven, zelfs als de firewallinstellingen van de gebruiker juist zijn. Als dezelfde gebruiker eerder verbinding kon maken en aanroepen, kan dit probleem worden veroorzaakt door wijzigingen in netwerkomstandigheden. Dit kan een tijdelijk probleem zijn. Probeer de oproep opnieuw te starten of eraan deel te nemen.