telephony/NumbersDomains

Коллекция мастер домена определяющая привязки внешних номеров к доменам кластера.

Кейс: система подключена к провайдеру PSTN. Одна учетная запись, одно многоканальное подключение, пул внешних номеров. Пул номеров распределен по дочерним доменам кластера. Подключен биллинг.

Цель 1: при взаимодействии с биллингом (для вызовов с плечом PSTN) передавать в качестве клиентского домена конкретный рабочий домен кластера, которому выделен соответствующий номер. Цель 2: оптимизировать настройку, исключив копирование и перечисление номеров во множестве правил маршрутизации и правил представления в разных доменах, сократив количество сущностей (правил маршрутизации и правил представления) до примитивного минимума.

Тип хранилища: category.

Table 1. Поля класса
Поле Описание

id

Идентификатор

domain

Имя домена в кластере

numbers

Список внешних номеров, выделенных из пула указанному домену. Каждый элемент является либо конкретным внешним номером, либо диапазоном (задается в виде "/dia/<НОМЕР>+N", где <НОМЕР> - внешний номер, а N - количество дополнительных номеров последовательно, так +10 - задает диапазон из 11 номеров).

mainNumber

Основной номер, применяемый в качестве номера источника в исходящих звонках из домена через единое подключение. Если номер не задан, то основным назначается первый номер из свойства 'numbers'.

Применяется правилом представления при маршрутизации вызова из домена в другой домен, обслуживающий подключение к PSTN. Для применения в качестве модификатора номера инициатора вызова необходимо задать макрос "{nd}".

Механизм работы

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

  1. При взаимодействии с биллингом система по локальному номеру в плече PSTN определяет связанный с ним рабочий домен, и в качестве клиентского домена в RADIUS передает именно его. По умолчанию домен, в котором настроена соответствующая учетная запись провайдера.

  2. В правилах маршрутизации в домене с учетной записью провайдера можно в качестве модификатора для правила с типом действия 'В другой домен' указать макрос "{nd}". Тогда в случае, если номер назначения, поступивший на фильтр правила, заведен в коллекции NumbersDomains, подставится соответствующий ему домен. Если номер не соответствует никакому домену, или домен не обнаружен, то будет применено следующее правило или отказ. Это позволяет сокращать настройку, не размножая ни правила, ни таблицы с номерами, а управляться одним единственным примитивным правилом.

  3. В маски-фильтры номеров в правилах маршрутизации рабочих доменов можно использовать макрос-префикс "/nd/…​" (например, "/nd/7XXXXXXXXXX") - система сначала отфильтрует, а потом проверит этот номер на соответствие домену в коллекции NumbersDomains. Помогает разграничивать направления: локальные внешние номера принять на обслуживание внутри домена, а прочие внешние номера прочие направить в домен с подключением к PSTN. Это сокращает настройку, избавляет от создания нескольких правил в каждом из рабочих доменов, перечисляющих выделенные домену номера, а обходиться одним примитивным правилом в каждом рабочем домене.

  4. В правилах нормализации можно в качестве модификатора номера источника указывать макрос "{nd}". Тогда при кроссдоменных звонках из рабочих доменов в домен с подключением к PSTN будет произведен поиск в коллекции NumbersDomains по домену источника и подставится соответствующий ему основной номер (mainNumber). Сокращает настройку, исключая копирование и перечисление номеров для каждого домена. Достаточно одного примитивного правила представления в домене с подключением к PSTN.

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