Дерево страниц
Перейти к концу метаданных
Переход к началу метаданных

В этом обязательном элементе <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", который далее можно использовать в условиях срабатывания правил маршрутизации при последующем анализе, дает возможность делать некое подобие условной параметрической маршрутизации.
  • Нет меток