29 December 2014

Numcap — npm для определения оператора и региона по номеру телефона

JavaScriptNode.JSAsteriskDevelopment of communication systems
Тем, кто работает с телефонией, приложениями связанных со звонками и т.п. время от времени приходится сталкиваться с вопросами: «а можно определять с какого региона этот звонок?» и «а этот номер какого мобильного оператора?»

В общем-то, ответы найти легко. На сайте Федерального агентства связи есть данные о ресурсе нумерации всех операторов связи. Заходишь на сайт, скачиваешь нужный CSV файл и находишь нужную информацию.

Но ведь можно автоматизировать этот поиск? Конечно. И многие аккуратно парсят этот CSV и складывают к себе в базу данных. А затем используют. Я тоже так делаю.

Но недавно с моим коллегой мы решили немного это упаковать и сделать npm для быстрого подключения ресурса нумерации к проекту на node.js.

Ссылка на гитхаб, ссылка на npm.

Далее немного деталей.


В npm уже лежат 4 файла в JSON для быстрого поиска данных по номеру. Это преобразованные в JSON из CSV данные с сайта Федерального агентства связи РФ. Имеют ту же структуру, что и CSV: код, диапазон номеров, количество номеров в диапазоне, название оператора и регион.

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

Пример использования numcap
var numcap = require('numcap');

var finder = new numcap();

finder.getData("8 (391) 274-50-00", function (err, data) {
    console.log(data);
});

/*
Output data object:
 { code: '391',
  begin: '2745000',
  end: '2745399',
  capacity: '400',
  operator: 'Мобилон Телекоммуникации',
  region: 'Красноярск |Красноярский край' }
*/


Утилита ncli.js
В комплекте идет консольная утилита ncli.js, которая может пригодиться в следующих случаях.

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

2. Перенос данных в Mongo DB. Использование файлов медленнее, чем использование базы данных mongo, поэтому данные JSON файлов можно перенести в mongo.

Описание опций утилиты есть в readme проекта.

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

P.S. Во время подготовки утилиты по скачиванию CSV файлов мой коллега Александр заметил, что в паспорте открытых данных неверно указаны ссылки на эти данные. Федеральное агентство связи достаточно оперативно внесло корректировки в паспорт открытых данных по ресурсу нумерации.
Tags:телефонияномера
Hubs: JavaScript Node.JS Asterisk Development of communication systems
+10
19.4k 147
Comments 13
Top of the last 24 hours