Tres preguntas diferentes se esconden dentro de la palabra validación. Una pregunta si el número tiene la forma de un número real. Otra pregunta si alguna red responde por él. Otra pregunta si la persona con la que hablas lo posee. Cada una necesita una comprobación distinta. Cada una deja algo sin resolver.
¿Qué puede decirte una comprobación de formato?
Que el número pertenece a un rango que un operador tiene permitido asignar.
libphonenumber de Google trata un rango como válido cuando los operadores pueden asignar libremente sus números a suscriptores. Su FAQ:
A valid number range is one from which numbers can be freely assigned by carriers to users.
La validez no dice nada sobre si un número concreto ha sido asignado o responde. La misma página:
Do not rely on libphonenumber to determine whether numbers are currently assigned to a specific user and reachable.
Una comprobación de formato responde una pregunta sobre el plan de numeración. No dice nada sobre si el rango ha sido asignado a alguien, ni sobre si un teléfono suena.
Llamar tampoco es una prueba sustituta. El FAQ da dos razones por las que una llamada puede conectarse a un número que no es válido. Algunos países ignoran los dígitos sobrantes al final, así que 1800 MICROSOFT llega a un número más corto. Durante una renumeración, algunos operadores mantienen números antiguos en funcionamiento después de que hayan dejado de funcionar en general.
¿Qué añade una consulta de red?
Las partes de la respuesta que solo una red posee.
Una consulta pregunta a fuentes de operadores e inteligencia de números sobre un número específico en lugar de sobre su rango. Eso mueve varias preguntas de desconocido a respondido:
| Comprobación | Qué devuelve | Qué deja sin resolver |
|---|---|---|
| Formato | El número se analiza y pertenece a un rango asignable | Si el rango está asignado a alguien |
| Tipo de línea | Si el número es móvil, fijo, VoIP, gratuito o máquina a máquina | A qué servicio está asignado el rango con mayor precisión |
| Red de servicio | La red que responde por el número ahora y la que lo emitió | Si un terminal está encendido |
| Estado de portabilidad | Cuándo el número cambió de red por última vez | Nada sobre el suscriptor |
| Presencia | Si el número está registrado y puede recibir tráfico en este momento | Quién tiene el terminal |
| Posesión | Nada. Una consulta nunca pregunta a la persona | Si tu usuario controla el número |
La última fila es la que importa en un flujo de registro. Ninguna consulta establece la posesión, porque una consulta nunca involucra a la persona.
¿Qué solo puede probar un desafío de verificación?
Que quien está en tu flujo puede recibir tráfico en ese número.
El FAQ de libphonenumber trata un desafío como la única respuesta viable, porque la práctica de numeración varía demasiado entre países para que cualquier otra cosa lo resuelva:
This is not technically feasible without such a verification step given the complicated international world we live in, with varying standardization practices in different regions.
Enviar un código y aceptarlo de vuelta es, por tanto, un tipo de comprobación diferente de los dos anteriores. Cuesta un mensaje y un viaje de ida y vuelta. También es el único que vincula el número con la persona frente a ti. Qué significa OTP cubre el código en sí, y la guía de Verify cubre la ejecución del desafío.
¿Cómo leo una comprobación que nadie pudo responder?
Como desconocido, que no es lo mismo que no.
Un número cuya presencia no se pudo determinar no es un número inalcanzable. Tratar ambos como iguales bloquea a clientes cuyas redes simplemente no respondieron.
Bird los mantiene separados en la respuesta. Cada propiedad que solicitas informa su propio status:
ok: la propiedad fue respondida y su valor está presente.unavailable: no llegó respuesta, así que el bloque esnull.inconclusive: llegó una respuesta que no resuelve la propiedad.
Solo ok contiene un valor. Un bloque de presencia con status: ok y reachable: false es un negativo real, porque la red respondió e informó que el número es inalcanzable.
Evalúa primero ok. Trata todo lo demás como no respondido. El vocabulario de estados es un enum abierto, así que un valor no reconocido es un estado futuro, no un error. Evaluar ok sigue siendo correcto a medida que el vocabulario crece.
¿Cómo elijo un proveedor de consulta telefónica?
Elige el proveedor cuyos campos, cobertura de mercado y reglas de facturación coincidan con la decisión que necesitas tomar.
| Punto de decisión | Bird Lookup | Preguntas para hacer sobre otro proveedor |
|---|---|---|
| Sintaxis y validez | Requiere un número internacional e informa si se ajusta al plan de numeración. | ¿Normaliza la entrada y rechaza números malformados sin adivinar? |
| Tipo de línea y operador | Devuelve tipo de línea, red de servicio y red emisora en el resultado base. | ¿Qué campos de operador y tipo de línea incluye, y son actuales o de asignación? |
| Portabilidad | Informa el estado de portabilidad en el resultado base y puede devolver datos adicionales de portabilidad. | ¿Muestra el operador actual, el operador original o el historial de movimientos? |
| Frescura | Presencia y roaming consultan condiciones de red actuales; los demás campos describen numeración y asignación. | ¿Qué campos son en tiempo real, en caché o con marca de tiempo? |
| Resultados desconocidos | Cada propiedad solicitada tiene estado ok, unavailable o inconclusive. | ¿Puedes distinguir una propiedad sin respuesta de un resultado negativo? |
| Cobertura de mercado | Una propiedad puede no estar disponible para un número u operador incluso cuando la consulta tiene éxito. | ¿Qué países y operadores soportan cada propiedad? |
| Facturación | La consulta base se factura una vez. Las propiedades opcionales se facturan solo al entregarse, y las fallidas no se facturan. | ¿Cuánto cuesta una propiedad sin respuesta y qué complementos cambian la factura? |
Las alternativas clasificadas documentan distintas compensaciones. Twilio Lookup ofrece formato y validación básicos. Los paquetes opcionales cubren tipo de línea, estado de línea, intercambio de SIM, identidad, nombre del llamante, números reasignados y señales de riesgo. La cobertura y las condiciones de aprobación varían por paquete y mercado.
La documentación de validación telefónica de Abstract API describe campos de validez, país, operador y tipo de línea. La página de validación y consulta de operador de Veriphone describe resultados de validez, país, operador, tipo de línea y operador actual. Ambos publican reglas separadas de cobertura y créditos. La cobertura documentada, el comportamiento ante resultados desconocidos y la facturación de cada proveedor determinan si se ajusta a una decisión de registro o enrutamiento.
¿Cómo consulto uno en Bird?
Envía el número al endpoint de consulta. Lee los bloques que solicitaste.
POST /v1/lookup/phone-number recibe un phone_number y un array opcional type. Cada consulta devuelve las redes de servicio y emisora, el estado de portabilidad, el país y el tipo de línea. El array type añade classification, porting, presence, roaming, sim_swap o score, cada uno facturado por separado y solo cuando se entrega. La consulta no contacta al número.
Reutilizar un Idempotency-Key devuelve el resultado almacenado en lugar de realizar y facturar una segunda consulta. La guía de consulta cubre el flujo y la referencia de API cubre los campos.
En resumen
Válido significa que el rango existe, no que el número esté en uso.
La biblioteca de números de teléfono de Google define un rango válido como aquel del que los operadores pueden asignar números libremente a los usuarios.
Una llamada conectada no prueba que un número sea válido.
Algunos países ignoran los dígitos sobrantes al final, y algunos operadores mantienen números antiguos en funcionamiento durante una renumeración mucho después de que dejen de funcionar en otros casos.
Solo un desafío prueba la posesión.
Enviar un código y recibirlo de vuelta es la única comprobación que establece quién posee el número, y por eso la verificación existe como un paso separado.
Una comprobación sin respuesta no es una respuesta negativa.
Bird informa cada propiedad solicitada con su propio estado, de modo que una propiedad que nadie pudo responder se distingue de una respondida como no.