Myjustcall.ru

Связь и коммуникации
0 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

Определение региона по номеру сотового телефона

Узнать (определить) оператора связи по номеру телефона

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

Точно узнать (определить) оператора по номеру телефона можно только из тех сведений, которые хранятся в Центральной Базе данных перенесенных номеров, Оператором которой Распоряжением Правительства РФ от 9 октября 2013г. № 1832-р с 1 декабря 2013 года определено Федеральное государственное унитарное предприятие «Центральный научно-исследовательский институт связи». То есть сведения из указанной Базы данных позволят абоненту, например, узнать, что его звонок осуществляется уже не внутри сети одного оператора связи, а идёт в адрес того абонента, который сменил оператора.

Наш сервис определения оператора по номеру телефона позволяет на 100% точно узнать (определить) оператора связи, обслуживающего номер телефона в данный момент.

Под услугой переноса абонентского номера понимается деятельность по предоставлению права абоненту оператора сети подвижной связи на сохранение на безвозмездной или возмездной основе абонентского номера при заключении договора на оказание услуг подвижной связи с другим оператором связи.

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

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

  • услуг голосовой связи;
  • голосовой почты;
  • передачи SMS и ММS.

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

В общем случае деятельность по переносу абонентского номера включает в себя два вида взаимосвязанных отношений:

  • отношения, связанные с обеспечением процесса переноса номера из одной сети связи в другую сеть связи;
  • отношения, связанные с организацией вызовов на перенесенные номера.

Основными субъектами первого вида отношений являются:

  • администратор процесса переноса номера;
  • администратор базы данных перенесенных номеров;
  • оператор-первоначальный донор (InitialDonor);
  • оператор-донор (Donor);
  • оператор-реципиент (Recipient);
  • абонент сети подвижной связи, воспользовавшийся правом переноса номера (абонент MNP).

Администратор процесса переноса номера выполняет функции посредника между операторами связи (донором и реципиентом) и обеспечивает их организационно-техническое взаимодействие в процессе переноса номеров. В функции администратора входят: обеспечение и реализация административной процедуры переноса номера, в том числе взаимодействие с операторами связи, предоставление информации о фактах переноса номеров администратору базы данных перенесенных номеров, верификация возможности переноса, обновление баз данных и иные операции, связанные с переносом номера.

Администратор базы данных перенесенных номеров в свою очередь обеспечивает создание и эксплуатацию централизованной базы данных, в которой находится эталонная информация о перенесенных номерах. В качестве администратора обычно выступает компания, независимая от всех участников рынка. Такая компания может создаваться как партнерство операторов связи или назначаться регулятором (на конкурсной основе).

Функции администратора процесса переноса номера и функции администратора базы данных перенесенных номеров могут быть возложены на одну компанию.

Оператор-первоначальный донор – оператор сети подвижной связи, которому регулятором первоначально был выделен ресурс нумерации.

Оператор-донор – оператор сети подвижной связи, из сети связи которого осуществляется перенос номера. В отличие от первоначального донора оператор-донор может, в общем случае, не являться держателем ресурса нумерации. Это возможно при повторных переносах одного абонентского номера.

Читать еще:  Онлайн база сотовых номеров

Оператор-реципиент – оператор сети подвижной радиотелефонной связи, в сеть связи которого осуществляется перенос номера.

Операторы связи (оператор-донор и оператор-реципиент) в процессе обеспечения переноса номера из одной сети связи в другую сеть связи осуществляют деятельность по приему заявлений от абонентов и осуществляют взаимодействие с администратором процесса переноса номера или администратором базы данных перенесенных номеров. В случае если администратора процесса переноса номера как отдельного участника услуги переноса номера не предусмотрено, соответствующий процесс осуществляется операторами связи на основании действующих соглашений.

Абонент MNP – абонент услуги подвижной связи, воспользовавшийся услугой по переносу абонентского номера.

Сервисы определения оператора по номеру телефона в разных странах имеют свою реализацию и позволяют узнать (определить) оператора по номеру телефона абонента.

Основными субъектами отношений, связанных с организацией вызовов на перенесенные номера, являются:

  • администратор базы данных перенесенных номеров;
  • оператор-первоначальный донор;
  • оператор-донор;
  • оператор-реципиент;
  • операторы связи (сетей фиксированной и подвижной связи), из сетей связи которых инициируются вызовы на перенесенные номера;
  • операторы связи, через сети связи которых осуществляется пропуск трафика на перенесенный номер (операторы транзитных сетей связи);
  • абонент сети подвижной связи, воспользовавшийся правом переноса номера (абонент MNP);
  • абонент, инициирующий вызов на перенесенный номер.

Администратор базы данных перенесенных номеров в режиме онлайн (во время вызова) или оффлайн (без установления вызова) предоставляет операторам связи информацию (маршрутный номер), необходимую для маршрутизации вызова на перенесенные номера.

