O que a validação de número de telefone verifica?

A validação de número de telefone verifica um número contra as regras de numeração do seu país, o que estabelece que o número pode existir, e não que alguém é alcançável nele.

Três perguntas diferentes se escondem dentro da palavra validação. Uma pergunta se o número tem o formato de um número real. Outra pergunta se alguma rede responde por ele. Outra pergunta se a pessoa com quem você está falando o possui. Cada uma precisa de uma verificação diferente. Cada uma deixa algo desconhecido.

O que uma verificação de formato pode dizer?

Que o número pertence a uma faixa que uma operadora pode atribuir.

A libphonenumber do Google trata uma faixa como válida quando as operadoras podem atribuir seus números livremente a assinantes. Seu FAQ:

A valid number range is one from which numbers can be freely assigned by carriers to users.

A validade não diz nada sobre se um número específico foi atribuído ou atende. A mesma página:

Do not rely on libphonenumber to determine whether numbers are currently assigned to a specific user and reachable.

Portanto, uma verificação de formato responde a uma pergunta sobre o plano de numeração. Não diz nada sobre se a faixa foi atribuída a alguém, nem se um telefone toca.

Discar também não é um teste substituto. O FAQ dá dois motivos pelos quais uma chamada pode se conectar a um número que não é válido. Alguns países ignoram dígitos extras no final, então 1800 MICROSOFT alcança um número mais curto. Durante uma renumeração, algumas operadoras mantêm números antigos funcionando depois que eles pararam de funcionar de modo geral.

O que uma consulta de rede acrescenta?

As partes da resposta que só uma rede possui.

Uma consulta pergunta a fontes de operadora e inteligência de números sobre um número específico, e não sobre sua faixa. Isso move várias perguntas de desconhecido para respondido:

VerificaçãoO que retornaO que ainda deixa em aberto
FormatoO número é analisado e está em uma faixa atribuívelSe a faixa está atribuída a alguém
Tipo de linhaSe o número é móvel, fixo, VoIP, gratuito ou máquina a máquinaA qual serviço a faixa está alocada em precisão maior
Rede atendenteA rede que responde pelo número agora e a que o emitiuSe um aparelho está ligado
Estado de portabilidadeQuando o número mudou de rede pela última vezNada sobre o assinante
PresençaSe o número está registrado e pode receber tráfego agoraQuem está segurando o aparelho
PosseNada. Uma consulta nunca pergunta à pessoaSe o seu usuário controla o número

A última linha é a que importa para um fluxo de cadastro. Nenhuma consulta estabelece posse, porque uma consulta nunca envolve a pessoa.

O que só um desafio de verificação pode provar?

Que quem está no seu fluxo pode receber tráfego naquele número.

O FAQ da libphonenumber trata um desafio como a única resposta viável, porque a prática de numeração varia demais entre países para que qualquer outra coisa resolva:

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 um código e aceitá-lo de volta é, portanto, um tipo de verificação diferente das duas anteriores. Custa uma mensagem e uma ida e volta. É também a única que vincula o número à pessoa diante de você. O que OTP significa cobre o código em si, e o guia do Verify cobre a execução do desafio.

Como leio uma verificação que ninguém conseguiu responder?

Como desconhecido, que não é o mesmo que não.

Um número cuja presença não pôde ser determinada não é um número inalcançável. Tratar os dois da mesma forma bloqueia clientes cujas redes simplesmente não responderam.

Bird os mantém separados na resposta. Cada propriedade que você solicita reporta seu próprio status:

  • ok: a propriedade foi respondida e seu valor está presente.
  • unavailable: nenhuma resposta chegou, então o bloco é null.
  • inconclusive: uma resposta chegou, mas não resolve a propriedade.

Apenas ok carrega um valor. Um bloco de presença com status: ok e reachable: false é um negativo real, porque a rede respondeu e reportou o número como inalcançável.

Portanto, ramifique primeiro em ok. Trate todo o resto como não respondido. O vocabulário de status é um enum aberto, então um valor não reconhecido é um status futuro, não um erro. Ramificar em ok continua correto conforme o vocabulário cresce.

