Paso 1: el código del país
Cada número empieza por el código del país, también llamado prefijo internacional. Tiene entre 1 y 3 cifras: 34 para España, 351 para Portugal, 33 para Francia, 39 para Italia. La lista completa está en nuestra tabla de indicativos telefónicos por país.
En la norma E.164, este código se escribe siempre precedido del signo «+».
El «00» que usted marca desde un teléfono español lleva al mismo sitio, pero pertenece a la red de salida. Cada país tiene el suyo: 00 en España y en el resto de Europa, 011 en Estados Unidos y Canadá, 0011 en Australia. Un número guardado como 0034612345678 obliga entonces a cada destinatario a traducir su convención local. El «+» se lee en todas partes. Consérvelo en sus columnas.
Paso 2: la norma E.164
E.164 es la recomendación de la Unión Internacional de Telecomunicaciones que define cómo escribir un número para que sea enrutable desde cualquier red. Vale tanto para las llamadas como para los SMS.
El número se escribe de un solo bloque, con el «+» y después las cifras. Y no pasa de 15 cifras, prefijo incluido, sin contar el «+».
Cómo es un número en formato E.164
Tomemos el 612 34 56 78, un móvil español.
- Código del país: 34
- Número nacional: 612 34 56 78
- España no usa cero inicial, el número pasa entero
- Resultado: +34612345678
El número nacional reúne la cifra que identifica el tipo de línea (6 y 7 para los móviles, 8 y 9 para los fijos) y el número del abonado.
Los errores que hacen fracasar una conversión
- Los espacios, puntos, guiones y paréntesis se quedan en la base. +34 612 34 56 78 debe convertirse en +34612345678.
- Se añade un cero que España no usa. Un +340612345678 será rechazado por el operador.
- El 00 se mantiene delante del prefijo. Se escribe +34, nunca 0034 ni 00+34.
- Italia conserva el 0 inicial de sus números fijos. Un fijo romano se convierte en +390612345678. Sin ese 0 el número no existiría. Los móviles italianos escapan a la regla, ya que empiezan por 3.
- Excel se traga el «+» o pasa el número a notación científica. Formatee la columna como texto antes de importar, si no 34612345678 aparecerá como 3,46123E+10.
Validar un número con una expresión regular
Una vez convertido el número, una expresión regular comprueba su forma. En PHP: preg_match('/^\+[1-9]\d{1,14}$/', $numero). Acepta un «+», una primera cifra entre 1 y 9, y luego de 1 a 14 cifras más.
Para los móviles españoles, muchas guías proponen ^\+34[67]\d{8}$. Esa versión abarca demasiado. En los metadatos de libphonenumber solo el 6 completo y las series 71 a 74 y 78 cuentan como móvil, lo que deja fuera el 70, el 75, el 76, el 77 y el 79. El rango realmente móvil se escribe ^\+34(?:6\d|7[1-48])\d{7}$.
En un catálogo multipaís, cada país tiene sus longitudes y sus prefijos. Esa tabla se vuelve rápidamente inmanejable a mano. Google publica libphonenumber en Java, C++ y JavaScript, mientras que los ports de PHP y Python los mantiene la comunidad. En una campaña de SMS, un 75 aceptado por error sale igualmente en el lote y se factura.
Una expresión regular valida una forma. Sobre lo que hay al final de la línea no dice nada.
Un número bien formateado puede seguir siendo inalcanzable
Un número conforme a E.164 es enrutable. Aun así puede llevar 3 años dado de baja o haber sido portado a otro operador.
El HLR Lookup consulta el registro del operador y devuelve el estado real de la línea, activa o apagada, junto al operador que la gestiona hoy. En una base recopilada en línea, este control retira los números muertos antes de que la campaña de SMS los facture.
Para las empresas con clientes fuera de España, convertir toda la base al formato internacional condiciona la recepción de los SMS de marketing y de los SMS transaccionales.
Convertir sus números al formato E.164
Pegue hasta 100 números, uno por línea, mezclados o no. Cada número que lleva su prefijo se reconoce solo, entre 215 países. Una línea que la herramienta no sabe convertir sale tal cual, en su sitio, para que usted pueda encontrarla.