Программа определить по номеру телефона с какого региона звонили

Обновлено: 07.07.2024


Полезно знать, какого телефонного оператора выбрал клиент и в каком регионе. Тогда можно разбить клиентскую базу географически и не звонить ночами. Или проводить промоакции вместе с операторами. А некоторые наши заказчики экономят: для каждого оператора выбирают самого дешевого СМС-агрегатора.

Поэтому «Дадата» с давних пор находит оператора по номеру телефона. Алгоритм простой — сделай и пользуйся. Разве что в 2013 году, когда отменили «мобильное рабство», пришлось чуть скорректировать процесс. В этой статье расскажу, как у нас все работает.

В процессе есть большая сложность — получить доступ к базе перенесенных номеров. Частным лицам его не выдают, да и компаниям придется тяжело. Об этом — в отдельном разделе.

Разбить телефонный номер на части

Первое, что нужно сделать, — разобрать телефон на три части:

Если не знать, какая часть номера из каких цифр состоит, дальше будет непросто. Выход — поставить маску, чтобы пользователи сразу вводили номера по частям. Или разбирать уже после, с задачей справится библиотека Google для работы с телефонами.

Найти оператора по номеру телефона, заглянув в план нумерации



Справочник выложили сразу в двух форматах, что очень мило со стороны Россвязи. Обновляют раз в месяц

Внутри плана нумерации четыре файла: три для стационарных номеров и один — для мобильных. Разница между содержимым файлов заметна, если посмотреть на префиксы в названиях:

  • «ABC-» означает, что в файле лежат стационарные номера. Собственно, «ABC» — обозначение зон нумерации, определенных по географическому принципу;
  • «DEF-» — это файл с мобильными номерами. Префикс означает зоны нумерации, определенные не географически.
  • у стационарных код начинается с 3, 4 или 8;
  • у мобильных — с 9.

Но я отвлекся, вернемся к плану нумерации. Внутри файлов все очень просто — таблица на шесть полей.



Порядок полей таков: ABC- или DEF-код зоны, начало диапазона, конец диапазона, емкость, оператор, регион. Емкость — просто количество номеров, входящих в диапазон

Искать по плану нумерации регион и оператора — одно удовольствие.

  1. Вытаскиваем код зоны нумерации из нужного номера.
  2. По коду выбираем из справочника подходящие диапазоны.
  3. Оставляем от телефона только то, что следует после кода зоны — собственно номер.
  4. Ищем, в какой диапазон попадает номер.
  5. Успех! Мы нашли для телефона регион, оператора и тип.

Порой телефон не укладывается ни в один диапазон. Это значит, что номер неправильный. Исключений нет. На этом, надо сказать, прокалывается упомянутая библиотека Google — она одобряет внешне верный телефон, не сопоставляя с планом нумерации.

Раньше на этом шаге изыскания заканчивались. Но в 2013 году власти приняли закон об отмене «мобильного рабства». С тех пор номера телефонов прибиты к операторам не так уж крепко.

Теперь закон разрешает: меняйте оператора, сохранив номер. Но, внимание, только внутри региона. Нельзя вытащить телефон из региона, предусмотренного Россвязью. Как нельзя и «сломать» диапазоны распределения номеров. Поэтому, если интересен лишь регион телефонного номера, дальше можно не читать. А я продолжу и расскажу, как найти сменившие операторов номера.

Получить доступ к базе перенесенных номеров

Это шаг бюрократический, соответственно, самый сложный. А для большинства компаний и вовсе непроходимый, к сожалению.

Номера, сменившие оператора, хранят в базе данных перенесенных абонентских номеров (БДПН). Ее оператор — уже не Россвязь, но Центральный научно-исследовательский институт связи.

Проблема в том, что получить доступ к БДПН очень непросто. Конечно, если вы не мобильный оператор, субъект национальной платежной системы, силовая структура или другое ведомство.



Все, что может рядовой пользователь — вручную проверить конкретный номер

Мы получили доступ к БДПН в далеком 2013 году как «иная организация». Но с тех пор правила, похоже, ужесточили. Даже бланк заявления сильно изменился, свежий лежит на сайте Института связи. Поэтому посоветовать здесь ничего не могу, увы.

UPD. В комментариях пишут, что с доступом все не так сурово: «Работал в энергосбытовой компании, без проблем за несколько дней получил доступ к бдпн. <. > заполнил заявление, подписал директором, поставил печать и отправил по электронике. Потом созвонился для верности».

Проверить, не ушел ли номер к другому оператору

Если получили доступ к официальной базе перенесенных номеров, дальше легко. Проверяем, не поменял ли абонент оператора, сбросив оковы «мобильного рабства».

Институт связи выкладывает БДПН на SFTP-сервер, в три папки.



В первой папке лежит полный справочник. Во второй — инкрементальные обновления. А третья хранит номера, вернувшиеся «владельцам»

  • В папке PortAllNew лежит полная версия справочника. Это один файл, который обновляют ежедневно в 00:00 по Москве;
  • PortIncrementNew — для инкрементальных обновлений. Каждые два часа сюда добавляют файл с последними перенесенными номерами;
  • ReturnIncrementNew — это номера, которые вернули «владельцам» согласно плану нумерации Россвязи. Здесь тоже каждые два часа появляется новый файл.



В название инкрементов вставляют дату и время обновления. Если хотите максимально срочно получать перенесенные номера — вот, пожалуйста. Если срочности нет, проще раз в сутки загружать полный справочник

Формат файлов — CSV, сжатые в ZIP. Внутри — проще некуда.



В файлах справочника три поля: номер, оператор и количество строк. Причем третье поле заполняют только для первой строки — изящное решение

Историю в БДПН не хранят: каждый день на сервер выкладывают все перенесенные номера. Если телефона нет в полном справочнике или в инкрементах за день, значит, он подчиняется плану Россвязи. Поэтому для наших целей папка с вернувшимися номерами — ReturnIncrementNew — не нужна.

Каждый день мы загружаем с сервера свежую БДПН. Для этого годится любой SFTP-клиент: на Windows подойдет WinSCP или FileZilla FTP Client, на Ubuntu — Nautilus. Классическая ошибка при этом: оставить в настройках дефолтный FTP вместо положенного SFTP. Так можно долго промучиться, не повторяйте наших ошибок.

Когда справочник перенесенных номеров под рукой, осталось поискать в нем исследуемый номер. Варианта два:

  • номер нашелся в БДПН. В этом случае мы меняем оператора из плана Россвязи на нового;
  • номера нет в БДПН — оставляем оператора как есть.

А можно разобрать номер «Дадатой»

Еще вариант — отдать номер телефона «Дадате», сервис вытащит из него полезное.



Распозна́ем оператора, исправим опечатки в номере, покажем страну, регион и часовой пояс. Наконец, отделим стационарник от мобильного

Читайте также: