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