La llamada finaliza con 410/3112
La razón por la que la llamada finaliza con el error 410/3112 se debe a que el cliente no puede ponerse en contacto con el otro punto de conexión y no se recopila ningún candidato de retransmisión. Este código de error 410/3112 puede producirse cuando no se puede establecer la ruta de acceso multimedia debido a problemas de red, restricciones de firewall o opciones de configuración incorrectas. Por lo tanto, los elementos del mismo nivel no pudieron establecer una conexión directa o de retransmisión.
Los candidatos de retransmisión no son necesarios si el cliente puede establecer una conexión directa con el otro elemento del mismo nivel. Sin embargo, cuando WebRTC no logra recopilar candidatos de retransmisión, con frecuencia indica un problema con la configuración del servidor o las restricciones de red TURN (recorrido de NAT mediante retransmisores). Los candidatos de retransmisión son fundamentales para establecer conexiones en entornos de red restrictivos.
Cómo detectar el uso del SDK
Puede obtener información sobre el motivo de la llamada que termina mediante el siguiente fragmento de código.
call.on('stateChanged', () => {
if (call.state === 'Disconnected') {
if (call.callEndReason.code === 410 && call.callEndReason.subCode === 3112) {
// show error message
}
}
});
Para comprender los códigos y subcódigos, consulte Descripción de los códigos de llamada y los errores de subcódigos.
Cuando no se puede establecer la ruta de acceso multimedia, la llamada finaliza con el código 410 y el subcódigo 3112.
El SDK también desencadena el evento networkRelaysNotReachable UFD.
Este es un fragmento de código que muestra cómo capturar el 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
}
}
});
Análisis del problema con la herramienta Log Analytics o Diagnóstico de llamadas
Cuando un usuario informa de que no puede realizar una llamada, puede usar la herramienta Diagnóstico de llamadas para analizar el motivo del error. Para depurar las llamadas de usuario, necesita el Identificador de llamada. Si se produjo un error en la llamada del usuario porque el firewall ha bloqueado la conexión de retransmisión, puede encontrar el código final y el subcódigo como 410 y 3112 en la página de información general de la llamada.
Además, también puede encontrar el evento networkRelaysNotReachable UFD en la página de problemas de llamada.
Para comprender el tiempo de las acciones o eventos del usuario, puede comprobar los detalles de la página de escala de tiempo.
En este ejemplo, el usuario obtuvo networkRelaysNotReachable UFD
evento a las 16:41:47 y llamar al evento de cambio de estado a las 16:41:49.
La herramienta Diagnóstico de llamadas proporciona información general y la información necesaria para depurar una sola llamada. Si desea comprender cuántos usuarios encuentran este problema o con qué frecuencia experimentan el problema, puede usar la herramienta Log Analytics para obtener información sobre este problema.
Por ejemplo, si desea obtener el identificador de llamada que se desconectó con el subcódigo 3112 en los últimos siete días, puede ejecutar esta consulta:
ACSCallSummary
| where ParticipantEndSubCode == 3112
| project TimeGenerated, CorrelationId, ParticipantId, Identifier, CallType
También puede representar un gráfico de tiempo para comprender el número diario de llamadas que terminan con el subcódigo 3112
ACSCallSummary
| where ParticipantEndSubCode == 3112
| summarize count() by bin(TimeGenerated, 1d)
| render timechart
El gráfico de tiempo solo proporciona información general de los usuarios en el mismo identificador de recurso de ACS. Ejecutando consultas más específicas, puede identificar patrones o anomalías que no resultan inmediatamente evidentes a partir del gráfico de tiempo por sí solo, ayudándole a identificar la causa raíz de cualquier problema con mayor precisión.
Por ejemplo, si ve un pico en el número de llamadas que terminan con el subcódigo 3112, podría deberse al gran volumen de llamadas mientras que la proporción de repetición del problema seguía siendo la misma. Como alternativa, el pico podría atribuirse a un usuario determinado que reintentaba muchas veces y se produjeron errores en todos los intentos con el subcódigo 3112.
En esta consulta, analizamos los datos en función de los identificadores de usuario, suponiendo que la aplicación mantiene el mismo identificador de usuario para cada individuo.
ACSCallSummary
| summarize Total = count(), SuccessCount = countif(ParticipantEndSubCode == 0), SubCode3112Count = countif(ParticipantEndSubCode == 3112) by Identifier
| where SubCode3112Count > 0
| order by SubCode3112Count desc
En este ejemplo, un usuario tenía un total de 180 llamadas, de las cuales 160 llamadas se realizaron correctamente y solo dos llamadas con el subcódigo 3112. Este patrón sugiere un problema de red transitorio, que se puede resolver mediante el reintento. Por otro lado, otro usuario tenía un total de seis llamadas, lo que produjo un error en el subcódigo 3112. Esta coherencia en el valor de subcódigo indica un problema de configuración de red probable para ese usuario, donde es poco probable que vuelva a intentarlo.
Cómo mitigar o resolver
Si encuentra que un usuario experimenta de forma coherente el error 410/3112, debe recomendar que compruebe la configuración del firewall. Los usuarios deben seguir las directrices de configuración del firewall mencionadas en el documento Recomendaciones de red. Asegúrese de que el usuario o administrador comprueba la configuración de traducción de direcciones de red (NAT) y comprueba si su directiva de firewall bloquea los paquetes del Protocolo de datagramas de usuario (UDP). La configuración del firewall no se limita al equipo del usuario; si el usuario está en un entorno corporativo, es posible que también sea necesario configurar el firewall de la empresa.
Además, si la aplicación usa Servidores TURN personalizados, asegúrese de que ningún firewall bloquee la dirección IP, el puerto y el protocolo especificados.
En el caso de la aplicación, es importante administrar los eventos de la Característica de diagnóstico orientado al usuario y notificar a los usuarios según corresponda. Al hacerlo, el usuario conoce el problema y puede solucionar su entorno de red.
En raras ocasiones, este código de error aparece aleatoriamente incluso si la configuración del firewall del usuario es correcta. Si el mismo usuario pudo conectarse y llamar correctamente, este problema podría deberse a cambios en las condiciones de red. Puede ser un problema temporal. Intente iniciar o unir la llamada de nuevo.