Алгоритм определения ресурсов

 

Алгоритм поиска ресурса класса телефония.

1.Определяем локальный префикс (LOCAL_PREFIX), т.е. префикс, используемый в зависимости от региона, например, в Санкт-петербурге - 812. Локальный префикс извлекается из справочника типов направлений для типа направления "Город", первая цифра не используется, поэтому в справочнике нужно чтобы был заведен полный префикс, т.е. в нашем случае 8812. Локальный префикс используется, если ресурсы заводятся без него, а в первичной информации станция может выдавать имена ресурсов как с локальным префиксом, так и без него.

 

2.Определяем разделитель, т.е. символ который разделяет имя транковой группы (транк, транзитный транк) и расширения (обычно номер телефона на с которого звонят), например 10:8123147694, где 10 - транковая группа ":" - разделитель, а 8123147694 - номер телефона с которого произошел вызов. Разделитель необходим чтобы искать отдельно по расширению и по транку.

 

3.При поиске по исходящему ресурсу дополнительно передается набранный номер (для входящей линии номер может храниться в виде расширения, а для исходящей линии в отдельном поле), если длина набираемого номера 3 или 4, то это внутренний номер станции, поэтому если указан для источника префикс станции, то прибавляем к нему номеру ресурса префикс станции и будем считать уже номер с префиксом.

 

4.Далее последовательный поиск (с учетом источника, диапазона действия, активности, уточнения контракта), если найдем, то выходим из цикла поиска:

Поиск на полное соответствие имени ресурса с тем что заведено в базе.

Если поиск исходящего ресурса, то поиск по ресурсу без расширения (если есть) + телефон, например WIRE_WITHOUT_EXT:PHONE

Если в ресурсе найдено расширение, то ищем по расширению (если указан параметр в источниках "Поиск ресурса по расширению")

Если не найдено расширение, то ищем по:

oпрефикс станции + имя ресурса;

oпо номеру телефона (если номер = 4 и направление вх.);

oимя ресурса + флаг - имеет расширение.

Если найдено расширение, то ищем по ресурсу без расширения с флагом имеет расширение.

 

Если для исходящего ресурса или в настройках указано Поиск по телефону, то делаем дополнительный поиск, если не нашли, или нашли ресурс типа "Транк" или "Транзитный транк". Дополнительно ищем (если не найдем, то будем пользоваться тем, что нашли) по ресурсу или ресурсу без расширения + телефон среди ресурсов Телефон и линия с учетом диапазонов.