.164 è lo standard ITU-T per la scrittura dei numeri di telefono per uso internazionale: un segno più iniziale, un prefisso internazionale da una a tre cifre e il numero nazionale, senza separatori e con un massimo di 15 cifre. La memorizzazione di ciascun numero in questa forma canonica – l'MSISDN a cui una rete instrada le chiamate – è ciò che rende possibili la validazione e la consegna affidabile.
Vuoi convertire un numero ora? Incollalo nel formattatore di numeri di telefono per visualizzarne il formato E.164, oppure elabora un intero elenco con il validatore di elenchi di numeri. Questa guida spiega il funzionamento interno di questi strumenti.
Cos'è E.164: il piano di numerazione internazionale
E.164 è la raccomandazione ITU-T E.164, il piano internazionale di numerazione pubblica delle telecomunicazioni. Assegna a ogni telefono del pianeta un indirizzo unico a livello globale, in modo che una chiamata o un messaggio possano essere instradati da qualsiasi rete a qualsiasi altra. Un numero E.164 è composto da tre parti: un prefisso internazionale (CC) da una a tre cifre, un prefisso nazionale di destinazione (NDC, spesso il prefisso dell'operatore o di zona) e il numero dell'abbonato. Insieme, queste parti non devono superare le 15 cifre.
La stringa canonica è composta da un '+' iniziale seguito solo da cifre, ad esempio +971500000000. Il '+' funge da segnaposto per il prefisso di accesso internazionale utilizzato dalla rete di origine (00 nella maggior parte del mondo, 011 in Nord America); la memorizzazione del '+' al posto di un prefisso specifico per paese è proprio ciò che rende il numero portabile tra reti e paesi. All'interno di un numero E.164 non sono presenti spazi, trattini, parentesi o zeri iniziali: questi sono convenzioni di visualizzazione, non fanno parte del numero.
MSISDN: il numero a cui la rete instrada effettivamente
MSISDN sta per Mobile Station International Subscriber Directory Number, ovvero il numero E.164 componibile che identifica un abbonato mobile. È il numero che si memorizza, si compone e a cui si inviano SMS. È volutamente separato dall'IMSI, l'identità memorizzata sulla SIM secondo lo standard ITU-T E.212 (un prefisso internazionale mobile, un codice di rete mobile e l'identità dell'abbonato). Il registro di localizzazione dell'operatore associa un MSISDN al suo IMSI e alla rete di servizio correnti, ed è così che un messaggio indirizzato a un numero E.164 raggiunge il dispositivo corretto anche dopo che l'abbonato si è spostato in roaming o ha cambiato operatore.
In pratica, un MSISDN non è altro che un numero E.164 per una linea mobile. Quando si parla di "normalizzare in MSISDN", si intende "memorizzare il numero di cellulare nel formato E.164 canonico". Riuscire a rappresentare correttamente il numero al momento dell'acquisizione fa la differenza tra un numero che viene instradato senza problemi e uno che fallisce silenziosamente a valle.
Normalizzazione: memorizzazione di ogni numero in una forma canonica
Gli utenti digitano i numeri in ogni stile immaginabile: con spazi, parentesi, lo zero nazionale, il prefisso internazionale 00 o 011, oppure senza nessuno di questi. La normalizzazione li comprime tutti in un'unica stringa E.164 canonica, in modo che la stessa riga fisica venga sempre memorizzata in modo identico. Senza di essa non è possibile eliminare i duplicati da un elenco di contatti, confrontare un numero con un elenco di esclusione o convalidare in modo affidabile i dati prima di inviare denaro.
Un normalizzatore robusto applica queste regole in quest'ordine:
- Rimuovi tutti i caratteri di formattazione: spazi, trattini, punti e parentesi.
- Convertire un prefisso di accesso internazionale — uno 00 (ITU) o uno 011 (Nord America) — in un '+'.
- Se il numero inizia già con '+', mantieni il prefisso internazionale così com'è.
- Se è in formato nazionale (senza codice paese), rimuovere il prefisso nazionale principale, solitamente un singolo zero iniziale, e anteporre il codice paese della regione predefinita.
- Rifiuta tutto ciò che non è un '+' seguito da 1 a 15 cifre, con la prima cifra compresa tra 1 e 9.
- Memorizza solo il simbolo '+' e le cifre; rigenera al volo le forme di visualizzazione più accattivanti quando mostri il numero.
Il passaggio relativo allo zero iniziale è quello che mette in difficoltà i team. Nella maggior parte dei paesi, lo zero iniziale che si compone per le chiamate nazionali è un prefisso di rete che viene omesso nelle chiamate internazionali: un numero di cellulare degli Emirati Arabi Uniti scritto 050 000 0000 diventa +971 50 000 0000, non +971 050…. Applicare il prefisso internazionale senza rimuovere quello zero produce un numero non valido che sembra plausibile. Il normalizzatore deve conoscere la regione predefinita per risolvere l'input in formato nazionale; le stesse cifre corrispondono a linee diverse in paesi diversi.
funzione toE164(raw, defaultRegion) { // 1. Rimuove spazi, trattini, punti e parentesi let s = raw.trim().replace(/[\s().\-]/g, ''); // 2. Prefisso internazionale 00 (ITU) o 011 (NANP) -> + s = s.replace(/^(00|011)/, '+'); // 3. Già in formato internazionale? Mantiene il prefisso internazionale if (s.startsWith('+')) return assertE164(s); // 4. Formato nazionale: elimina lo 0 iniziale, antepone il prefisso regionale s = s.replace(/^0/, ''); return assertE164('+' + defaultRegion.dialCode + s); } // assertE164 accetta solo /^\+[1-9]\d{1,14}$/ (più, quindi <= 15 cifre)Ecco la stessa logica applicata a esempi reali del GCC e internazionali. Si noti come input diversi si riducano a un unico MSISDN pulito:
| Paese (codice) | Inserire come digitato | E.164 canonico (MSISDN) |
|---|---|---|
| Emirati Arabi Uniti (+971) | 050 000 0000 / 00971 50 000 0000 | +971500000000 |
| Arabia Saudita (+966) | 0500000000 | +966500000000 |
| Egitto (+20) | 0100 123 4567 | +201001234567 |
| Regno Unito (+44) | (07911) 123 456 | +447911123456 |
| Stati Uniti (+1) | 011 1 202 555 0143 | +12025550143 |
Per verifiche una tantum, il formattatore di numeri di telefono mostra le forme di visualizzazione nazionali e internazionali di un numero insieme al suo output E.164; per pulire un intero caricamento prima di una campagna, il validatore di elenchi di numeri normalizza, elimina i duplicati e segnala le righe non valide nel browser in modo che i dati grezzi non lascino mai il tuo computer.
La validità sintattica non è raggiungibilità
I controlli di normalizzazione e lunghezza indicano che un numero è ben formato: ha la forma corretta, un prefisso internazionale valido e non supera le 15 cifre. Tuttavia, non possono indicare se il numero è assegnato a un abbonato attivo. Un numero E.164 sintatticamente perfetto può essere non assegnato, disattivato o trasferito a un operatore diverso da quello indicato dal prefisso. L'invio di chiamate verso tale numero ha comunque un costo e influisce negativamente sul tasso di consegna.
Confermare la reale raggiungibilità richiede l'interrogazione del database degli abbonati dell'operatore. Una ricerca HLR (Hybrid Local Requirement) restituisce informazioni sullo stato di un numero: se è attualmente assegnato e attivo, la sua rete di origine effettiva (l'MCC/MNC dietro qualsiasi numero trasferito) e il suo stato di roaming, ovvero informazioni di base che la sola sintassi non può fornire. La procedura più sensata è la seguente: normalizzare prima in E.164, scartare rapidamente le righe sintatticamente non valide, quindi eseguire ricerche HLR sui numeri rimanenti prima di inviare un numero di grandi dimensioni o di valore elevato.
Perché gli errori di formattazione costano messaggi recapitati e denaro
Gli SMS A2P vengono fatturati per segmento al momento dell'invio, non alla consegna. Un numero non valido è un messaggio per il quale si paga per un tentativo di invio che non arriva mai a destinazione, e su larga scala questi errori si moltiplicano. Una formattazione errata maschera anche i duplicati (la stessa riga memorizzata in tre modi diversi viene fatturata tre volte), compromette le metriche del tasso di consegna e può attivare i filtri dell'operatore quando un gateway riceve numeri che non è in grado di analizzare.
La soluzione più economica risiede interamente nella vostra parte dell'API: normalizzate al momento dell'acquisizione, convalidate la forma E.164 prima di inserirla in coda e riservate le ricerche HLR ai numeri che superano la verifica. I team che integrano questa funzionalità nel proprio stack possono collegarla una sola volta a un'API di messaggistica (vedere la documentazione per gli sviluppatori), in modo che ogni numero sia canonico prima ancora di essere addebitato. La gestione delle differenze tra numeri nazionali e internazionali non è un caso limite nella regione MENA: i mittenti del GCC ricevono regolarmente numeri di Emirati Arabi Uniti, Arabia Saudita ed Egitto in formato locale, e ognuno di essi necessita di una propria regola di prefisso trunk per una corretta normalizzazione.
Numeri puliti in ingresso, messaggi recapitati in uscita. Normalizza e verifica qualsiasi numero con il formattatore di numeri di telefono, quindi conferma che i numeri rimanenti siano attivi con la ricerca HLR prima di inviare. BroadNet ha instradato traffico omnicanale verso 200+ paesi attraverso 1,000+ connessioni con operatori dal 2003, con un SLA di piattaforma del 99,99%.
Domande frequenti
Che cos'è il formato E.164?
E.164 è lo standard internazionale di numerazione ITU-T per i numeri di telefono. Un numero in formato E.164 è composto da un "+" iniziale, un prefisso internazionale da una a tre cifre e il numero nazionale, scritto solo con cifre, senza spazi o separatori, fino a un massimo di 15 cifre, ad esempio +971500000000. È il formato standard per la memorizzazione di qualsiasi numero di telefono, in modo che possa essere instradato a livello internazionale.
Come faccio a convalidare un numero di telefono internazionale?
La validazione avviene in due fasi. Innanzitutto, sintattica: normalizzare l'input in formato E.164 (rimuovere la formattazione, convertire i prefissi 00/011 in '+', rimuovere eventuali zeri di rete nazionale, applicare il prefisso internazionale) e confermare che sia un '+' seguito da 1 a 15 cifre. In secondo luogo, raggiungibilità: eseguire una ricerca HLR per confermare che il numero sia effettivamente assegnato e attivo. La sola validità sintattica non dimostra che un numero possa ricevere messaggi.
Che cos'è la normalizzazione MSISDN?
La normalizzazione MSISDN è il processo di conversione di un numero di cellulare, scritto in qualsiasi stile locale o formattato, nel suo MSISDN canonico E.164, ovvero il numero internazionale componibile a cui la rete instrada le chiamate. Il processo rimuove i separatori, risolve il prefisso di trunk e il prefisso di accesso internazionale e applica il codice paese corretto, in modo che la stessa linea venga sempre memorizzata in modo identico per la deduplicazione, la convalida e la consegna affidabile.
Riferimenti
- Raccomandazione ITU-T E.164 — il piano internazionale di numerazione delle telecomunicazioni pubbliche: itu.int
- Raccomandazione ITU-T E.212 — Piano di identificazione internazionale per reti pubbliche e abbonamenti (IMSI, MCC/MNC): itu.int
- BroadNet — formattatore di numeri di telefono e validatore di elenchi di numeri per la normalizzazione E.164.
- BroadNet — Ricerca HLR per confermare la reale raggiungibilità al di là della validità sintattica.
