Der Anruf endet mit 410/3112
Der Anruf endet mit dem Fehler 410/3112, weil der Client nicht in der Lage ist, den anderen Endpunkt zu erreichen, und keine Relaykandidaten gesammelt werden. Der Fehlercode 410/3112 kann auftreten, wenn der Medienpfad aufgrund von Netzwerkproblemen, Firewalleinschränkungen oder falschen Konfigurationseinstellungen nicht eingerichtet werden kann. Daher konnten die Peers keine direkte Verbindung bzw. keine Relayverbindung herstellen.
Die Relaykandidaten sind nicht erforderlich, wenn der Client eine direkte Verbindung mit dem anderen Peer herstellen kann. Wenn WebRTC jedoch keine Relaykandidaten sammelt, weist dies häufig auf ein Problem mit der TURN-Serverkonfiguration (Traversal Using Relays around NAT) oder Netzwerkeinschränkungen hin. Relaykandidaten sind entscheidend für die Herstellung von Verbindungen in restriktiven Netzwerkumgebungen.
Erkennen unter Verwendung des SDK
Sie können den Grund für das Beenden des Anrufs mithilfe des folgenden Codeschnipsels erfahren.
call.on('stateChanged', () => {
if (call.state === 'Disconnected') {
if (call.callEndReason.code === 410 && call.callEndReason.subCode === 3112) {
// show error message
}
}
});
Informationen zu den Codes und Untercodes finden Sie unter Grundlegendes zu Fehlern in anrufenden Codes und Untercodes.
Wenn der Medienpfad nicht eingerichtet werden kann, wird der Anruf mit Code 410 und Untercode 3112 beendet.
Das SDK löst auch das Ereignis networkRelaysNotReachable UFD aus.
Hier ist ein Codeschnipsel, der zeigt, wie das Ereignis networkRelaysNotReachable UFD
erfasst wird.
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
}
}
});
Analysieren des Problems mit dem Tool „Log Analytics“ oder „Anrufdiagnose“
Wenn ein Benutzer meldet, dass er keinen Anruf tätigen kann, können Sie das Tool Anrufdiagnose verwenden, um den Grund für den Fehler zu analysieren. Zum Debuggen von Benutzeranrufen benötigen Sie die Anruf-ID. Wenn der Anruf des Benutzers fehlgeschlagen ist, weil die Firewall die Relayverbindung blockiert hat, finden Sie den Endcode und den Untercode 410 und 3112 auf der Übersichtsseite des Anrufs.
Darüber hinaus finden Sie das Ereignis networkRelaysNotReachable UFD auf der Seite mit Anrufproblemen.
Um das Timing von Benutzeraktionen oder Ereignissen zu verstehen, können Sie die Details auf der Zeitleistenseite überprüfen.
In diesem Beispiel hat der Benutzer das Ereignis networkRelaysNotReachable UFD
um 16:41:47 Uhr und das Änderungsereignis für den Anrufstatus um 16:41:49 Uhr empfangen.
Mit dem Tool Anrufdiagnose erhalten Sie einen Überblick und die erforderlichen Informationen zum Debuggen eines einzelnen Anrufs. Wenn Sie verstehen möchten, wie viele Benutzer dieses Problem haben oder wie oft Benutzer das Problem haben, können Sie das Tool Log Analytics verwenden, um Erkenntnisse zu diesem Problem zu erhalten.
Wenn Sie beispielsweise die IDs von Anrufen abrufen möchten, die in den letzten sieben Tagen mit dem Untercode 3112 getrennt wurden, können Sie diese Abfrage ausführen:
ACSCallSummary
| where ParticipantEndSubCode == 3112
| project TimeGenerated, CorrelationId, ParticipantId, Identifier, CallType
Sie können auch ein Zeitdiagramm rendern, um die tägliche Anzahl der Anrufe zu verstehen, die mit dem Untercode 3112 enden.
ACSCallSummary
| where ParticipantEndSubCode == 3112
| summarize count() by bin(TimeGenerated, 1d)
| render timechart
Das Zeitdiagramm bietet nur einen Überblick über die Benutzer mit derselben ACS-Ressourcen-ID. Indem Sie spezifischere Abfragen ausführen, können Sie Muster oder Anomalien identifizieren, die nicht sofort im Zeitdiagramm ersichtlich sind, sodass Sie die Grundursache von Problemen genauer bestimmen können.
Wenn beispielsweise eine Spitze bei der Anzahl der Anrufe erkennbar ist, die mit dem Untercode 3112 enden, kann dies auf ein hohes Anrufvolumen zurückzuführen sein, während das Vorkommen des Problems im Verhältnis unverändert bleibt. Alternativ kann die Spitze zu einem bestimmten Benutzer zugeordnet sein, der viele Versuche unternommen hat, und alle Versuche sind mit dem Untercode 3112 fehlgeschlagen.
In dieser Abfrage analysieren wir die Daten basierend auf den Benutzerbezeichnern. Dabei wird angenommen, dass die App denselben Benutzerbezeichner für jede Person beibehält.
ACSCallSummary
| summarize Total = count(), SuccessCount = countif(ParticipantEndSubCode == 0), SubCode3112Count = countif(ParticipantEndSubCode == 3112) by Identifier
| where SubCode3112Count > 0
| order by SubCode3112Count desc
In diesem Beispiel hatte ein Benutzer insgesamt 180 Anrufe, von denen 160 Anrufe erfolgreich waren und nur zwei Anrufe mit Untercode 3112 fehlgeschlagen sind. Dieses Muster legt ein vorübergehendes Netzwerkproblem nahe, das durch erneute Versuche behoben werden kann. Auf der anderen Seite hatte ein anderer Benutzer insgesamt sechs Anrufe, von denen alle mit dem Untercode 3112 fehlgeschlagen sind. Diese Konsistenz im Untercodewert deutet auf ein wahrscheinliches Netzwerkkonfigurationsproblem für diesen Benutzer hin, bei dem eine Wiederholung wahrscheinlich nicht hilfreich ist.
Entschärfung oder Behebung
Wenn bei einem Benutzer der Fehler 410/3112 konsistent auftritt, sollten Sie empfehlen, die Firewalleinstellungen zu überprüfen. Die Benutzer sollten der Richtlinie Firewallkonfiguration folgen, die im Dokument Netzwerkempfehlungen erwähnt wird. Stellen Sie sicher, dass der Benutzer oder Administrator die NAT-Einstellungen (Network Address Translation, Netzwerkadressenübersetzung) überprüft und ermittelt, ob die Firewallrichtlinie UDP-Pakete (User Datagram-Protokoll) blockiert. Die Firewalleinstellungen sind nicht auf den Computer des Benutzers beschränkt. Wenn sich der Benutzer in einer Unternehmensumgebung befindet, muss möglicherweise auch die Firewall des Unternehmens konfiguriert werden.
Wenn die Anwendung benutzerdefinierte TURN-Server verwendet, stellen Sie außerdem sicher, dass die angegebene IP, der Port und das Protokoll nicht durch eine Firewall blockiert werden.
Die Anwendung muss Ereignisse aus dem Feature „Benutzerorientierte Diagnose“ behandeln und die Benutzer entsprechend benachrichtigen. Dadurch ist dem Benutzer das Problem bekannt, und er kann eine Problembehandlung in seiner Netzwerkumgebung durchführen.
In seltenen Fällen wird dieser Fehlercode zufällig angezeigt, auch wenn die Firewalleinstellungen des Benutzers korrekt sind. Wenn derselbe Benutzer zuvor erfolgreich eine Verbindung herstellen und anrufen konnte, kann dieses Problem auf Änderungen der Netzwerkbedingungen zurückzuführen sein. Es kann ein temporäres Problem sein. Versuchen Sie erneut, den Anruf zu starten oder daran teilzunehmen.