Создание и настройка контекстов маршрутизации выполняется из под операционной системы Linux либо через Web-конфигуратор, который позволяет просмотреть текущие настройки контекстов маршрутизации, создавать, удалять и корректировать их элементы.
Если вы работаете в командной консоли управления CLI, то для создания контекстов маршрутизации нужно выйти из командной консоли управления CLI, используя команду exit.
При установке системы ECSS-10 автоматически прописывается путь по умолчанию, по которому будут располагаться контексты маршрутизации /var/lib/ecss/routing/ctx/src/<DOMAIN>/ .
Для каждого контекста маршрутизации в папке /var/lib/ecss/routing/ctx/src/<DOMAIN>/ необходимо создать отдельный файл. Описание файла контекста маршрутизации выполняется с использованием языка разметки XML.
Контекст маршрутизации описывается в файле тегом <context> и содержит одно или несколько правил <rule>. Правила включают в себя описание условий срабатывания <conditions>, набор операций для выполнения маршрутизации <actions> и результат выполнения маршрутизации вызова <result>.
Условия срабатывания <conditions> определяют, по каким правилам будет осуществляться маршрутизация - по номеру вызывающего абонента, по номеру вызываемого, по дню недели и другие правила.
Набор операций для выполнения маршрутизации <actions> включает в себя модификацию номеров вызываемого, вызывающего абонентов, установка флага "конец набора" и другие операции.
Результатом выполнения маршрутизации вызова <result> может быть маршрутизация внутри виртуальной АТС, маршрутизация на встречную АТС, неверная маршрутизация и другие варианты.
Все возможные варианты условий срабатывания, наборов операций и результатов выполнения приведены в разделе:
3.14.3 Детальное описание конфигурационного файла маршрутизации.
Порядок создания файла контекста маршрутизации
Для создания контекста маршрутизации необходимо:
1) Создать файл с расширением xml.
2) Указать в начале файла тег - версию xml:
<?xml version="1.0"?>
3) Создать контекст - открывающий и закрывающий теги:
<context> </context>
В открывающем теге контекста указать параметры xmlns:xs и xs:noNamespaceSchemaLocation со следующими значениями:
xmlns:xs="http://www.w3.org/2001/XMLSchema-instance" xs:noNamespaceSchemaLocation="ecss_routing.xsd"
Далее нужно указать:
- произвольное имя контекста, которое однозначно его определяет;
- домен, для которого создается контекст;
- тип контекста, установить значение local;
- правило создания плана нумерации, установить значение:
- auto - для контекстов, использующий протокол H.248/Megaco;
- none - для контекстов, не использующих протокол H.248/Megaco.
Пример открывающего тега контекста:
<context xmlns:xs="http://www.w3.org/2001/XMLSchema-instance"
xs:noNamespaceSchemaLocation="ecss_routing.xsd"
name="some_name"
domain="some.domain"
type="local"
digitmap="auto">
4) Создать правило внутри контекста - открывающий и закрывающий теги:
<rule> </rule>
В открывающем теге правила указать имя контекста маршрутизации:
<rule name="to_intercity">
5) Создать условие срабатывания правила - открывающий и закрывающий теги <conditions> внутри правила и условия срабатывания правила.
Самые распространенные условия основаны на анализе цифр номера вызываемого и вызывающего абонентов. Для этого используются теги <cdpn/> и <cgpn/> с параметром маски номера digits="Digits". Префиксная часть правила:
- "?" – один любой не пустой элемент номера (цифры 0-9 или буквы A, B, C, D, E, F);
- "0"-"9" – цифры от 0 до 9;
- "A"-"D" – буквы A, B, C, D;
- "E" – символ *;
- "F" - символ #;
- "( )" - диапазон или перечисление. Диапазон указывается через "-", перечисление через ",". Например, (1-6) - диапазон, (1,3,9) - перечисление;
- "%" - 0 или несколько элементов номера.
<conditions> <cdpn/> <cgpn/> <calling/> <time/> <date/> <weekday/> <tag/> <final/> <cause/> </conditions>
6) Если необходимо создать набор операций для выполнения маршрутизации, нужно указать открывающий и закрывающий теги <actions> внутри правила и набор операций для выполнения маршрутизации.
Самые распространенные операции основаны на модификации цифр номера вызываемого и вызывающего абонентов. Для этого используются теги <cdpn/> и <cgpn/>
<actions> <set_options/> <cgpn/> <cdpn/> <restore_cgpn/> <restore_cdpn/> <calling/> <final/> </actions>
7) Определить результат выполнения маршрутизации вызова - создать открывающий и закрывающий теги <result> внутри правила и описать результаты маршрутизации.
Самые распространенные варианты маршрутизации - вызовы на локального абонента <local> и вызовы на внешнее направление <external>. При вызове на внешнее направление создается тег <direction>, в котором указывается имя интерфейса для маршрутизации вызова.
<result> <local/> <external> <direction/> </external> <no_route/> <continue/> <incomplete/> </result>
Пример файла контекста маршрутизации:
<context xmlns:xs="http://www.w3.org/2001/XMLSchema-instance"
xs:noNamespaceSchemaLocation="ecss_routing.xsd"
name="ctx_city_local"
domain="d.city"
type="local"
digitmap="auto">
<rule name="to_intercity">
<conditions>
<cdpn digits="8%"/>
<cgpn digits="%"/>
</conditions>
<actions>
<cdpn digits="{%}" nai="nationalNumber"/>
<cgpn digits="383{%}"/>
</actions>
<result>
<continue context="ctx_intercity"/>
</result>
</rule>
<rule name="local_subscribers1">
<conditions>
<cdpn digits="332???"/>
</conditions>
<result>
<local/>
</result>
</rule>
<rule name="local_subscribers2">
<conditions>
<cdpn digits="77???"/>
</conditions>
<result>
<local/>
</result>
</rule>
<rule name="external_subscribers">
<conditions>
<time value="9:00 - 18:00"/>
<date value="*.*.* - *.*.*"/>
<weekday value="1,2,3,4,5"/>
<cdpn digits="200??"/>
</conditions>
<result>
<external>
<direction value="port_sipt1"/>
<direction value="port_sipt2"/>
</external>
</result>
</rule>
</context>
Пример выбора оператора междугородней/международной связи в контексте маршрутизации:
Определение предустановленного оператора междугородней/международной связи для абонента может выполняться через префиксирование в соответствии со свойствами абонентов. В данном случае для каждого из абонентов может быть выбран свой предустановленный оператор связи.
Например, абонент набирает номер 84951234567. Необходимо выполнить подмену номера в соответствии с заданным кодом провайдера. Для этого используется параметр [calling.provider], назначенный в наборе операций для выполнения маршрутизации <actions>.
Если код провайдера определен в свойствах абонента (настройка свойств абонента рассматривается в разделе Команды управления конфигурацией алиасов в рамках домена, список параметров приведен в 3.14.3 Приложение А. Набор параметров алиасов), например provider = 1501, то в результате на АМТС будет набран номер 815014951234567.
Пример правила маршрутизации с использованием свойств абонента А при модификации номеров:
<rule name="to_intercity">
<conditions>
<calling access_intercity="true"/>
<cdpn digits="8%"/>
</conditions>
<actions>
<cdpn digits="8[calling.provider]{%}"/> % Вместо [calling.provider] будет выбран номер оператора связи, прописанный в свойствах абонента
</actions>
<result>
<external>
<direction value="to_intercity"/>
</external>
</result>
</rule>