Дерево страниц

Сравнение версий

Ключ

  • Эта строка добавлена.
  • Эта строка удалена.
  • Изменено форматирование.

Оглавление

В этом обязательном элементе <result> описывается результат отработки правила маршрутизации.

Без форматирования
<result>
 Result
</result>

где

  • Result - результат выполнения правила, принимает значения: local; external; incomplete; no_route; continue.

<local>

Найден локальный абонент домена.
Номер полный, абонент найден, маршрутизатор производит поиск интерфейса абонента по его номеру и останавливает маршрутизацию, возвращая найденные данные по абонентам А и Б, интерфейсы А и Б.

Синтаксис в упрощенном варианте:

Без форматирования
<result>
 <local/>
</result>

Синтаксис для случая продолжения маршрутизации если абонент не был найден в БД локальных абонентов:

Без форматирования
<result>
 <local>
   <continue tag="not_local"/>
 <local/>
</result>

Синтаксис для поиска локального абонента по введенному атрибуту vdn:

Без форматирования
<rule name="local_calls">
  <conditions>
    <cdpn digits="1???%"/>
  </conditions>
  <result>
    <local vdn="{1,2,3,4}"/>
  </result>
</rule>

Для задания атрибута vdn используется следующий синтаксис:

Без форматирования
<local vdn="[CGPN|CDPN|RGN{DIGITS}]"/>

По умолчанию значение берется из cdpn.

где

  • tag - строковый тэг, используемый в дальнейшей обработке вызова на маршрутизации. Тэг устанавливаем обязательно, т.к. если его не задать и в маршрутизации не обработать - это приведет к зацикливанию маршрутизации.

<teleconference>

Найдено направление выхода из домена в сервис селекторной связи (относящийся к данному домену); маршрутизатор останавливает маршрутизацию, возвращая найденные данные по абоненту А, интерфейсы А и Б.

Синтаксис:

Без форматирования
<result>
 <teleconference/>
</result>

<ivr>

Найдено направление выхода из домена на сервис ivr (относящийся к данному домену); маршрутизатор останавливает маршрутизацию, возвращая найденные данные по абоненту А, интерфейсы А и Б.
Внимание: в случае выхода на ivr проверка групп доступа, режимов ограничения на абоненте А не проводится.

Синтаксис:

Без форматирования
<result>
 <ivr script="IvrScript"/>
</result>

где

  • script - имя ivr скрипта, который будет выполнен при выходе по данному правилу.

<external>

Найден интерфейс выхода из домена (транк в другой домен, транк на другую станцию и т.п.), маршрутизатор останавливает маршрутизацию, возвращая найденные данные по абонентам А и Б, интерфейсы А и Б.

при установленном флаге найден интерфейс выхода из домена (транк в другой домен, транк на другую станцию и т.п.), маршрутизатор останавливает маршрутизацию, возвращая найденные данные по абонентам А и Б, интерфейсы А и Б.

Синтаксис:

Без форматирования
<result>
   <external>
      <trunk value="Interface1" weight="50" max_load="80%"/>
      <trunk value="Interface2" weight="50" max_load="80%"/>
      <trunk value="Interface3" weight="10"/>
   </external>
</result>

