Регион и оператор по номеру телефона
— Ваш номер не отвечает!
— Что, совсем?
— Нет, первые две цифры ответили, а остальные молчат!
Определить оператора, регион, часовой пояс
по номеру телефона
Информация о номерах и операторах берётся с официальных ресурсов Россвязи и её актуальность проверяется раз в сутки в 4:00 по Москве ежедневно! В базе почти 2000 операторов фиксированной, сотовой, спутниковой связи, а также VoIP-операторов.
Определить по номеру телефона
Актуальность данных: 14.10.2024 05:10:03
Лимит через форму на сайте: 100 запросов в сутки.
НЕ ДЛЯ КОММЕРЧЕСКОГО ИСПОЛЬЗОВАНИЯ
Данный сервис не предназначен для коммерческого использования. Он является бесплатным, но имеет некоторые ограничения, предоставляется AS IS и является тестовым со всеми вытекающими последствиями.
Для коммерческого использования сервис предоставляется на других ресурсах. По вопросам платного использования обращаться по контактам внизу страницы. Бесплатная версия имеет ограничения.
Чат-бот определения региона и оператора по номеру телефона для Telegram
API для определения оператора и региона
по номеру телефона
Чтобы использовать данный API по определению оператора и региона по номеру телефона, надо отправить вот такой запрос:
https://api.regius.name/iface/phone-number.php?phone=9123332211&token=xxxxxxxxxx,
где 9123332211 - 10-ти значный номер телефона, xxxxxxxxxx - токен, который генерируется при регистрации. За запросы без регистрации блокировка от суток.
В ответ сервер отдаст ответ в JSON-формате:
{"phone":"9123332211","company":"ПАО \"Мобильные ТелеСистемы\"","brand":"МТС","mnc":"01","region":"Кировская обл.","kladr":"43","gibdd":"43","utc":"+3","qty":48,"limit":2000,"answer":"ok"}, где
phone - нормализованный номер телефона по которому происходит поиск
company - оператор связи
region - регион, где выдан этот номер
brand - бренд оператора связи (если есть)
mnc - код мобильной сети (только для сотовых операторов)
kladr - код КЛАДР
gibdd - код региона ГБДД
utc - часовой пояс (смещение относительно UTC)
qty - количество запросов за сегодня
limit - лимит количества запросов в день
answer - ответ сервера "ok" или текст ошибки
.
Пример определения оператора и региона на PHP
// Устанавливаем переменные
$url = "https://api.regius.name/iface/phone-number.php";
$params = array(
"phone" => "9123332211",
"token" => "**********************************"
);
// Запрос
$ch = curl_init();
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_TIMEOUT, 5);
$query = http_build_query($params);
curl_setopt($ch, CURLOPT_URL, $url.'?'.$query);
$output = curl_exec($ch);
//$info = curl_getinfo($ch);
$errno = curl_errno($ch);
curl_close($ch);
// Обработка ответа сервера
if( $output === false || $errno != 0 ){
// Оработать ошибку
} else {
$data = json_decode($output,true);
if ($data['answer']!='ok'){
// Обработать ошибку
echo $data['answer']."\r\n";
}else{
print_r($data);
}
}
Определение оператора и региона по номеру телефона в Asterisk
Для работы астериска со скриптами существуют библиотеки pyagi, phpagi, Perl Asterisk::AGI. Можно использовать их.
Но для простой записи в базу данных это всё лишнее.
Приведу небольшой пример, который записывает код региона и мобильного оператора (если звонок с сотового) звонящего в БД.
Нам необходимо создать таблицу, где будут храниться уникальный код звонка, код региона и код оператора. Нужен скрипт, который будет записывать данные. И надо настроить вызов скрипта с нужными параметрами в Астериске.
Скрипт будем вызывать после завершения звонка.
Данная конфигурация тестировалась на FreeBSD 12.1, Asterisk 16.13.0, Python 3.7.9
CREATE TABLE `asterisk`.`callingregion`
(`uid` VARCHAR(32) NOT NULL , `region` VARCHAR(2) NOT NULL , `mnc` VARCHAR(2) NOT NULL, INDEX(`region`), INDEX(`mnc`), UNIQUE (`uid`))
ENGINE = InnoDB;
скрипт /usr/local/share/asterisk/agi-bin/callregion.py:
#!/usr/local/bin/python3
import urllib.request, json, sys, pymysql
token ='98yasdfysa8y8lnkn$27sdskldsk'
data = json.loads(url.read().decode())
if data['answer'] == 'ok':
con = pymysql.connect('localhost', 'user', 'password', 'database')
cur = con.cursor()
cur.execute("INSERT INTO callingregion (uid, region, mnc) VALUES ('"+sys.argv[2]+"', '"+data['kladr']+"', '"+data['mnc']+"')")
con.commit()
cur.close()
в конце нужных екстеншенов добавляем строку:
exten => h,1,AGI(callregion.py,${CALLERID(num)},${UNIQUEID})
Выбрать поля "Время звонка", "от кого", "кому", "регион" можно этим запросом:
SELECT DATE_FORMAT(`cdr`.`calldate`,'%d.%m.%Y %h:%i:%s') AS dt, `cdr`.`src`, `cdr`.`dst`, `callingregion`.`region` FROM `cdr`
LEFT JOIN `callingregion` ON `callingregion`.`uid` = `cdr`.`uniqueid`
ORDER BY `dt` ASC LIMIT 1,50
Отправить сообщение оператору о звонящем
#!/usr/local/bin/python3
import urllib.request, json, sys, pymysql
token ='98yysa8y8lnkn$27sdskldsk'
with urllib.request.urlopen("https://api.regius.name/iface/phone-number.php?phone="+sys.argv[1]+"&token="+token) as url:
data = json.loads(url.read().decode())
if data['answer'] == 'ok':
print('EXEC SET message="Calling UTC'+str(data['utc'])+' region '+str(data['kladr'])+' '+str(data['region'])+' '+str(data['brand'])+'"')
else:
print('EXEC SET message='+data['answer'])
В астериске в план дозвона после Answer необходимо добавить
exten => s,n,AGI(getregion.py,${CALLERID(num)})
exten => s,n,JabberSend(asterisk,operator@domen.name,${message})
Использовать ли сторонние библиотеки (pyagi, phpagi и т.п.) решать вам. Многие библиотеки давно уже не обновляются и возможно, что настанет момент, когда вы обновите своё ПО или систему, и у вас всё перестанет работать. Так что, на мой взгляд лучше использовать стандартные средства.Если возникнут какие-то сложности с интеграцией, пишите (в комментариях или на e-mail).
Ограничения
Ограничения в бесплатной версии
С авторизацией (используя токен)* - 100 запросов в день. Не более 5 запросов в секунду.Через форму на сайте - 100 запросов в день с одного IP-адреса. Не более 1 запроса в 5 секунд.
Telegram бот - без ограничений. Блокируются запросы от других ботов
* - без токена использовать API недопустимо (считается попыткой взлома сервиса, DDoS-атакой и т.п.).
Ограничения в платной версии
Не более 5 запросов в секунду.
Блокировки не производятся. Пользователю предоставляется статистика нарушений, для принятия мер по их устранению.
Блокировки за нарушения в бесплатной версии
За злостные попытки нарушения правил происходит блокировка:
- российские IP-адреса - по IP-адресу
- зарубежные IP-адреса - блокировка всей подсети провайдера
Блокировки происходят автоматически. В первый раз на 24 часа, во второй раз на 48 часов и т.д.
Чтобы избежать блокировку всегда проверяйте значение "answer", если оно не равно "ok", отправляйте себе уведомление со значением переменной "answer". В нём содержатся ошибки, которые приведут к блокировке. Если ошибки не устраняются, происходит автоматическая блокировка.
Стоимость
Возможны тестовый период, индивидуальные договорённости и помощь в интеграции с вашими системами. Контакты внизу страницы.
Запросов в день | до 100 | до 500 | до 1500 | до 5000 | до 10000 | до 30000 |
Запросов в мес* | 3000 | 15000 | 45000 | 150000 | 300000 | 900000 |
Цена, руб/мес | бесплатно | 1 000 | 2 000 | 5 000 | 7 500 | 10 000 |
Цена, коп/запрос* | бесплатно | 6,7 | 4,4 | 3,3 | 2,5 | 1,1 |
Поддержать проект
Выбирайте сумму помощи по своему желанию, мы будем рады любой
Комментарии (1)