РосСвязь на своем сайте предоставляет реестр российских номеров с привязкой к регионам, оператора, за которыми закреплены данные номера. Данная база периодически обновляется, при перераспределении номеров. В рамках релиза 3.14 была сделана возможность на уровне маршрутизации / модификации номеров вызова воспользоваться данной базой. Имеется возможность изменять отображаемое имя абонента А, Б на основе информации из данной базы. Маршрутизировать вызовы на основе оператора/региона / города абонента А, Б.

Для того, чтобы воспользоваться данным функционалом, необходимо настроить локальный кеш данной базы локально на каждом из хостов ECSS-10, на котором запущена нода DS.

Настройка кеша российского плана нумерации

Для обновления кеша российского плана нумерации был создан systemd-сервис ecss-rf-numbering-plan.service. При запуске сервис скачивает из internet российский план нумерации, разбирает его и записывает во внутреннюю базу номеров. Кодировка текста - UTF-8. После чего сервис останавливается, и сам не запускается. Для того, чтобы сервис автоматически обновлял кеш, есть таймер ecss-rf-numbering-plan.timer. По умолчанию он выключен, но его можно настроить обновлять кеш (например раз в неделю/месяц).

Конфигурация сервиса ecss-rf-numbering-plan.service

Конфигурация сервиса ecss-rf-numbering-plan.service располагается по пути /etc/ecss/ecss-rf-numbering-plan.conf

# Каталог, содержащий планы нумерации
# Path to directory, that contains files with numbering scheme
#PATH_SCHEMES=

# URL-адрес для автоматической загрузки планов нумерации
# URL for downloading numbering schemes
URL_NUMBERING_SCHEME="https://rossvyaz.ru/data"

# Список планов нумерации, требуется только при загрузке
# Names of numbering schemes, used for downloading
#NAMES_NUMBERING_SCHEME=
NAMES_NUMBERING_SCHEME=ABC-3xx.csv,ABC-4xx.csv,ABC-8xx.csv,DEF-9xx.csv

# Путь для записи базы данных
# Path to write database
SQL_DB=/var/lib/ecss/routing/rf-numbering-plan.db

# Путь для записи логов, если не задан логи пишутся только в stdout
# Path to write logs, if not set, then logs write only in stdout.
LOGS=/var/log/ecss/rf-numbering-plan.log
CODE
  • Если при выполнении должны использоваться уже загруженные планы нумерации, то в PATH_SCHEMES требуется задать путь до каталога с ними. В этом каталоге должны находиться только файлы с планами нумерации!
  • URL_NUMBERING_SCHEME URL адреса, для загрузки планов.
  • NAMES_NUMBERING_SCHEME - список название планов нумерации. Названия должны быть перечислены через запятую без пробелов.
    Загрузка осуществляется, используя комбинацию URL адреса и названий (пример: https://rossvyaz.ru/data/{ABC-3xx.csv,ABC-4xx.csv,ABC-8xx.csv,DEF-9xx.csv})
  • LOGS - путь до файла для записи логов. Логи записываются только при работе через systemd-сервис, либо при запуске от root. При повторном запуске логи перетираются. Также все логи пишутся в stdout.

Запуск сервиса по таймеру

Для запуска через таймер также необходимо отредактировать ecss-rf-numbering-plan.timer (/lib/systemd/system/ecss-rf-numbering-plan.timer). В нём необходимо настроить время и период запуска сервиса. По умолчанию для таймера установлено следующее значение: первого числа каждого месяца в 00:00.

Единовременный запуск сервиса из консоли

ecss-rf-numbering-plan [<SQL_DB>] [--scheme <PATH_SCHEMES>]
CODE

Если SQL_DB не указан в конфигурационном файле, то его необходимо передать при запуске.

Особенности при парсинге номеров

При обработке используются следующие правила:

  • удаляются все лишние пробелы;
  • вокруг символов ; - | удаляются все пробелы;
  • все приводится в верхний регистр;
  • буква "ё" заменяется на "е";
  • город, г. о. (городской округ), г.п. (городское поселение) -> г.;
  • область -> обл.;
  • район/улус -> р-н;
  • автономный округ, автономная область -> АО;
  • республика и р-н стоят до названия;
  • край, обл. и АО - после названия;
  • полные версии форм организация: ОАО, ООО, ПАО, АО, ЗАО, ФГУП, ФКП, МБУ - приводятся к сокращенному виду.

Также есть список, по которому обрабатываются какие-либо нестандартные значения:

  • нас.пункт без региона;
  • несколько регионов/нас.пунктов;
  • федеральные округа, РФ;
  • другое гос-во (Байконур/Казахстан );
  • различные ошибки/опечатки (находил как в названиях нас.пунктов/районов, так и у операторов) и др.

Если после обработки будут обнаружены невалидные значения:

  • населенный пункт без указания региона;
  • несколько населенных пунктов или регионов;

то появятся соответствующие сообщения.