Создание и настройка контекстов маршрутизации выполняется из под операционной системы 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.11 Детальное описание конфигурационного файла маршрутизации.
Порядок создания файла контекста маршрутизации
Для создания контекста маршрутизации необходимо:
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.11 Приложение А. Набор параметров алиасов), например 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>