Правило переадресации (redirectrule)

Описание

Правило переадресации, назначаемое для номеров (учетных записей SIP-пользователей).
Применяется сервером роли B2BUA при совершении вызовов на внутренние номера SIP-пользователей.

Включает в себя несколько видов маршрутизации: абсолютная, по отсутствию зарегистрированных устройств, и по различным неудачным ответам от вызываемых устройств.

Возможно последовательное применение каскадной переадресации A → B → C → D.

Поддерживается фильтрация по номеру инициатора вызова.

Ограничения

  • Коллекция недоступна в мастер-домене.

  • При использовании учетной записи SIP-пользователя в очередях в качестве ресурса одновременная переадресация может вредить принципам очереди.

  • Не касается переадресаций, настроенных на самом SIP-устройстве и инициируемых получением SIP-ответов с кодами `3xx`.

Поля

Структура сущности
{
  "id": uuid,
  "type": str,
  "filter_number": str,
  "tran_number": str,
  "priority": int,
  "enabled": intbool,
  "schedule": str,
  "periods": array<object>,
  "opts": {
    "title": str,
    "comment": str
  },
  "ext": {
    "ct": date,
    "lwt": date
  }
}
Table 1. Поля
Спецификация Описание

Поле: id
Режим: inout
Тип: uuid
По умолчанию: generated

Идентификатор. Может быть задан при создании, иначе генерируется системой.

Поле: type
Режим: in
Тип: str
По умолчанию: required

В зависимости от выбранного типа правило может применяться при различных условиях и в различных точках процесса вызова устройств.
Правила сопоставления конкретных SIP-ответов с типами условий применения правил переадресации происходит в общих настройках домена.
В таблице приведено соответствие, применяемое по умолчанию.

В случае вызова нескольких устройств учетной записи параллельно, при неудачном исходе из всех полученных кодов SIP-ответов выбирается так называемый наилучший результат: 603, 486, 6xx, 5xx, 4xx.

Поле: filter_number
Режим: in
Тип: str
По умолчанию: required

Маска-фильтр номера, которому принадлежит правило переадресации.
Это может быть напрямую указанный номер учетной записи SIP-пользователя – в этом случае правило индивидуального применения.
Но также может быть указана маска поискового фильтра.
Режимы работы фильтра.

Поле: filter_fromnumber
Режим: in
Тип: str
По умолчанию: required

Маска-фильтр номера, с которого осуществляется вызов.
Режимы работы фильтра.

Поле: tran_number
Режим: in
Тип: str
По умолчанию: required

Модификатор номера-назначения переадресации.
По умолчанию любое назначенное в поле текстовое значение применяется без модификации, однако если в нем присутствует специальное форматирование, то результат может быть динамически изменен.
Режимы работы модификатора.

Поле: priority
Режим: in
Тип: int
По умолчанию: required

Приоритет. Меньшее значение означает более высокий приоритет.

Поле: enabled
Режим: in
Тип: intbool
По умолчанию: required

Выключатель. Правило применяется только если оно включено.

Поле: schedule
Режим: in
Тип: str
По умолчанию: "all"

Определяет расписание активности правила.
Рабочее/нерабочее время определяется в настройках текущего домена, либо в родительских доменах вплоть до мастер-домена.
Расписание работы

Поле: periods
Режим: in
Тип: array<object>
По умолчанию: empty

Интервал активности в течение недели.
Применяется в режиме schedule = custom.
Каждый элемент списка охватывает определенный отрезок внутри недели: от времени в конкретный день недели до времени в другой конкретный день недели.
На основе совокупности этих отрезков формируется общее расписание.
Элемент списка еженедельного расписания.

Поле: opts
Режим: in
Тип: object
Составное поле

Поле: opts.title
Режим: in
Тип: str
По умолчанию: empty

Произвольный заголовок

Поле: opts.comment
Режим: in
Тип: str
По умолчанию: empty

Произвольный комментарий

Поле: opts.tab
Режим: in
Тип: array<object>
По умолчанию: []

Табличные данные для использования фильтров в рамках одной сессии поиска правила.
Каждый объект в списке содержит произвольные поля, которые могут использоваться в маске в виде строки {tab:some_field}.
Подробнее в разделе Режимы работы фильтра, пункт 'Таблица'.

