BroadNet
La revistaIngeniería
Ingeniería

Validación de números de teléfono y del formato E.164: formato, normalización MSISDN y por qué es importante para la entrega.

E.164 es el formato en el que se deben almacenar todos los números de teléfono. Cómo funciona la normalización MSISDN, cómo validar los números y por qué un formato incorrecto impide la entrega.

9 min de lectura
Ingeniería · Número 17
9 min de lectura

.164 es el estándar de la UIT-T para escribir números de teléfono de uso internacional: un signo más al principio, un código de país de uno a tres dígitos y el número nacional, sin separadores y con un máximo de 15 dígitos. Almacenar cada número en este formato canónico —el MSISDN al que se enruta la red— es lo que permite la validación y la entrega confiable.

¿Quieres convertir un número ahora? Pégalo en el formateador de números de teléfono para ver su formato E.164, o procesa una lista completa con el validador de listas de números. Esta guía explica el funcionamiento interno de estas herramientas.

Qué es E.164: el plan de numeración internacional

E.164 es la Recomendación E.164 de la UIT-T, el plan internacional de numeración de telecomunicaciones públicas. Asigna a cada teléfono del planeta una dirección única a nivel mundial, lo que permite enrutar llamadas y mensajes desde cualquier red a cualquier otra. Un número E.164 consta de tres partes: un código de país (CC) de uno a tres dígitos, un código de destino nacional (NDC, generalmente el código de operador o de área) y el número de abonado. En conjunto, no deben superar los 15 dígitos.

La cadena canónica consiste en un signo '+' seguido únicamente de dígitos; por ejemplo, +971500000000. El '+' sirve como marcador de posición para el prefijo de acceso internacional que utilice la red de origen (00 en la mayor parte del mundo, 011 en Norteamérica). Almacenar el '+' en lugar de un prefijo específico de cada país es precisamente lo que garantiza la portabilidad del número entre redes y países. Un número E.164 no contiene espacios, guiones, paréntesis ni ceros iniciales: estas son convenciones de visualización, no forman parte del número.

MSISDN: el número al que realmente enruta la red.

MSISDN significa Número de Directorio Internacional de Abonados de Estación Móvil (Mobile Station International Subscriber Directory Number), el número E.164 que identifica a un abonado móvil. Es el número que se almacena, se marca y al que se envían mensajes SMS. Está separado del IMSI, la identidad almacenada en la tarjeta SIM según la norma ITU-T E.212 (un código de país móvil, un código de red móvil y la identidad del abonado). El Registro de Ubicación del operador asocia un MSISDN con su IMSI y red de servicio actuales, lo que permite que un mensaje dirigido a un número E.164 llegue al terminal correcto incluso después de que el abonado cambie de operador o realice una portabilidad.

En resumen: un MSISDN es simplemente un número E.164 para una línea móvil. Cuando se habla de "normalizar a MSISDN", se refieren a "almacenar el número móvil en formato E.164 canónico". Lograr la representación correcta en el momento de la captura es la clave para que el número se enrute correctamente y falle silenciosamente en la red.

Normalización: almacenar cada número en una forma canónica.

Los usuarios teclean números de todas las formas imaginables: con espacios, paréntesis, el cero de la línea nacional, el prefijo internacional 00 o 011, o sin ninguno de los anteriores. La normalización los combina todos en una cadena E.164 canónica, de modo que la misma línea física se almacena siempre de forma idéntica. Sin ella, no se puede eliminar duplicados de una lista de contactos, cotejar un número con una lista de exclusión ni validar de forma fiable antes de realizar un envío.

Un normalizador robusto aplica estas reglas en orden:

  • Elimine todos los caracteres de formato: espacios, guiones, puntos y paréntesis.
  • Convierta un prefijo de acceso internacional —un 00 inicial (UIT) o 011 (Norteamérica)— en un '+'.
  • Si el número ya comienza con '+', mantenga el código de país tal como está.
  • Si está en formato nacional (sin código de país), elimine el prefijo del troncal nacional (normalmente un solo 0 inicial) y anteponga el código de país de la región predeterminada.
  • Rechace todo lo que no sea un '+' seguido de entre 1 y 15 dígitos, con un primer dígito entre 1 y 9.
  • Almacena solo el signo '+' y los dígitos; regenera formularios de visualización atractivos sobre la marcha cuando muestres el número.