Оператор-первоначальный донор выполняет функции маршрутизации вызова на перенесенный номер при отсутствии возможности прямой маршрутизации из сети связи, инициирующей вызов.

Оператор-донор в общем случае не принимает участия в процессе обслуживания вызова на перенесенный номер (если он не является оператором-первоначальным донором). Однако в случае отсутствия возможности централизованного обновления баз данных перенесенных номеров при повторных переносах абонентского номера он выполняет функцию перемаршрутизации вызова из сети связи оператора-первоначального донора в сеть связи оператора-реципиента. Подобная схема на практике не рекомендуется к использованию и должна исключаться за счет применения необходимых административных процедур, направленных на актуализацию информации о текущем операторе-реципиенте у оператора-первоначального донора.

Оператор-реципиент осуществляет завершение вызова на перенесенный номер.

Операторы связи, из сетей связи которых инициируются вызовы на перенесенные номера – это операторы сетей фиксированной или подвижной связи.

Операторы транзитных сетей связи – это операторы связи, через сети связи которых осуществляется пропуск трафика на перенесенный номер.

Абонент MNP – это абонент услуги подвижной связи, в направлении которого инициируется вызов из сети фиксированной или подвижной связи.

Абонент, инициирующий вызов на перенесенный номер – это абонент услуги фиксированной или подвижной связи.

Следует отметить, что внедрение услуги MNP также оказывает влияние на поставщиков услуг и операторов платежных систем, которые напрямую не принимают участия в процессе переноса номера и установления вызовов на перенесенные номера, но, тем не менее, в своей деятельности используют информацию о привязки абонента к оператору сети подвижной связи. Таким образом, среди прочих должна быть решена задача информирования соответствующих участников о перенесенных номерах. И именно поэтому задача узнать (определить) оператора по номеру телефона становится для всех подобных организаций одной из самых первоочередных при оказании собственных услуг своим клиентам.

Как определить мобильного оператора и домашний регион по номеру телефона

Когда мы пытаемся определить какому оператору принадлежит номер телефона, то обычно смотрим на его DEF код. Например, если номер начинается на 916, то это МТС, на 968 – Билайн, 926 – Мегафон (все зависит от вашего региона). Но этот метод очень условный и совершенно не подходит когда нужны точные данные. В реальности все сложнее: DEF коды часто делят между собой несколько операторов, и совсем необязательно, что искомый номер относится к операторам большой четверки. Ну и наконец, номер можно просто портировать.

Читать еще:  Как узнать имя владельца номера сотового телефона

В статье я расскажу о том, как по номеру телефона достоверно определить мобильного оператора который его обслуживает, а также получить дополнительную, «бесплатную» информацию – домашний регион абонента. Использовать эти данные можно как угодно, начиная от предзаполнения адреса в анкете пользователя и перенаправления на региональную версию вашего сервиса, до использования этих данных в процессинге и статистике. В конце статьи будет ссылка на github с исходниками.

Сразу оговорюсь, что домашний регион абонента, по большому счету, никак не связан с текущим месторасположением пользователя, т.е. определяемый регион отвечает на вопрос «Откуда номер?», а не «Где пользователь?».

Источники данных

Россвязь

Свой номер телефона мы получаем когда заключаем договор на обслуживание с оператором связи. В свою очередь, распределением диапазонов номеров между операторами связи, а также стандартизацией и общим контролем за услугами связи занимаются соответствующие государственные и международные организации. В России такой организацией является Федеральное агентство связи (Россвязь).

Таким образом, самым надежным источником информации кто обслуживает российский номер телефона является Россвязь, причем это открытые данные, которые агентство публикует у себя на сайте: www.rossvyaz.ru/opendata. Свежий список диапазонов мобильных номеров находится в CSV по ссылке. Каждая строка в файле выглядит как:

DEF-код, начало диапазона, конец диапазона, название оператора, название региона

Однако, с 2013 года появилась возможность переносить номер от оператора к оператору. Значит, руководствуясь только реестрами Россвязи, нельзя однозначно сказать, что номер обслуживается определенным оператором. Зато это вполне можно сказать про регион, ведь переносимость номера работает только в рамках домашнего региона и перенести номер из МТС Новосибирск в Tele2 Санкт-Петербург не получится в принципе.

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

База Данных Перенесенных Номеров

Если нужно точно определять оператора, тогда не обойтись без Базы Данных Перенесенных Номеров, оператором которой является ЦНИИC . Процедуру подключения к базе можно найти у них на сайте: zniis.ru. Но, к сожалению, насколько я знаю, напрямую подключиться к ним не просто, а получив подключение, делиться базой ни с кем нельзя.

Структура этой базы крайне проста: это три CSV файла в которых в формате «номер, название оператора» перечислены:

  • все перенесенные номера на текущий день (обновляется раз в день);
  • все перенесенные номера за последний час (обновляется раз в час);
  • все номера возращенные родному оператору обратно за последний час (обновляется раз в час).

