Создание и настройка контекстов маршрутизации выполняется из под операционной системы Linux либо через Web-конфигуратор, который позволяет просмотреть текущие настройки контекстов маршрутизации, создавать, удалять и корректировать их элементы.

При работе через Web-конфигуратор не нужно создавать контекст маршрутизации в операционной системе Linux, как описано в данном разделе.

Если вы работаете в командной консоли управления 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"?>
CODE

3) Создать контекст — открывающий и закрывающий теги:

<context>
</context>
CODE

В открывающем теге контекста указать параметры xmlns:xs и xs:noNamespaceSchemaLocation со следующими значениями:

xmlns:xs="http://www.w3.org/2001/XMLSchema-instance" 
xs:noNamespaceSchemaLocation="ecss_routing.xsd"
CODE

Далее нужно указать:

  • произвольное имя контекста, которое однозначно его определяет;
  • домен, для которого создается контекст;
  • тип контекста, установить значение 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">
CODE

4) Создать правило внутри контекста — открывающий и закрывающий теги:

<rule>
</rule>
CODE

В открывающем теге правила указать имя контекста маршрутизации:

<rule name="to_intercity">
CODE

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>
CODE

6) Если необходимо создать набор операций для выполнения маршрутизации, нужно указать открывающий и закрывающий теги <actions> внутри правила и набор операций для выполнения маршрутизации.

Самые распространенные операции основаны на модификации цифр номера вызываемого и вызывающего абонентов. Для этого используются теги <cdpn/> и <cgpn/>

<actions>
 <set_options/>
 <cgpn/>
 <cdpn/>
 <restore_cgpn/>
 <restore_cdpn/>
 <calling/>
 <final/>
</actions> 
CODE

7) Определить результат выполнения маршрутизации вызова — создать открывающий и закрывающий теги <result> внутри правила и описать результаты маршрутизации.

Самые распространенные варианты маршрутизации — вызовы на локального абонента <local> и вызовы на внешнее направление <external>. При вызове на внешнее направление создается тег <direction>, в котором указывается имя интерфейса для маршрутизации вызова.

<result>
 <local/>
 <external>
  <direction/>
 </external>
 <no_route/>
 <continue/>
 <incomplete/>
</result>
CODE

Пример файла контекста маршрутизации:

<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>
CODE

Пример выбора оператора междугородней/международной связи в контексте маршрутизации:

Определение предустановленного оператора междугородней/международной связи для абонента может выполняться через префиксирование в соответствии со свойствами абонентов. В данном случае для каждого из абонентов может быть выбран свой предустановленный оператор связи.

Например, абонент набирает номер 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>
CODE