определение оператора по номеру api
API стандартизации телефонов
✔️ Проверяет телефон.
✔️ Проставляет актуальный код города / DEF-код.
✔️ Восстанавливает оператора. Учитывает переносы номера между операторами.
✔️ Определяет страну, регион, город и часовой пояс.
Как вызвать
Чтобы вызвать метод, зарегистрируйтесь и подтвердите почту.
Укажите при вызове:
Что в ответе
Название | Длина | Описание |
---|---|---|
source | 100 | Исходный телефон одной строкой |
type | 50 | Тип телефона |
phone | 50 | Стандартизованный телефон одной строкой |
country_code | 5 | Код страны |
city_code | 5 | Код города / DEF-код |
number | 10 | Локальный номер телефона |
extension | 10 | Добавочный номер |
provider | 100 | Оператор связи (только для России) |
country | 50 | Страна |
region | 100 | Регион (только для России) |
city | 100 | Город (только для стационарных телефонов) |
timezone | 50 | Часовой пояс города для России, часовой пояс страны — для иностранных телефонов. Если у страны несколько поясов, вернёт минимальный и максимальный через слеш: UTC+5/UTC+6 |
qc_conflict | 5 | Признак конфликта телефона с адресом |
qc | 5 | Код проверки |
Тип телефона
Тип | Пример телефона |
---|---|
Мобильный | +7 911 243-45-68 |
Стационарный | +7 495 456-55-77 |
Прямой мобильный | +7 495 243-45-68 |
Колл-центр | 8 800 222-12-22 |
Неизвестный | +7 333 1111112 |
Коды качества
Код проверки qc
Нужно ли вручную проверить распознанный телефон:
Код qc | Описание | Нужно проверить вручную? |
---|---|---|
0 | Российский телефон, распознан уверенно | Нет |
7 | Иностранный телефон, распознан уверенно | Нет |
2 | Телефон пустой или заведомо «мусорный» | Нет |
1 | Телефон распознан с допущениями или не распознан | Да |
3 | Обнаружено несколько телефонов, распознан первый | Да |
Признак конфликта телефона с адресом qc_conflict
Указал ли клиент телефон, соответствующий его адресу. Удобно для проверки уровня риска:
Код qc_conflict | Описание |
---|---|
0 | Телефон соответствует адресу |
2 | Города адреса и телефона отличаются |
3 | Регионы адреса и телефона отличаются |
Заполняется только для российских адресов. Для иностранных всегда равен 0.
Коды ответа на запрос
HTTP-код ответа | Описание |
---|---|
200 | Запрос успешно обработан |
400 | Некорректный запрос |
401 | В запросе отсутствует API-ключ или секретный ключ Или в запросе указан несуществующий ключ |
403 | Не подтверждена почта Или недостаточно средств для обработки запроса, пополните баланс |
405 | Запрос сделан с методом, отличным от POST |
429 | Слишком много запросов в секунду или новых соединений в минуту |
5xx | Произошла внутренняя ошибка сервиса |
Примеры и интеграции
Ограничения
Максимальная частота запросов — 10 в секунду с одного IP-адреса.
Максимальная частота создания новых соединений — 60 в минуту с одного IP-адреса.
Дадата не поддерживает вызов этого метода из браузерного JavaScript. Иначе злоумышленник мог бы похитить секретный ключ и использовать API за ваш счет.
API получения местонахождения по номеру телефона:
страны и города
Форма получения информации по номеру телефона здесь
Большинство API функций сервиса htmlweb.ru совершенно бесплатны. Идентификация нужна для исключения злоупотреблений и позволяет разделить количество запросов от разных пользователей. Ограничения на бесплатные запросы и тарификация описана здесь.
Для идентификации используется API_KEY из_профиля. API_KEY может быть передан как GET так и POST запросом.
Не размещайте ключ API_KEY в открытом доступе и в javascript. Он фактически заменяет ваши логин пароль и дает возможность использовать весь функционал нашего сайта от вашего аккаунта, включая платные функции.
Ключи выбора формата:
Для указания кодирования ответа в нужном вам формате добавьте в запрос параметр html или json или xml, например:
Ключ выбора кодировки charset=:
Если Вам нужен другой формат или другая кодировка, а также обо всех найденных проблемах и пожеланиях сообщайте нам.
Структура API запроса для получения информации по номеру телефона:
Структура API запроса для получения информации по номеру телефона в json-формате:
Дополнительно возвращается несколько признаков:
Пример для получения информации в html-формате с Вашим API_KEY:
Краткий (short) html-ответ:
Краткий (short) html-ответ для мобильного телефона:
Краткий (short) json-ответ:
Если Вы хотите сразу сделать платный запрос к оператору для получения информации об абоненте, добавьте в запрос параметр hlr. Например:
Вы получите информацию из базы о привязке абонента и будет отправлен HLR-запрос оператору. Для отправки только HLR-запроса используйте следующий вызов:
Ответ от оператора получите через callback, указанный в вашем профиле или в https://htmlweb.ru/sendsms/#История
Пример запроса на PHP:
HLR-запрос информации об абоненте
Вы можете отправить специальный запрос оператору для получения информации об абоненте, так называемый HLR-запрос. HLR (Home Location Register) — это база данных, которая содержит подробную информацию о каждом абоненте мобильных сетей GSM-операторов. Стоимость одного HLR-запроса составляет 45 копеек. В ответ вы получите следующую информацию:
В ответ на запрос информации от абоненте, оператор возвращает следующую информацию:
С помощью данного запроса Вы можете определить существование и доступность абонента, отследить замену СИМ-карты, определить в домашней стране находится абонент или в роуминге. Банки по номеру симки определяют, что человек не менял сим-карту и ему можно отправлять кодовые СМС. Этот запрос чаще всего используется для чистки базы абонентов, чтобы удалить уже несуществующие из списка рассылок. Чтобы определить в сети или нет (ON Line) сейчас абонент, существует PING-запрос. Но его стоимость равна стоимости СМС по прямым каналам.
Российские операторы Мегафон и Yota блокируют HLR-запросы информации о своих абонентах.
API запрос для получения HLR-информации:
https://htmlweb.ru/json/sms/hlr/79185558077?api_key=API_KEY_из_профиля
Ответ:
Ответ на этот запрос поступает через некоторое время. Вы можете получить его с помощью Callback вызова адреса, указанного у вас в профиле или вызвать этот запрос ещё раз через некоторое время.
Определить оператора мобильного абонента (MNP API)
Форма определения оператора абонента (MNP)
Статистика по базе данных перенесенных номеров (БДПН)
Данная информация отражает актуальное кол-во перенесенных номеров на 22.10.2021 без учета тех, кто вернулся обратно к своему оператору.
По другим странам статистика не ведется, но информация предоставляется.
IMSI, MCC, MNP, PLMN
Коды MCC и MNP и соответствующие им названия страны и оператора доступны с помощью API запросов. Список МСС кодов.
PLMN это код страны + код оператора, т.е. MCC + MNP.
CellID (CID) — «идентификатор соты». Тот самый сектор базовой станции. Этот параметр также может быть представлен в десятичном, и шестнадцатеричном виде.
MNP API
Для получения информации об операторе абонента мобильной связи с учетом MNP-переноса используйте следующий API-запрос:
В ответ Вы получите структуру формата html или xml или json содержащую следующие поля:
Если ошибка, то:
error=текст ошибки
Пример с перенесенным абонентом:
Для получения оператора, от кого перешел (поле oper_from), по его коду используйте запрос:
Для получения города(областного центра) по его коду из поля regon->capital используйте запрос:
Получить номер телефона в любой из 150 стран
Если Вы планируете интернациональную компанию, вам понадобятся местные, в том числе бесплатные (8-800), номера. Для объединения всех местных номеров в единный call-центр Вы можете использовать SIP-телефонию
Numcap — npm для определения оператора и региона по номеру телефона
Тем, кто работает с телефонией, приложениями связанных со звонками и т.п. время от времени приходится сталкиваться с вопросами: «а можно определять с какого региона этот звонок?» и «а этот номер какого мобильного оператора?»
В общем-то, ответы найти легко. На сайте Федерального агентства связи есть данные о ресурсе нумерации всех операторов связи. Заходишь на сайт, скачиваешь нужный CSV файл и находишь нужную информацию.
Но ведь можно автоматизировать этот поиск? Конечно. И многие аккуратно парсят этот CSV и складывают к себе в базу данных. А затем используют. Я тоже так делаю.
Но недавно с моим коллегой мы решили немного это упаковать и сделать npm для быстрого подключения ресурса нумерации к проекту на node.js.
Далее немного деталей.
В npm уже лежат 4 файла в JSON для быстрого поиска данных по номеру. Это преобразованные в JSON из CSV данные с сайта Федерального агентства связи РФ. Имеют ту же структуру, что и CSV: код, диапазон номеров, количество номеров в диапазоне, название оператора и регион.
Поиск по номеру заключается в поиске нужного диапазона в файле и предоставлении данных по этому диапазону.
Пример использования numcap
Утилита ncli.js
В комплекте идет консольная утилита ncli.js, которая может пригодиться в следующих случаях.
1. Обновление данных. Данные на сайте обновляются примерно раз в месяц, поэтому периодически нужно актуализировать данные.
2. Перенос данных в Mongo DB. Использование файлов медленнее, чем использование базы данных mongo, поэтому данные JSON файлов можно перенести в mongo.
Описание опций утилиты есть в readme проекта.
Надеюсь, пригодится вам в ваших разработках. Принимаются конструктивные предложения по улучшению и дополнительному функционалу.
Как определить оператора и регион по номеру телефона
Полезно знать, какого телефонного оператора выбрал клиент и в каком регионе. Тогда можно разбить клиентскую базу географически и не звонить ночами. Или проводить промоакции вместе с операторами. А некоторые наши заказчики экономят: для каждого оператора выбирают самого дешевого СМС-агрегатора.
Поэтому «Дадата» с давних пор находит оператора по номеру телефона. Алгоритм простой — сделай и пользуйся. Разве что в 2013 году, когда отменили «мобильное рабство», пришлось чуть скорректировать процесс. В этой статье расскажу, как у нас все работает.
В процессе есть большая сложность — получить доступ к базе перенесенных номеров. Частным лицам его не выдают, да и компаниям придется тяжело. Об этом — в отдельном разделе.
Разбить телефонный номер на части
Первое, что нужно сделать, — разобрать телефон на три части:
Если не знать, какая часть номера из каких цифр состоит, дальше будет непросто. Выход — поставить маску, чтобы пользователи сразу вводили номера по частям. Или разбирать уже после, с задачей справится библиотека Google для работы с телефонами.
Найти оператора по номеру телефона, заглянув в план нумерации
Главный российский документ, согласно которому операторы получают телефонные номера, — это план нумерации Россвязи. В нем ясно прописали все расклады: какие коды и номера каким операторам в каких регионах принадлежат. Что приятно, справочник Россвязи свободно лежит на странице rossvyaz.ru/deyatelnost/resurs-numeracii/vypiska-iz-reestra-sistemy-i-plana-numeracii.
Справочник выложили сразу в двух форматах, что очень мило со стороны Россвязи. Обновляют раз в месяц
Внутри плана нумерации четыре файла: три для стационарных номеров и один — для мобильных. Разница между содержимым файлов заметна, если посмотреть на префиксы в названиях:
Номер +7 495 999-99-34 может быть прямым мобильным. А может быть, это офис покупает у сотового оператора фиксированную связь — знает только сам оператор.
Но я отвлекся, вернемся к плану нумерации. Внутри файлов все очень просто — таблица на шесть полей.
Порядок полей таков: ABC- или DEF-код зоны, начало диапазона, конец диапазона, емкость, оператор, регион. Емкость — просто количество номеров, входящих в диапазон
Искать по плану нумерации регион и оператора — одно удовольствие.
Порой телефон не укладывается ни в один диапазон. Это значит, что номер неправильный. Исключений нет. На этом, надо сказать, прокалывается упомянутая библиотека Google — она одобряет внешне верный телефон, не сопоставляя с планом нумерации.
Раньше на этом шаге изыскания заканчивались. Но в 2013 году власти приняли закон об отмене «мобильного рабства». С тех пор номера телефонов прибиты к операторам не так уж крепко.
Теперь закон разрешает: меняйте оператора, сохранив номер. Но, внимание, только внутри региона. Нельзя вытащить телефон из региона, предусмотренного Россвязью. Как нельзя и «сломать» диапазоны распределения номеров. Поэтому, если интересен лишь регион телефонного номера, дальше можно не читать. А я продолжу и расскажу, как найти сменившие операторов номера.
Получить доступ к базе перенесенных номеров
Это шаг бюрократический, соответственно, самый сложный. А для большинства компаний и вовсе непроходимый, к сожалению.
Номера, сменившие оператора, хранят в базе данных перенесенных абонентских номеров (БДПН). Ее оператор — уже не Россвязь, но Центральный научно-исследовательский институт связи.
Проблема в том, что получить доступ к БДПН очень непросто. Конечно, если вы не мобильный оператор, субъект национальной платежной системы, силовая структура или другое ведомство.
Все, что может рядовой пользователь — вручную проверить конкретный номер
Мы получили доступ к БДПН в далеком 2013 году как «иная организация». Но с тех пор правила, похоже, ужесточили. Даже бланк заявления сильно изменился, свежий лежит на сайте Института связи. Поэтому посоветовать здесь ничего не могу, увы.
UPD. В комментариях пишут, что с доступом все не так сурово: «Работал в энергосбытовой компании, без проблем за несколько дней получил доступ к бдпн. заполнил заявление, подписал директором, поставил печать и отправил по электронике. Потом созвонился для верности».
Проверить, не ушел ли номер к другому оператору
Если получили доступ к официальной базе перенесенных номеров, дальше легко. Проверяем, не поменял ли абонент оператора, сбросив оковы «мобильного рабства».
Институт связи выкладывает БДПН на SFTP-сервер, в три папки.
В первой папке лежит полный справочник. Во второй — инкрементальные обновления. А третья хранит номера, вернувшиеся «владельцам»
В название инкрементов вставляют дату и время обновления. Если хотите максимально срочно получать перенесенные номера — вот, пожалуйста. Если срочности нет, проще раз в сутки загружать полный справочник
Формат файлов — CSV, сжатые в ZIP. Внутри — проще некуда.
В файлах справочника три поля: номер, оператор и количество строк. Причем третье поле заполняют только для первой строки — изящное решение
Историю в БДПН не хранят: каждый день на сервер выкладывают все перенесенные номера. Если телефона нет в полном справочнике или в инкрементах за день, значит, он подчиняется плану Россвязи. Поэтому для наших целей папка с вернувшимися номерами — ReturnIncrementNew — не нужна.
Каждый день мы загружаем с сервера свежую БДПН. Для этого годится любой SFTP-клиент: на Windows подойдет WinSCP или FileZilla FTP Client, на Ubuntu — Nautilus. Классическая ошибка при этом: оставить в настройках дефолтный FTP вместо положенного SFTP. Так можно долго промучиться, не повторяйте наших ошибок.
Когда справочник перенесенных номеров под рукой, осталось поискать в нем исследуемый номер. Варианта два:
А можно разобрать номер «Дадатой»
Еще вариант — отдать номер телефона «Дадате», сервис вытащит из него полезное.
Распозна́ем оператора, исправим опечатки в номере, покажем страну, регион и часовой пояс. Наконец, отделим стационарник от мобильного