.164 — это стандарт ITU-T для записи телефонных номеров для международного использования: знак плюс в начале, код страны от одной до трех цифр и национальный номер без разделителей, содержащий не более 15 цифр. Хранение каждого номера в этой канонической форме — MSISDN, к которому обращается сеть, — обеспечивает возможность проверки и надежной доставки.
Хотите преобразовать номер прямо сейчас? Вставьте его в форматировщик телефонных номеров, чтобы увидеть его формат E.164, или пропустите весь список через валидатор списков номеров. В этом руководстве объясняется, как работают эти инструменты.
Что такое E.164: международная система нумерации.
E.164 — это рекомендация ITU-T E.164, международная система нумерации телекоммуникаций. Она присваивает каждому телефону на планете единый, уникальный в глобальном масштабе адрес, позволяющий маршрутизировать вызов или сообщение из любой сети в любую другую. Номер E.164 состоит из трех частей: кода страны (CC) от одной до трех цифр, национального кода назначения (NDC, часто это код оператора или города) и номера абонента. В совокупности они не должны превышать 15 цифр.
Каноническая строка начинается с символа '+', за которым следуют только цифры — например, +971500000000. Символ '+' служит заполнителем для международного префикса доступа, используемого исходной сетью (00 в большинстве стран мира, 011 в Северной Америке); хранение символа '+' вместо префикса, специфичного для страны, именно это обеспечивает переносимость номера между сетями и странами. В номере E.164 нет пробелов, тире, скобок или нулей в начале: это правила отображения, а не часть номера.
MSISDN: номер, на который фактически маршрутизируется сеть.
MSISDN расшифровывается как Mobile Station International Subscriber Directory Number (Международный номер абонента мобильной станции) — это набираемый номер E.164, идентифицирующий абонента мобильной связи. Именно его вы сохраняете, набираете и отправляете SMS. Он намеренно отделен от IMSI, идентификатора, хранящегося на SIM-карте в соответствии с ITU-T E.212 (код страны мобильной связи плюс код мобильной сети плюс идентификатор абонента). Регистр домашнего местоположения оператора сопоставляет MSISDN с его текущим IMSI и обслуживаемой сетью, благодаря чему сообщение, адресованное номеру E.164, достигает нужного телефона даже после того, как абонент переходит в роуминг или меняет номер.
Практический вывод: MSISDN — это просто номер E.164 для мобильной линии. Когда говорят «нормализовать до MSISDN», имеют в виду «сохранить номер мобильной линии в каноническом формате E.164». Правильное представление этого номера в точке захвата — это разница между номером, который корректно маршрутизируется, и номером, который незаметно выходит из строя на последующих этапах.
Нормализация: хранение каждого числа в одной канонической форме.
Пользователи вводят номера всеми возможными способами — с пробелами, скобками, национальным номером ноль, международным префиксом 00 или 011 или без него. Нормализация объединяет все эти варианты в одну каноническую строку E.164, так что одна и та же физическая строка всегда хранится идентично. Без нее невозможно удалить дубликаты из списка контактов, сопоставить номер со списком запрещенных номеров или надежно проверить номер перед отправкой.
Надежный нормализатор применяет эти правила в указанном порядке:
- Удалите все символы форматирования: пробелы, тире, точки и скобки.
- Преобразовать международный префикс доступа — ведущий символ 00 (ITU) или 011 (Северная Америка) — в знак '+'.
- Если номер уже начинается с символа '+', оставьте код страны как есть.
- Если используется национальный формат (без кода страны), удалите национальный префикс (обычно это один ведущий ноль) и добавьте в начало код страны региона по умолчанию.
- Отклоняйте все, что не является знаком '+', за которым следуют цифры от 1 до 15, причем первая цифра должна быть от 1 до 9.
- Сохраняйте только знак «+» и цифры; при отображении числа автоматически восстанавливайте красивые формы отображения.
Этап "нулевого канала" — вот что чаще всего ставит в тупик команды. В большинстве стран начальный 0, который вы набираете внутри страны, является префиксом канала, который отбрасывается в международном формате — мобильный номер ОАЭ, записанный как 050 000 0000, становится +971 50 000 0000, а не +971 050…. Применение кода страны без удаления этого 0 приводит к недействительному номеру, который выглядит правдоподобно. Нормализатор должен знать регион по умолчанию, чтобы обрабатывать ввод в национальном формате; одни и те же цифры означают разные линии в разных странах.
function toE164(raw, defaultRegion) { // 1. Удаляем пробелы, тире, точки, скобки let s = raw.trim().replace(/[\s().\-]/g, ''); // 2. Международный префикс 00 (ITU) или 011 (NANP) -> + s = s.replace(/^(00|011)/, '+'); // 3. Уже в международном формате? Сохраняем код страны if (s.startsWith('+')) return assertE164(s); // 4. Национальный формат: удаляем основной код 0, добавляем код региона s = s.replace(/^0/, ''); return assertE164('+' + defaultRegion.dialCode + s); } // assertE164 принимает только /^\+[1-9]\d{1,14}$/ (плюс, тогда <= 15 цифр)Здесь та же логика применяется к реальным примерам из стран Персидского залива и других стран мира. Обратите внимание, как различные входные данные сводятся к одному чистому MSISDN:
| Код страны) | Ввод текста по мере его ввода. | Канонический E.164 (MSISDN) |
|---|---|---|
| ОАЭ (+971) | 050 000 0000 / 00971 50 000 0000 | +971500000000 |
| Саудовская Аравия (+966) | 0500000000 | +966500000000 |
| Египет (+20) | 0100 123 4567 | +201001234567 |
| Соединенное Королевство (+44) | (07911) 123 456 | +447911123456 |
| Соединенные Штаты (+1) | 011 1 202 555 0143 | +12025550143 |
Для разовых проверок форматировщик телефонных номеров отображает национальные и международные форматы отображения номера вместе с его выводом в формате E.164; для очистки всей загруженной базы данных перед началом кампании валидатор списка номеров нормализует, удаляет дубликаты и помечает недопустимые строки в браузере, чтобы исходные данные никогда не покидали ваш компьютер.
Синтаксическая корректность не означает достижимость.
Нормализация и проверка длины показывают, что номер правильно сформирован — имеет правильную форму, содержит допустимый код страны и не превышает 15 цифр. Они не могут определить, присвоен ли номер активному абоненту. Синтаксически безупречный номер E.164 может быть нераспределен, деактивирован или перенесен к другому оператору, нежели указано в его префиксе. Отправка на такой номер все равно будет стоить вам денег и снизит процент доставки.
Для подтверждения реальной доступности необходимо запросить базу данных абонентов оператора. Поиск по HLR (/products/hlr-lookup) возвращает информацию о том, назначен ли номер в данный момент и активен ли он, его истинную домашнюю сеть (MCC/MNC, стоящий за любым перенесенным номером) и его роуминговый статус — истинные данные, которые невозможно получить только с помощью синтаксиса. Разумный алгоритм действий: сначала нормализовать до E.164, быстро удалить синтаксически некорректные строки, а затем выполнить поиск по HLR для оставшихся номеров перед отправкой большого или ценного номера.
Почему ошибки форматирования приводят к потере доставленных сообщений и денег
A2P SMS оплачивается за сегмент при отправке, а не при доставке. Неправильно сформированный номер — это сообщение, за попытку доставки которого вы платите, но которое так и не доходит, а при больших объемах рассылки такие сбои накапливаются. Плохое форматирование также маскирует дубликаты (одна и та же строка, сохраненная тремя разными способами, оплачивается трижды), искажает показатели скорости доставки и может вызывать срабатывание фильтров оператора, когда шлюз получает номера, которые он не может обработать.
Самое простое решение полностью находится на вашей стороне API: нормализация в точке захвата, проверка формы E.164 перед постановкой в очередь и резервирование поиска HLR для номеров, которые прошли проверку. Команды, внедряющие это в свой собственный стек, могут один раз подключить это к API обмена сообщениями — см. документацию для разработчиков — так что каждый номер будет каноническим до того, как за него будет взиматься плата. Обработка национальных и международных номеров также не является исключением в регионе MENA: отправители из стран Персидского залива регулярно получают номера ОАЭ, Саудовской Аравии и Египта в локальном формате, и для каждого из них требуется собственное правило префикса транка для корректной нормализации.
Чистые входящие номера, доставленные исходящие сообщения. Нормализуйте и проверьте каждый номер с помощью форматировщика телефонных номеров, затем подтвердите работоспособность номеров с помощью поиска HLR перед отправкой. С 2003 года BroadNet обеспечивает маршрутизацию многоканального трафика в 200+ стран через 1000+ операторских соединений, с уровнем обслуживания платформы 99,99%.
Часто задаваемые вопросы
Что такое формат E.164?
E.164 — это международный стандарт нумерации телефонных номеров, разработанный ITU-T. Номер в формате E.164 состоит из знака «+» в начале, кода страны от одной до трех цифр и национального номера, записанного только цифрами без пробелов и разделителей, максимум 15 цифр — например, +971500000000. Это каноническая форма для хранения любого телефонного номера, позволяющая осуществлять международную маршрутизацию.
Как подтвердить международный номер телефона?
Проверка в два этапа. Первый — синтаксический: нормализуйте входные данные в формате E.164 (удалите форматирование, преобразуйте префиксы 00/011 в '+', удалите все национальные нулевые символы, добавьте код страны) и подтвердите, что это '+', за которым следуют от 1 до 15 цифр. Второй — доступность: выполните поиск HLR, чтобы подтвердить, что номер действительно назначен и активен. Одна только синтаксическая корректность не доказывает, что номер может принимать сообщения.
Что такое нормализация MSISDN?
Нормализация MSISDN — это процесс преобразования номера мобильного телефона, записанного в любом локальном или отформатированном стиле, в его канонический MSISDN в формате E.164 — набираемый международный номер, на который маршрутизируется сеть. При этом удаляются разделители, определяется префикс транка и префикс международного доступа, а также применяется правильный код страны, поэтому одна и та же строка всегда хранится идентично для дедупликации, проверки и надежной доставки.
Ссылки
- Рекомендация ITU-T E.164 — международный план нумерации общественных телекоммуникаций: itu.int
- Рекомендация ITU-T E.212 — международный план идентификации для общедоступных сетей и подписок (IMSI, MCC/MNC): itu.int
- BroadNet — форматировщик телефонных номеров и валидатор списка номеров для нормализации E.164.
- BroadNet — HLR lookup для подтверждения истинной достижимости, выходящей за рамки синтаксической корректности.
