
Compartir:
Alvaro es un defensor de los desarrolladores en Vonage, centrándose en las API de red. Es un apasionado de la experiencia del desarrollador, las API y el código abierto. Fuera del trabajo, a menudo se le puede encontrar explorando tiendas de cómics, asistiendo a festivales de ciencia ficción y terror o haciendo cosas con esos famosos pequeños bloques de construcción de plástico.
¿Qué es el formato E.164?
Tiempo de lectura: 2 minutos
E.164 es una norma internacional que define un esquema de números de teléfono que garantiza que cada usuario de todo el mundo tenga un número de teléfono único y le permite conectarse entre sí para realizar llamadas y enviar mensajes. Como resultado, la norma simplifica las llamadas internacionales y reduce el riesgo de marcar un número equivocado.
Según la norma norma E.127existen diferentes formas de especificar un número de teléfono: zonas geográficas, servicios globales, redes, etc. En este artículo se utilizará la representación estándar para zonas geográficasya que es el formato utilizado en las API de Vonage.
El formato E.164
E.164 tiene un máximo de 15 dígitos y sigue el formato:
[prefijo del país] [prefijo nacional de destino] [número de abonado].
donde:
Código de país (CC) se corresponde con los prefijos internacionales (de 1 a 3 dígitos). Por convención, los números de teléfono internacionales se representan anteponiendo al prefijo del país el signo más (+).
Código nacional de destino (CND) identifica una zona, región o red específica dentro del país.
Número de abonado (SN) es el número de teléfono individual asignado al usuario. La longitud del NDC y el SN, debe ser 15 menos la longitud del CC.
Ejemplos
Estados Unidos
El número de teléfono 212 123 1234 puede representarse utilizando el formato E.164 como +12121231234, donde:
+1 es el código de país de Estados Unidos.
212 es el NDC.
1231234 es el número de abonado.
Reino Unido
El número de teléfono 020 1234 5678 puede representarse utilizando el formato E.164 como +442012345678, donde:
+44 es el prefijo del Reino Unido.
20 es el prefijo de Londres.
1231234 es el número de abonado.
España
El número de teléfono 91 234 5678 puede representarse en E.164 como +34912345678, donde:
+34 es el prefijo de España.
91 es el prefijo de Madrid.
2345678 es el número de abonado.
Alemania
El número de teléfono 030 12345678 puede representarse en E.164 como +493012345678, donde:
+49 es el prefijo de Alemania.
30 es el prefijo telefónico de Berlín.
12345678 es el número de abonado.
¿Por qué es importante el E.164?
Muchas de nuestras API utilizan números de teléfono que siguen la norma E.164. En concreto, las API de red esperan que los consumidores de API sigan este formato al llamar a algunos puntos finales.
Por ejemplo, la API de Identity Insights acepta el número de teléfono del abonado en formato E.164. Devuelve información como si la SIM se ha vinculado recientemente a ese número, así como el operador original y el actual.
¿Cómo validar un número de teléfono E.164?
Como desarrolladores, es esencial asegurarse de que la entrada del usuario es correcta. Esto incluye sanear, validar y confirmar que el número de teléfono sigue el formato E.164 antes de realizar cualquier llamada a la API. Esto nos ahorrará tiempo y ancho de banda.
Una solución es utilizar una de las bibliotecas existentes para ayudar a validar los números de teléfono.
Es posible que desee comprobar el teléfono si estás programando en JavaScript. El siguiente ejemplo muestra la validación de un número de teléfono:
const {phone} = require('phone');
phone('+1(817) 569-8900', {country: '"USA'});
/*
{ isValid: true,
phoneNumber: '+18175698900',
countryIso2: 'US',
countryIso3: 'USA',
countryCode: '+1'
}
/*Si eres programador de Python, phonenumbers es tu biblioteca. Aquí tienes un ejemplo:
import phonenumbers
my_number = phonenumbers.parse("+34911234567", "ES")
print(phonenumbers.is_valid_number(my_number)) # TrueComo alternativa, puedes crear tu propio validador utilizando expresiones regulares. Dependiendo del lenguaje regex, algo parecido a:
^\+?[1-9]\d{1,14}$El siguiente Python utiliza esa expresión regular para validar algunos datos de entrada:
import re
def validate_e164(phone_number):
pattern = r'^\+?[1-9]\d{1,14}$'
return bool(re.match(pattern, phone_number))
# Test the function
test_numbers = [
"+14155552671", # Valid E.164 number (US)
"+442071838750", # Valid E.164 number (UK)
"+493012345678", # Valid E.164 number (Germany)
"+34916543210", # Valid E.164 number (Spain)
"1234567890", # Invalid (missing +)
"+1234567890123456" # Invalid (too long)
]
for number in test_numbers:
print(f"{number}: {validate_e164(number)}") Póngase en contacto con nosotros
¿Cómo valida las entradas de sus usuarios? ¿Qué biblioteca recomienda utilizar? Nos encantaría conocer tu opinión. Únete a nosotros en Slack de la comunidad de Vonage o envíanos un mensaje en Xy nos comunicaremos contigo.
Gracias por leerme.
Compartir:
Alvaro es un defensor de los desarrolladores en Vonage, centrándose en las API de red. Es un apasionado de la experiencia del desarrollador, las API y el código abierto. Fuera del trabajo, a menudo se le puede encontrar explorando tiendas de cómics, asistiendo a festivales de ciencia ficción y terror o haciendo cosas con esos famosos pequeños bloques de construcción de plástico.