Поле: ext
Режим: inout
Тип: object
Составное поле

Позволяет расширять состав произвольными ключами и значениями

Поле: ext.ct
Режим: out
Тип: date
По умолчанию: generated

Время создания объекта

Поле: ext.lwt
Режим: out
Тип: date
По умолчанию: generated

Время последней модификации объекта

Типы условий применения правил переадресации

Table 2. Типы условий применения правил переадресации
Значение Описание

"absolute"

Правило переадресации действует всегда. Применяется до начала вызова.

"unregistered"

Правило переадресации действует в случае, если учетная запись не имеет зарегистрированных устройств на момент вызова. Применяется до начала вызова.

"busy"

Правило переадресации действует после получения ответа, сопоставленного в общих настройках с результатом Занято. По умолчанию код SIP-ответа 486 Busy Here.

"timeout"

Правило переадресации действует после получения истечения допустимого времени вызова (по умолчанию 30 секунд, или установленное в настройках учетной записи SIP-пользователя), либо получении ответа 408 Timeout.

"decline"

Правило переадресации действует после получения ответа, сопоставленного в общих настройках с результатом Отклонено. По умолчанию код SIP-ответа 603 Decline.

"dnd"

Правило переадресации действует после получения ответа, сопоставленного в общих настройках с результатом DND (Do Not Disturb). По умолчанию коды SIP-ответов 404 Not Found, 480 Temporary Unavailable.

"error"

Правило переадресации действует после обнаружения ошибок в ходе вызовов.

"other"

Правило переадресации действует после получения SIP-ответов, не сопоставленных с другими типами результатов.

Режимы работы фильтра

Table 3. Режимы работы фильтра
Режим Описание

Посимвольный

Подвергаемое проверке соответствия значение посимвольно проводится через фильтр.
Могут применяться следующие спец-символы:

  • X – любой символ;

  • * – все оставшиеся символы;

  • ? - любой символ (если используется для фильтра по доменным именам, то любой символ кроме точки - разделителя доменных имен).

  • $ – любое количество символов до ближайшей точки.

При необходимости указать один из служебных символов как целевой, его следует заключать в квадратные скобки, например [X].

Например, XXX – любое трехсимвольное значение.

Таблица

Может применяться подстрока {tab:…​}. С помощью нее можно выделить группу символов в проверяемом значении и сопоставить их с таблицей, встроенной в правило (opts.tab).
Например, {tab:a} - выделение подстроки и сопоставление ее с полем a всех объектов/строк в таблице.
Таблица служет связке нескольких полей фильтров и модификаторов. На основании последовательной проверки фильтров в таблице остается меньшее количество строк с учетом обнаруженных совпадений.
Первая из оставшихся строк служит для применения в модификаторах. При условии что в таблице не осталось строк - правило отклоняется.
Захват символов из проверяемого значения на основе маски может происходить автоматически, либо со строгим указанием длины подстроки:

  • {tab:KEY} - Автоматический захват из проверяемого значения.

  • {tab:KEY:LENGTH} - Захват указанного количества символов из проверяемого значения.

В качестве значений полей в таблице могут применяться:

  • константы;

  • регулярные выражения (для этого необходимо задать значение в формате /reg/EXPRESSION, например /reg/^1[1-4]$);

  • сопоставления с другими полями таблицы (для этого необходимо задать значение в формате /tab/FIELD, например /tab/a). Режим используется для связывания значений различных полей. Например, чтобы разрешить звонки только на собственный ящик голосовой почты. Необходимо строго соблюдать порядок связывания: если поле таблицы, на которое производится ссылка, еще не проверялось и не было заполнено реальным значением другого поля сущности, то сопоставление не пройдет. Порядок проверки полей сущности: filter_number, filter_fromnumber.

  • любое значение, применяемого без регулярного выражения (для этого необходимо задать /any). Режим полезен исключительно при организации прямых сопоставлений со значениями других полей без дополнительных фильтров.

Применение табличного модификатора допускается в комбинации с другими управляющими командами посимвольного режима.
Допускается кратное указание полей в одном модификаторе, повторение, указание несуществующих полей.