где

  • trunk - описание интерфейса, соответствующего выходу из виртуальной АТС (домена). Соответствует транку на бридже, либо каком-то шлюзе. Может быть указано несколько интерфейсов, что определяет набор пучков СЛ в одном направлении.
  • value - строка с именем интерфейса
  • weight - вес интерфейса, число, опциональный параметр, который указывает приоритет занятия каналов в конкретном пучке СЛ в направлении. В правиле веса либо задаются для всех интерфейсов, либо не задаются ни для одного интерфейса. В зависимости от того заданы веса или нет определяется режим выбора интерфейса из списка (когда их больше чем 1). Если веса заданы, то в результате маршрутизации возвращается сортированный список интерфейсов с учетом этих весов (на каждую маршрутизацию при срабатывании правила производится "перевзвешивание" интерфейсов и их пересортировка). В случае если веса не указаны, то маршрутизатор возвращает список интерфейсов в том порядке как они указаны в конфигурации. Дальнейшая логика работы с этим списком реализована в ядре и заключается в том, что берется первый интерфейс из списка, производится попытка установления соединения через этот интерфейс, если она завершается по причине перегрузки интерфейса или его занятости, то производится попытка установления соединения через следующий интерфейс по списку и т.д.
  • max_load - максимальная загрузка интерфейсов (в процентах, либо в количествах вызовов), трактуется следующим образом: если указано Число% - это означает загрузку транка в процентах от максимальной загрузке (максимальная загрузка задается на уровне интерфейса). Если указано просто число - оно означает количество активных вызовов в рамках данного транка. В итоге, если на момент маршрутизации загрузка меньше, чем указана в max_load - мы идем по указанному направлению. Иначе - пытаемся взять следующее направление.
    Замечание: В случае, если параметры max_load и weight используются одновременно - то сперва выбираются направления, по которым нагрузка не превышает максимального значения - после чего вызов распределяется на основе weight. Например, имеем правило:
Без форматирования
<external>
              <trunk value="ems1" weight="50" max_load="60%"/>
              <trunk value="ems2" weight="50"/>
</external>

и максимальная нагрузка на транке ems1 выставлена в 20. Тогда, пока нагрузка на транке ems1 меньше 60% (т.е. < 12 вызовам), в данный транк может пойти вызов через данное правило. Но т.к. для транков ems1, ems2 ещё и выставлен weight - это означает, что в среднем (статистически) все вызовы будут делиться между этими двумя транками. В случае, как только нагрузка на транке стала >= 12 вызовам - все вызовы будут идти только на транк ems2.

<direction>

Найдено направление выхода из домена на направление (direction); маршрутизатор останавливает маршрутизацию, возвращая найденные данные по абоненту А, интерфейсу А и направлению.

Синтаксис:

Без форматирования
<result>
  <direction value="DirectionName"/>
</result>

где

  • value - имя направления.

ВНИМАНИЕ: Направления декларируются через /domain/<DOMAIN>/direction/

<incomplete>

Номер неполный. Маршрутизация завершается с признаком того, что был набран неполный номер, ядро продолжает накопление цифр номера.

Синтаксис:

Без форматирования
<result>
 <incomplete timeout="TimeoutInMilliseconds"/>
</result>

где

  • timeout - опциональный параметр, число, количество миллисекунд ожидания цифр номера.
Примечание
В случае использования <incomplete> необходимо в секции <conditions> явно задать <final value="false" />.

<no_route>

Ошибка маршрутизации. Маршрутизация завершается с признаком того, что набран неверный номер.

Синтаксис:

Без форматирования
<result>
 <no_route isup_cause="ISUPCause"/>
</result>

где

  • isup_cause - опциональный параметр, число, isup причины, которые будут использованы в сообщении rel.

<continue>

Продолжить маршрутизацию в текущем, либо в другом контексте данной виртуальной АТС (домена).

Синтаксис:

Без форматирования
<result>
 <continue context="ContextName" tag="Tag"/>
</result> 

где

  • context - имя контекста, в котором будет продолжена маршрутизация. Если не указан, то продолжаем в том же контексте;
  • tag - опциональное поле, возможность выставить значение параметра "tag", который далее можно использовать в условиях срабатывания правил маршрутизации при последующем анализе, дает возможность делать некое подобие условной параметрической маршрутизации.

<next>

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

Синтаксис:

Без форматирования
<result>
    <next tag="Tag"/>
</result>
  • tag — опциональное поле, возможность выставить значение параметра "tag", который далее можно использовать в условиях срабатывания правил маршрутизации при последующем анализе, дает возможность делать некое подобие условной параметрической маршрутизации.