.164 é o padrão da UIT-T para escrever números de telefone para uso internacional: um sinal de mais inicial, um código de país de um a três dígitos e o número nacional, sem separadores e com no máximo 15 dígitos. Armazenar cada número nesse formato canónico — o MSISDN para o qual uma rede encaminha — é o que torna possível a validação e a entrega confiável.
Quer converter um número agora? Cole-o no formatador de números de telefone para ver o seu formato E.164 ou execute uma lista inteira no validador de listas de números. Este guia explica o que essas ferramentas fazem internamente.
O que é E.164: o plano de numeração internacional.
E.164 é a Recomendação E.164 da UIT-T, o plano internacional de numeração pública para telecomunicações. Ele atribui a cada telefone no planeta um endereço único globalmente reconhecido, permitindo que uma chamada ou mensagem seja encaminhada de qualquer rede para qualquer outra. Um número E.164 possui três partes: um código de país (CC) de um a três dígitos, um código de destino nacional (NDC, geralmente o código da operadora ou de área) e o número do assinante. Juntos, eles não devem exceder 15 dígitos.
A sequência canónica consiste num '+' inicial seguido apenas por dígitos — por exemplo, +971500000000. O '+' serve como marcador para qualquer prefixo de acesso internacional usado pela rede de origem (00 na maior parte do mundo, 011 na América do Norte); armazenar o '+' em vez de um prefixo específico do país é justamente o que mantém o número portátil entre redes e países. Não há espaços, hífens, parênteses ou zeros à esquerda dentro de um número E.164: esses são convenções de exibição, não fazem parte do número.
MSISDN: o número para o qual a rede realmente encaminha a rota.
MSISDN significa Mobile Station International Subscriber Directory Number — o número E.164 discável que identifica um assinante móvel. É o número que você armazena, disca e usa para enviar SMS. Ele é propositalmente separado do IMSI, a identidade armazenada no SIM de acordo com a norma ITU-T E.212 (um código de país móvel mais o código da rede móvel mais a identidade do assinante). O Registo de Localização Inicial da operadora mapeia um MSISDN para o seu IMSI atual e rede de serviço, que é como uma mensagem endereçada a um número E.164 chega ao aparelho correto mesmo depois que o assinante muda de operadora ou realiza a portabilidade.
A conclusão prática: um MSISDN é apenas um número E.164 para uma linha móvel. Quando as pessoas dizem "normalizar para MSISDN", elas querem dizer "armazenar o número de telemóvel no formato E.164 canónico". Acertar essa representação no momento da captura é o que diferencia um número que é encaminhado corretamente de um que falha silenciosamente em conexões posteriores.
Normalização: armazenar cada número numa forma canónica.
Os utilizadores digitam números de todas as maneiras imagináveis — com espaços, parênteses, zero à esquerda (indicativo regional nacional), prefixo internacional 00 ou 011, ou nenhuma das opções acima. A normalização consolida todas essas variações numa única string E.164 canónica, garantindo que a mesma linha física seja sempre armazenada de forma idêntica. Sem ela, não é possível remover números duplicados de uma lista de contactos, comparar um número com uma lista de supressão ou validar informações de forma confiável antes de enviar dinheiro.
Um normalizador robusto aplica essas regras nesta ordem:
- Remover todos os caracteres de formatação: espaços, traços, pontos e parênteses.
- Converter um prefixo de acesso internacional — um 00 (UIT) ou 011 (América do Norte) inicial — num '+'.
- Se o número já começar com '+', mantenha o código do país como está.
- Se estiver no formato nacional (sem código de país), remova o prefixo do tronco nacional — geralmente um único 0 à esquerda — e adicione o código de país da região padrão.
- Rejeite qualquer caractere que não seja um '+' seguido de 1 a 15 dígitos, com o primeiro dígito entre 1 e 9.
- Armazene apenas o sinal de '+' e os dígitos; gere novamente formulários de exibição formatados dinamicamente ao mostrar o número.
A etapa do zero inicial é a que costuma causar problemas para as equipas. Na maioria dos países, o 0 inicial que você disca nacionalmente é um prefixo de linha que é omitido no formato internacional — um telemóvel dos Emirados Árabes Unidos digitado como 050 000 0000 torna-se +971 50 000 0000, e não +971 050… Aplicar o código do país sem remover esse 0 produz um número inválido que parece plausível. O normalizador precisa conhecer a região padrão para resolver a entrada no formato nacional; os mesmos dígitos representam linhas diferentes em países diferentes.
function toE164(raw, defaultRegion) {// 1. Remove espaços, hífens, pontos e parênteseslet s = raw.trim().replace(/[\s().\-]/g, ''); // 2. Prefixo internacional 00 (ITU) ou 011 (NANP) -> + s = s.replace(/^(00|011)/, '+'); // 3. Já está no formato internacional? Mantenha o código do país if (s.startsWith('+')) return assertE164(s); // 4. Formato nacional: remova o prefixo 0 e adicione o código da região s = s.replace(/^0/, ''); return assertE164('+' + defaultRegion.dialCode + s);} // assertE164 aceita apenas /^\+[1-9]\d{1,14}$/ (mais, então <= 15 dígitos)Aqui está a mesma lógica aplicada a exemplos reais do GCC e internacionais. Observe como as diversas entradas se reduzem a um único MSISDN limpo:
| País (código) | Digite conforme indicado | E.164 canónico (MSISDN) |
|---|---|---|
| Emirados Árabes Unidos (+971) | 050 000 0000 / 00971 50 000 0000 | +971500000000 |
| Arábia Saudita (+966) | 0500000000 | +966500000000 |
| Egito (+20) | 0100 123 4567 | +201001234567 |
| Reino Unido (+44) | (07911) 123 456 | +447911123456 |
| Estados Unidos (+1) | 011 1 202 555 0143 | +12025550143 |
Para verificações pontuais, o formatador de número de telefone mostra os formatos de exibição nacional e internacional de um número junto com a sua saída E.164; para limpar um upload inteiro antes de uma campanha, o validador de lista de números normaliza, remove duplicatas e sinaliza linhas inválidas no navegador para que os dados brutos nunca saiam da sua máquina.
A validade sintática não é alcançável.
A normalização e a verificação do comprimento informam que um número está bem formado — com o formato correto, um código de país válido e no máximo 15 dígitos. No entanto, elas não podem garantir que o número esteja atribuído a um assinante ativo. Um número E.164 sintaticamente perfeito pode estar não alocado, desativado ou portado para uma operadora diferente daquela que o seu prefixo sugere. Enviar mensagens para esse número ainda terá um custo e reduzirá a sua taxa de entrega.
Confirmar a disponibilidade real requer consultar o banco de dados de assinantes da operadora. Uma consulta HLR devolve se um número está atualmente atribuído e ativo, a sua verdadeira rede de origem (o MCC/MNC por trás de qualquer número portado) e o seu status de roaming — a verdade fundamental que a sintaxe sozinha não pode fornecer. O fluxo de trabalho sensato é: primeiro, normalizar para E.164, descartar as linhas sintaticamente inválidas de forma eficiente e, em seguida, executar consultas HLR nas linhas restantes antes de um envio grande ou de alto valor.
Porque erros de formatação custam dinheiro e mensagens entregues?
O SMS A2P é cobrado por segmento no momento do envio, não na entrega. Um número malformado representa uma mensagem pela qual você paga para tentar enviar e que nunca chega — e, em larga escala, essas falhas se acumulam. A formatação incorreta também mascara duplicatas (a mesma linha armazenada de três maneiras diferentes é cobrada três vezes), corrompe as suas métricas de taxa de entrega e pode acionar os filtros da operadora quando um gateway recebe números que não consegue analisar.
A solução mais barata reside inteiramente no seu lado da API: normalize no momento da captura, valide o formato E.164 antes de enfileirar e reserve as consultas HLR para os números que passarem. As equipas que integrarem isso à sua própria infraestrutura podem configurá-la uma única vez com uma API de mensagens — consulte a documentação para desenvolvedores — para que cada número seja canónico antes de ser cobrado. O tratamento de números nacionais versus internacionais também não é um caso isolado no Médio Oriente e Norte de África (MENA): os remetentes do GCC recebem rotineiramente números dos Emirados Árabes Unidos, Arábia Saudita e Egito em formato local, e cada um precisa da sua própria regra de prefixo de tronco para normalizar corretamente.
Números limpos na entrada, mensagens entregues na saída. Normalize e verifique qualquer número com o formatador de número de telefone e, em seguida, confirme se os números restantes estão ativos com a pesquisa HLR antes de enviar. A BroadNet encaminha tráfego omnicanal para 200+ países por meio de 1,000+ conexões de operadoras desde 2003, com um SLA de plataforma de 99,99%.
Perguntas frequentes
O que é o formato E.164?
E.164 é o padrão internacional de numeração da UIT-T para números de telefone. Um número no formato E.164 consiste num sinal de "+" inicial, um código de país de um a três dígitos e o número nacional, escrito apenas com dígitos, sem espaços ou separadores, e com um máximo de 15 dígitos — por exemplo, +971500000000. É o formato padrão para armazenar qualquer número de telefone, permitindo o seu encaminhamento internacional.
Como faço para validar um número de telefone internacional?
Valide em duas etapas. Primeiro, a validação sintática: normalize a entrada para o formato E.164 (remova a formatação, converta os prefixos 00/011 para '+', remova qualquer zero de linha nacional e aplique o código do país) e confirme se é um '+' seguido de 1 a 15 dígitos. Segundo, verifique a acessibilidade: execute uma consulta HLR para confirmar se o número está realmente atribuído e ativo. A validade sintática por si só não comprova que um número pode receber mensagens.
O que é a normalização MSISDN?
A normalização MSISDN é o processo de conversão de um número de telemóvel escrito em qualquer formato local ou específico para o seu MSISDN canónico E.164 — o número internacional discável para o qual a rede encaminha as chamadas. Ela remove os separadores, resolve o prefixo do tronco e o prefixo de acesso internacional e aplica o código de país correto, de modo que a mesma linha seja sempre armazenada de forma idêntica para fins de desduplicação, validação e entrega confiável.
Referências
- Recomendação E.164 da UIT-T — o plano internacional de numeração pública de telecomunicações: itu.int
- Recomendação E.212 da UIT-T — plano de identificação internacional para redes públicas e assinaturas (IMSI, MCC/MNC): itu.int
- BroadNet — formatador de número de telefone e validador de lista de números para normalização E.164.
- BroadNet — HLR lookup para confirmar a verdadeira acessibilidade além da validade sintática.