Например, {tab:a:3}XXXXX{tab:b} - позволяет выделить в номере 3-символьный код города и сопоставить с полем a в таблице, и одновременно выделить хвост начиная с 9 символа и сопоставить с полем b таблицы.

Regex

К исходному значению применяется шаблон Pattern.

Структура значения regex-шаблона:
/reg/Pattern1.

Например,- значение: "302"
- маска: "/reg/0"
- результат: true.

  • значение: "302"

  • маска: "/reg/^0$"

  • результат: false.

  • значение: "302"

  • маска: "/reg/^302$"

  • результат: true.

  • значение: "302"

  • маска: "/reg/^(301|302|305)$"

  • результат: true.

При формировании шаблонов Pattern могут применяться все стандартные правила регулярных выражений.

Диапазон

Подвергаемое проверке соответствия значение - целое числовое и входит в указанный диапазон числовых значений.

Структура значения dia-шаблона:
/dia/FromValue+N - подпадают под шаблон N+1 значений от FromValue до FromValue+N.

Например,- значение: "302"
- маска: "/dia/300+10"
- результат: true.

Режимы работы модификатора

Table 4. Режимы работы модификатора
Режим Описание

Посимвольный

Исходное значение посимвольно с накоплением проходит через указанный модификатор.
Посимвольный модификатор не предусматривает подстановки значений, в качестве результата. Указанное значение воспринимается как константа. Поддерживаются символы 0-9,*,#.

Таблица

Может применяться подстрока {tab:…​}. С помощью нее в модифицируемое значение можно подставить подстроку из указанного поля таблицы (opts.tab).
В качестве источника выступает первая оставшаяся после фильтрации строка в таблице.
Например, {tab:ссс} - подстановка в соответствующую позицию итогового результата значения из поля ccc первой оставшейся строки в таблице.
Если в первой строке/объекте указанное поле отсутствует, то подставляется пустое значение.

Таблица служет связке нескольких полей фильтров и модификаторов. На основании последовательной проверки фильтров в таблице остается меньшее количество строк с учетом обнаруженных совпадений.
Первая из оставшихся строк служит для применения в модификаторах. При условии, что в таблице не осталось строк - правило отклоняется на этапе проверки фильтров.

Применение табличного модификатора допускается в комбинации с другими управляющими командами посимвольного режима.
Допускается кратное указание полей в одном модификаторе, повторения, указания несуществующих полей.

Regex

К исходному значению применяется шаблон Pattern с опциями Opts, и обнаруженный(-ые) блок(-и) заменяется(-ются) на шаблон Replace.
Результат может снова быть подан на следующую операцию Regex-модификации, и так далее конечное число раз.

Общая структура значения regex-модификатора:
/reg/Pattern1/Replace1/Opts1 /reg/Pattern2/Replace2/Opts2 …​.

Опции могут быть опущены, либо содержать любую комбинацию из символов:

  • i – case-insensitive

  • g – global.

Например,- значение: "qwerty,qwerty"
- модификатор: "/reg/t/E/g /reg/qwer/a/"
- результат: "aEy,qwerEy".

При формировании шаблонов Pattern и Replace могут применяться все стандартные правила регулярных выражений, включая группы захвата, поиск назад, подстановку именованных групп и т.д.

Расписание работы

Table 5. Расписание работы
Значение Описание

"all"

Правило доступно для применения всегда

"disabled"

Правило недоступно для применения никогда

"work"

Правило доступно для применения только в рабочее время

"non-work"

Правило доступно для применения только в нерабочее время

"custom"

Правило определяет индивидуальное расписание доступности в поле periods правила

Элемент списка еженедельного расписания

Table 6. Элемент списка еженедельного расписания
Поле Значение Описание

daystart

17

День недели начала отрезка (1 – пн, 7 – вс)

daystop

17

День недели конца отрезка (1 – пн, 7 – вс)

timestart

01440

Время начала отрезка внутри дня в минутах

timestop

01440

Время конца отрезка внутри дня в минутах

См. также

Логические роли

  • b2b проводит маршрутизацию и применение правил переадресации.

  • mdc и sdc производит поиск правил переадресации.