El paso del cero inicial es el que suele causar problemas a los equipos. En la mayoría de los países, el cero inicial que se marca a nivel nacional es un prefijo de línea que se omite en la versión internacional: un móvil de los Emiratos Árabes Unidos escrito como 050 000 0000 se convierte en +971 50 000 0000, no en +971 050… Aplicar el código de país sin eliminar ese cero produce un número inválido que parece plausible. El normalizador debe conocer la región predeterminada para resolver la entrada en formato nacional; los mismos dígitos corresponden a líneas diferentes en distintos países.

snippet
función toE164(raw, defaultRegion) {
// 1. Eliminar espacios, guiones, puntos y paréntesis
let s = raw.trim().replace(/[\s().\-]/g, '');
// 2. Prefijo internacional 00 (ITU) o 011 (NANP) -> +
s = s.replace(/^(00|011)/, '+');
// 3. ¿Ya está en formato internacional? Mantener el código de país
if (s.startsWith('+')) return assertE164(s);
// 4. Formato nacional: Eliminar el troncal 0, anteponer el código de región
s = s.replace(/^0/, '');
return assertE164('+' + defaultRegion.dialCode + s);
}
// assertE164 solo acepta /^\+[1-9]\d{1,14}$/ (más, luego <= 15 dígitos)

Aquí se aplica la misma lógica a ejemplos reales de GCC e internacionales. Observe cómo las distintas entradas se reducen a un único MSISDN limpio:

Código del país)Introduzca la información tal como la ha escrito.Canónico E.164 (MSISDN)
Emiratos Árabes Unidos (+971)050 000 0000 / 00971 50 000 0000+971500000000
Arabia Saudita (+966)0500000000+966500000000
Egipto (+20)0100 123 4567+201001234567
Reino Unido (+44)(07911) 123 456+447911123456
Estados Unidos (+1)011 1 202 555 0143+12025550143

Para comprobaciones puntuales, el formateador de números de teléfono muestra los formatos de visualización nacionales e internacionales de un número junto con su salida E.164; para limpiar una carga completa antes de una campaña, el validador de listas de números normaliza, elimina duplicados y marca las filas no válidas en el navegador para que los datos sin procesar nunca salgan de su máquina.

La validez sintáctica no es alcanzabilidad.

Las comprobaciones de normalización y longitud indican que un número está bien formado: tiene la forma correcta, un código de país válido y no supera los 15 dígitos. Sin embargo, no pueden indicar si el número está asignado a un abonado activo. Un número E.164 sintácticamente perfecto puede estar sin asignar, desactivado o transferido a un operador diferente al que sugiere su prefijo. Enviar correos a ese número sigue teniendo un coste y reduce la tasa de entrega.

Para confirmar la accesibilidad real, es necesario consultar la base de datos de abonados del operador. Una consulta HLR (consulta HLR) indica si un número está asignado y activo, su red de origen (el MCC/MNC asociado a cualquier número portado) y su estado de itinerancia: la información esencial que la sintaxis por sí sola no puede proporcionar. El procedimiento lógico consiste en normalizar primero a E.164, descartar las filas sintácticamente inválidas y, a continuación, realizar consultas HLR en los números restantes antes de enviar datos grandes o de alto valor.

Por qué los errores de formato cuestan mensajes entregados y dinero.

Los SMS A2P se facturan por segmento al enviarlos, no al entregarlos. Un número con formato incorrecto implica un intento de envío que se paga y que nunca llega; y a gran escala, estos fallos se acumulan. Un formato incorrecto también oculta duplicados (la misma línea almacenada de tres maneras diferentes se factura tres veces), altera las métricas de tasa de entrega y puede activar los filtros del operador cuando una pasarela recibe números que no puede analizar.