На момент написания статьи, в БДПН находится около 6 миллионов записей.

Суммируя: у нас есть некие диапазоны номеров, которые соответствуют определенным операторам и регионам (Россвязь), и список номеров-исключений из этих диапазонов (БДПН), который распространяется только на название оператора.

Как определять абонентов

Самое очевидное решение этой задачи: посмотреть на слово «диапазон» и использовать перечисленные емкости буквально. Т.е. для определения номера, сортируем всех операторов по их диапазонам и ищем запись, которая относится к минимальному диапазону, в который попадает конкретный номер. Сложность этого алгоритма будет как у бинарного поиска, что довольно неплохо.

Но есть более оригинальный и универсальный способ реализации, сложность которого – константа, независимо от размера данных. Этот метод предполагает использование масок номеров.

Маска номера

Маска номера – это строка состоящая из цифр и спецсимвола со значением «wildcard одиночного символа» («?»), который говорит, что на его месте может быть любая цифра. Причем после знака вопроса может стоять только знак вопроса.

Читать еще:  Какому региону принадлежит сотовый телефон

Таким образом, один из диапазонов Билайн в Москве «79031000000 – 79031999999», в виде маски будет записан как «79031. ».

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

Хеш-таблица

Например, один из таких алгоритмов это хранение соответствий «маска-оператор» в хеш-таблице (или любом другом key-value хранилище). Суть алгоритма в следующем: все подобные маски складываются в хеш-таблицу, где они являются ключами. Значениями в таблице являются объекты-операторы с регионами.

Работу поиска нагляднее всего объяснить на примере. Скажем, мы ищем информацию по номеру: 7(903)100-1234, и у нас есть маска 79031. – Билайн, Москва.

Сперва ищем в таблице запись по ключу в точности как исходный номер: 79031001234.
Если не найдено, то меняем последнюю цифру номера на «?» и ищем по ключу 7903100123?.

Если опять ничего не нашли, то снова меняем последнюю цифру на «?» и ищем по 790310012. и так далее.

В конце концов мы сделаем поиск по ключу 79031. и обнаружим, что номер относится к оператору Билайн, Москва.

Видно, что в данном случае сложность алгоритма равна сложности нескольких взятий из хеш-таблицы, что при правильной реализации обычно равно константе. Сложность поиска в таком дереве зависит от длины телефонных номеров, которая по рекомендации ITU-T E.164 не превышает 15 символов.

Этот же алгоритм можно применить и к портированным номерам – их можно просто добавить в ту же самую хеш-таблицу.

Префиксное дерево

Гораздо более эффективный по производительности метод – построение префиксного дерева из масок, который будет опираться на то, что номера состоят из цифр. Каждая нода этого дерева сможет иметь до 10 цифровых нод-потомков (0-9) и одной wildcard-ноды. Wildcard-нода может иметь только wildcard-потомков. При добавлении очередной маски в дерево, каждый символ маски последовательно превратится в ноду. Таким образом, фактически мы представляем все имеющиеся у нас маски в виде одного дерева.

Например, дерево состоящее из масок:
7913? – Mno1
791?? – Mno3
7952 – Mno2
7953 – Mno3
795? – Mno1
будет иметь вид, как на картинке (перечисленные маски в дереве идут слева направо).

Алгоритм поиска в дереве, думаю, уже понятен: берем по порядку каждую цифру из искомого номера и последовательно спускаемся по дереву начиная с корня. В первую очередь спускаемся по цифровым нодам, если цифровых нод нет, то смотрим есть ли «?»-нода. Если есть, то в конечном итоге проверяем длину маски, и если она соответствует номеру, то оператор найден.

Заключение

В зависимости от ограничений, можно комбинировать эти подходы и разделять хранилища перенесенных номеров и масок Россвязи. Например, по памяти выгоднее для портированных номеров использовать подход с хеш-таблицей, а для реестров Россвязи всегда выгоднее использовать дерево масок. При поиске сначала смотреть в таблице, а если в ней ничего не найдено, то искать в дереве. Разделение хранилищ в первую очередь удобно для их автообновления, т.е. если изменилась БДПН (а она меняется постоянно), то совсем необязательно перечитывать диапазоны Россвязи.

Для максимальной производительности можно хранить всю информацию прямо в оперативной памяти. В моей реализации на Java, дерево масок Россвязи занимает не более 20-30Мб, хеш-таблица с масками портированных номеров: около 500-600 Мб. Если же портированные номера хранить в префиксном дереве, то из-за того, что ноды дерева получаются очень разреженные, памяти потребуется примерно в 1.5 раза больше. Но зато, это дает достаточно весомый прирост производительности.

Ссылка на основную публикацию
Adblock
detector