Como devo escolher um provedor de consulta de telefone?

Escolha o provedor cujos campos, cobertura de mercado e regras de cobrança correspondam à decisão que você precisa tomar.

Ponto de decisãoLookup do BirdPerguntas a fazer sobre outro provedor
Sintaxe e validadeExige um número internacional e reporta se ele se encaixa no plano de numeração.Ele normaliza a entrada e rejeita números malformados sem adivinhar?
Tipo de linha e operadoraRetorna tipo de linha, rede atendente e rede emissora no resultado base.Quais campos de operadora e tipo de linha estão incluídos, e são atuais ou atribuídos?
PortabilidadeReporta o estado de portabilidade no resultado base e pode retornar dados adicionais de portabilidade.Ele mostra a operadora atual, a operadora original ou o histórico de movimentação?
AtualidadePresença e roaming consultam condições atuais da rede; outros campos descrevem numeração e atribuição.Quais campos são ao vivo, em cache ou com timestamp?
Resultados desconhecidosCada propriedade solicitada tem status ok, unavailable ou inconclusive.Você consegue distinguir uma propriedade sem resposta de um resultado negativo?
Cobertura de mercadoUma propriedade pode estar indisponível para um número ou operadora mesmo quando a consulta é bem-sucedida.Quais países e operadoras suportam cada propriedade?
CobrançaA consulta base é cobrada uma vez. Propriedades opcionais são cobradas apenas quando entregues, e propriedades com falha não são cobradas.Quanto custa uma propriedade sem resposta, e quais complementos alteram a cobrança?

As alternativas classificadas documentam diferentes trade-offs. O Twilio Lookup oferece formatação e validação básicas. Pacotes opcionais cobrem tipo de linha, status de linha, troca de SIM, identidade, nome do chamador, números reatribuídos e sinais de risco. Cobertura e condições de aprovação variam por pacote e mercado.

A documentação de validação de telefone da Abstract API descreve campos de validade, país, operadora e tipo de linha. A página de validação e consulta de operadora da Veriphone descreve resultados de validade, país, operadora, tipo de linha e operadora atual. Ambos publicam regras separadas de cobertura e créditos. A cobertura documentada, o comportamento de resultado desconhecido e a cobrança de cada provedor determinam se ele se encaixa em uma decisão de cadastro ou roteamento.

Como faço uma consulta no Bird?

Envie o número para o endpoint de consulta. Leia os blocos que você solicitou.

POST /v1/lookup/phone-number recebe um phone_number e um array opcional type. Toda consulta retorna as redes atendente e emissora, o estado de portabilidade, o país e o tipo de linha. O array type adiciona classification, porting, presence, roaming, sim_swap ou score, cada um cobrado separadamente e apenas quando entregue. A consulta não contata o número.

Reutilizar um Idempotency-Key retorna o resultado armazenado em vez de executar e cobrar uma segunda consulta. O guia de consulta cobre o fluxo e a referência do API cobre os campos.

Em resumo

  1. Válido significa que a faixa existe, não que o número está em uso.

    A biblioteca de números de telefone do Google define uma faixa válida como aquela da qual as operadoras podem atribuir números livremente aos usuários.

  2. Uma chamada completada não prova que um número é válido.

    Alguns países ignoram dígitos extras no final, e algumas operadoras mantêm números antigos funcionando durante uma renumeração muito depois de eles pararem de funcionar em outros lugares.

  3. Só um desafio prova posse.

    Enviar um código e recebê-lo de volta é a única verificação que estabelece quem possui o número, e é por isso que a verificação existe como uma etapa separada.

  4. Uma verificação sem resposta não é uma resposta negativa.

    Bird reporta cada propriedade solicitada com seu próprio status, então uma propriedade que ninguém conseguiu responder permanece distinguível de uma respondida como não.

Construa na mesma rede.

Uma chave de API de teste é sua imediatamente. A produção é desbloqueada quando adicionar um método de pagamento e verificar um remetente.

Sua próxima ideia. Pronta para conectar.