La solución más económica se encuentra completamente en su lado de la API: normalice en el punto de captura, valide el formato E.164 antes de ponerlo en cola y reserve las búsquedas HLR para los números que pasen. Los equipos que integren esto en su propia pila pueden conectarlo una sola vez a una API de mensajería (consulte la documentación para desarrolladores) para que cada número sea canónico antes de que se cobre por él. El manejo de números nacionales e internacionales tampoco es un caso excepcional en MENA: los remitentes del CCG reciben habitualmente números de los EAU, Arabia Saudita y Egipto en formato local, y cada uno necesita su propia regla de prefijo de troncal para normalizar correctamente.

Números limpios de entrada, mensajes entregados de salida. Normalice y verifique cualquier número con el formateador de números de teléfono, luego confirme que los números restantes estén activos con la búsqueda HLR antes de enviar. BroadNet ha enrutado tráfico omnicanal a 200+ países a través de 1,000+ conexiones de operadores desde 2003, con un SLA de plataforma del 99,99 %.

Preguntas frecuentes

¿Qué es el formato E.164?

E.164 es el estándar internacional de numeración de números telefónicos de la UIT-T. Un número en formato E.164 consta de un signo '+' inicial, un código de país de uno a tres dígitos y el número nacional, escrito solo con dígitos, sin espacios ni separadores, con un máximo de 15 dígitos; por ejemplo, +971500000000. Es el formato estándar para almacenar cualquier número telefónico y permitir su enrutamiento internacional.

¿Cómo puedo validar un número de teléfono internacional?

Validar en dos etapas. Primero, sintáctica: normalizar la entrada a E.164 (eliminar el formato, convertir los prefijos 00/011 a '+', eliminar cualquier cero de troncal nacional, aplicar el código de país) y confirmar que se trata de un '+' seguido de entre 1 y 15 dígitos. Segundo, accesibilidad: realizar una búsqueda HLR para confirmar que el número está asignado y activo. La validez sintáctica por sí sola no demuestra que un número pueda recibir mensajes.

¿Qué es la normalización MSISDN?

La normalización MSISDN es el proceso de convertir un número móvil escrito en cualquier formato local o estándar a su MSISDN canónico E.164, el número internacional al que la red enruta las llamadas. Elimina los separadores, resuelve el prefijo de la línea troncal y el prefijo de acceso internacional, y aplica el código de país correcto, de modo que la misma línea se almacena siempre de forma idéntica para evitar duplicados, validarla y garantizar una entrega fiable.

Referencias

¿Te ha resultado útil?

Cómo redactamos y revisamos el contenido

Escrito por

Equipo editorial de BroadNet

El equipo editorial publica el blog de BroadNet. Los artículos se escriben con los equipos de BroadNet de asuntos regulatorios, producto, ingeniería, investigación del sector y soluciones para operadores, y se revisan según nuestras normas editoriales.

La revista, por correo electrónico

Un ensayo al mes. Nada más.

Suscríbete y te enviaremos el próximo artículo —sobre ingeniería, normativa o industria— el mismo día de su publicación. Sin campañas de goteo, sin promociones de productos, sin compartir con terceros. Cancela tu suscripción con un solo clic.

Enviamos un correo al mes. Puede darse de baja cuando quiera. Consulte nuestra política de privacidad.

Lo que obtendrás
  • Texto extenso, no contenido para generar enlaces.
    De seis a once minutos de escritura concentrada en un solo tema.
  • Escrito por operadores
    Ingenieros, responsables de asuntos regulatorios y redacción de productos internos.
  • Consciente de la región
    Perspectiva sobre reguladores, operadores y combinación de canales desde la perspectiva de la región MENA.
  • Una vez al mes
    Sin campañas de goteo. Un ensayo cuando haya alguno para compartir.
Deja de leer. Empieza a enviar.

La mayor parte de lo que escribimos lo aprendimos durante la producción.

Si este artículo te ha hecho asentir con la cabeza, deberíamos hablar. Menciona el caso de uso, los volúmenes, los mercados; te ofreceremos opciones de enrutamiento, precios y un cliente de referencia con el que podrás contactar.

$ curl -X POST https://api.broadnet.me/sms/sendSms