Traducción de Números
📖 Volver a la Documentación Principal
La traducción de números convierte números de teléfono entre diferentes formatos para garantizar un formato E.164 consistente en todo el sistema.
Documentación Relacionada
Documentación Principal
- 📋 README Principal - Descripción general y guía rápida
- 🔧 Guía de Configuración - Configuración de la traducción de números (
number_translate) - 🔧 Guía de Operaciones - Pruebas de traducción de números en el Panel de Control
Flujo de Procesamiento de Llamadas
- 🔀 Configuración del Dialplan - Uso de números traducidos en el dialplan (la traducción ocurre primero)
- 👥 Interfaz Sh - La búsqueda Sh utiliza números traducidos
- 💳 Carga en Línea - OCS recibe números traducidos
- 📡 SS7 MAP - Las consultas HLR utilizan números traducidos
Servicios Relacionados
- ⚙️ Servicios Suplementarios - Eliminación de prefijos de bloqueo CLI durante la traducción
- 📞 Correo de Voz - Números de correo de voz en traducción
Monitoreo
- 📊 Referencia de Métricas - Métricas de traducción de números
Traducción de Números
La traducción de números convierte números de teléfono entre diferentes formatos (local, nacional, internacional) para garantizar un formato E.164 consistente en todo el sistema.
¿Qué es la Traducción de Números?
La traducción de números normaliza los números de teléfono al formato E.164 (estándar internacional) antes del procesamiento de llamadas. Esto asegura:
- Numeración consistente en todo el sistema
- Enrutamiento adecuado a destinos en red y fuera de red
- Compatibilidad con troncos SIP internacionales y redes IMS
Formato E.164: [Código de País][Número Nacional] (sin prefijo +, sin espacios)
- Ejemplo:
61403123456(móvil de Australia) - Ejemplo:
16505551234(número de EE. UU.)
Cuándo Ocurre la Traducción
La traducción ocurre:
- Antes de las búsquedas Sh
- Antes de las búsquedas HLR
- Antes de la autorización OCS
- Antes de que se genere el XML del dialplan
Para Llamadas MT: Traducir el número de destino (parte llamada) Para Llamadas MO: Traducir ambos números, origen y destino
Configuración
config :tas,
number_translate: %{
country_code: :PF, # Código de país ISO 3166-1 alpha-2
localAreaCode: "617" # Código de área predeterminado para números cortos
}
Parámetros:
country_code: Código de país ISO como átomo (por ejemplo,:AU,:US,:PF)localAreaCode: Código de área que se antepone a números locales cortos
Códigos de País Soportados
El TAS incluye lógica de traducción para estos países:
| Código de País | País | Formatos Soportados | Prefijo E.164 |
|---|---|---|---|
:AU | Australia | 0NSN (10 dígitos), SN (8 dígitos), E.164 | 61 |
:US | Estados Unidos | NPANXXXXXX (10 dígitos), 1+NPANXXXXXX, E.164 | 1 |
:PF | Polinesia Francesa | Local (6 dígitos), Nacional (8 dígitos), E.164 | 689 |
Agregar Nuevos Códigos de País:
La lógica de traducción específica del país debe implementarse en lib/numbertranslation.ex. Contacte a su ingeniero de integración para agregar nuevos países.
Comportamientos Especiales de Traducción
1. Eliminación de Prefijos de Bloqueo CLI
Antes de la traducción de formato, se eliminan los prefijos de bloqueo CLI:
Entrada: *67555123456
Paso 1: Eliminar *67 → 555123456
Paso 2: Traducir → 1555123456 (si es EE. UU.)
2. Eliminación de Parámetros SIP
Los parámetros después de los punto y coma se eliminan:
Entrada: 61403123456;npdi;rn=+61400000000
Paso 1: Eliminar ;npdi;rn=... → 61403123456
Paso 2: Traducir → 61403123456
3. Eliminación de Caracteres No Dígitos
Se eliminan todos los caracteres no dígitos (excepto +):
Entrada: +61 (403) 123-456
Paso 1: Eliminar formato → +61403123456
Paso 2: Traducir → 61403123456
Variables Establecidas Después de la Traducción
| Variable | Valor | Descripción |
|---|---|---|
destination_number | Formato E.164 | Número de destino normalizado |
tas_destination_number | Formato E.164 | Igual a destination_number (ambos establecidos por compatibilidad) |
effective_caller_id_number | Formato E.164 | Número de origen normalizado (llamadas MO) |
Qué Ocurre Cuando la Traducción Falla
Escenario: Código de País No Definido
config :tas, number_translate: %{country_code: :XX} # Inválido
Resultado: {:error, "Código de País No Definido"} - llamada rechazada
Escenario: Formato de Número Inválido
Entrada: "abc123" (contiene letras)
Paso 1: Eliminar no dígitos → "123"
Paso 2: Demasiado corto, no se puede coincidir con ningún patrón
Resultado: Puede pasar tal cual o ser rechazado según la lógica del dialplan
Mejor Práctica: Siempre valide la provisión de suscriptores con números E.164 correctos en HSS.
Pruebas de Traducción de Números
Probador de Traducción de UI Web (/translate):
- Navegue a
/translateen el Panel de Control - Seleccione el código de país del menú desplegable
- Ingrese un número de prueba en cualquier formato
- Vea la salida E.164 traducida
- Pruebe múltiples formatos para validar
Escenarios de Prueba Comunes:
- Códigos cortos locales → E.164
- Formato nacional (0NSN) → E.164
- Formato internacional (+CC) → E.164
- Números con prefijos CLI → eliminados y traducidos
- Números con formato (espacios, guiones) → E.164 limpia
Solución de Problemas de Traducción de Números
Problema: Llamadas que fallan con "NÚMERO_NO_ASIGNADO"
-
Verifique el formato del número traducido:
- Use la herramienta
/translatepara probar el número - Verifique que la salida coincida con el formato E.164 esperado
- Confirme que el código de país y el código de área son correctos
- Use la herramienta
-
Verifique la búsqueda Sh:
- El número traducido se utiliza para la consulta Sh
- Use
/sh_testcon el número traducido - Verifique que el suscriptor exista con ese MSISDN
-
Verifique las variables del dialplan:
- Revise los registros para el valor de
destination_number - Confirme que la traducción ocurrió antes del dialplan
- Revise los registros para el valor de
Problema: Se aplica un código de área incorrecto
# Configuración
config :tas, number_translate: %{
country_code: :AU,
localAreaCode: "617" # Incorrecto para su región
}
# Entrada: 12345678 (local de 8 dígitos)
# Salida: 6161712345678 (incorrecto - doble código de área)
# Solución: Establecer el localAreaCode correcto para su implementación
Problema: Números internacionales no reconocidos
Verifique si el número incluye el código de país:
- ✅
+61403123456o61403123456→ Reconocido - ❌
0403123456en configuración de código de país incorrecto → Enrutado incorrectamente
Comportamiento de Traducción MO vs MT
Llamadas MT (Terminadas en Móvil):
- Solo se traduce el número de destino (parte llamada)
- El número de origen (llamante) se pasa tal cual desde SIP
- El destino se utiliza para la búsqueda Sh del suscriptor llamado
Llamadas MO (Originadas en Móvil):
- Se traduce el número de destino (parte llamada)
- También se traduce el número de origen (parte llamante)
- El origen se utiliza para la búsqueda Sh del suscriptor que llama
- Ambos números se normalizan para un registro/CDR consistente
Mejores Prácticas
-
Use el Código de País Correcto:
- Establezca
country_codepara que coincida con su región de implementación - Pruebe a fondo antes de la producción
- Establezca
-
Configure el Código de Área Local Apropiado:
localAreaCodedebe coincidir con el área predeterminada de su red- Se utiliza para números cortos sin código de área
-
Pruebe Todos los Formatos de Números:
- Local (códigos cortos)
- Nacional (formato 0NSN)
- Internacional (formato +CC)
- Números de servicio especial (emergencia, correo de voz)
-
Monitoree los Registros de Traducción:
- Verifique errores de "Código de País No Definido"
- Esté atento a formatos de número inesperados
- Valide que la salida E.164 coincida con las expectativas
-
Documente Su Plan de Numeración:
- Defina qué formatos utilizarán los suscriptores
- Pruebe cada formato en la herramienta
/translate - Capacite al personal de operaciones sobre los formatos esperados