O que é o formato de número de telefone E.164?

E.164 é o plano de numeração internacional que escreve qualquer número de telefone como um código de chamada do país seguido do número nacional.

Um número de telefone escrito para alguém que está no mesmo país é ambíguo em qualquer outro lugar. Os mesmos dígitos significam um número diferente dependendo de haver ou não um zero inicial ou um código de chamada do país. O E.164 elimina a ambiguidade fixando uma única forma escrita.

O que o padrão realmente define?

A estrutura dos números internacionais, em oito categorias separadas.

A Recomendação ITU-T E.164, da União Internacional de Telecomunicações, a agência da ONU que administra o plano de numeração, fixa tanto a estrutura dos dígitos quanto a análise de roteamento para cada categoria de número internacional:

Recommendation ITU-T E.164 provides the number structure and functionality for the eight categories of numbers used for international public telecommunication:

Essas categorias abrangem mais do que números de países. Áreas geográficas são uma das oito, junto com serviços globais, outros serviços globais, serviços globais de satélite, redes, grupos de países, recursos para teste e serviços e aplicações para a Internet das Coisas e tráfego máquina a máquina. O padrão também fornece o nome para os próprios números:

Annex A provides additional information on the structure and function of international public telecommunication numbers (hereafter referred to as "international E.164 numbers").

Como é um número escrito corretamente?

Um código de chamada do país, depois o número nacional, e nada mais.

+31612345678 é um número de celular holandês. O 31 é o código de chamada do país e 612345678 é o número nacional. O que está ausente importa tanto quanto o que está presente: sem espaços, sem hífens, sem parênteses, sem o zero inicial da convenção de discagem nacional e sem prefixo de acesso internacional como 011 ou 00.

O + inicial é notação, não um dígito. Ele informa a quem lê a string que um número internacional vem a seguir. Ninguém o disca. Portanto, armazene os dígitos. Trate a pontuação como apresentação.

Qual o comprimento máximo de um número?

Longo o suficiente para que você não deva verificar.

A fonte legível apresenta isso de forma mais restrita do que a regra costuma ser citada. O FAQ da libphonenumber do Google aplica o limite de quinze dígitos apenas à parte nacional e diz que nem todos os países o respeitam:

We support parsing and storing numbers from a minimum length of two digits to a maximum length of 17 digits currently (excluding country calling code). The ITU standard says the national significant number should not be longer than fifteen digits, but empirically this has been proven not to be followed by all countries.

Portanto, um validador que rejeita qualquer coisa acima de quinze dígitos vai rejeitar números reais.

A regra prática é analisar em vez de medir. Uma biblioteca ou uma consulta responde se um número está em uma faixa atribuível, algo que uma comparação de comprimento não consegue. O que a validação de número de telefone verifica cobre o que cada tipo de verificação estabelece.

Quais formatos Bird aceita?

O código do país e o número nacional, com a pontuação opcional.

Você envia o código de chamada do país seguido do número nacional. A forma como você marca a parte internacional é intencionalmente flexível. O + inicial é opcional e 00 funciona no lugar dele, então +31612345678, 31612345678 e 0031612345678 representam todos o mesmo número.

O que ele não faz é adivinhar. Um número escrito para discagem dentro de um país, sem código de país, é rejeitado em vez de ser assumido como pertencente a qualquer país específico. Um formulário que coleta o número nacional sem também coletar o país produz exatamente essa rejeição. Capture ambos juntos.

Quando você compra um número, o valor a enviar é exatamente o que o inventário retornou, não uma cópia reformatada. O guia de consulta cobre os formatos aceitos, e o que é um número de telefone virtual cobre o que um número pode fazer quando você o possui.

Em resumo

  1. É uma recomendação da ITU, não uma convenção de formatação.

    A ITU-T E.164 define a estrutura numérica para oito categorias de números internacionais, incluindo uma para serviços máquina a máquina.

  2. O sinal de mais é notação, não um dígito.

    Ele indica que o que vem a seguir é um número internacional, e não algo para discar, razão pela qual os dígitos são a parte que precisa estar correta.

  3. Não valide pelo comprimento.

    A biblioteca de números do Google reporta uma orientação de quinze dígitos do padrão da ITU e diz que ela não é seguida por todos os países.

  4. Um número sem código de país não é um número E.164.

    Bird rejeita um número apenas nacional em vez de adivinhar a qual país ele pertence. Armazene o código do país junto com ele.

Coloque em prática.

Continue com a documentação, guias e exemplos sobre este tópico.

Obtenha um resumo de implementaçã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.