3.14.4 Правила модификации сигнализации SIP
Описание
SIP-адаптер системы ECSS-10 относится к типу B2BUA. В таком случае вызов, установленный через ECSS-10, разбивается на два плеча: входящее для вызова и исходящее. Получается два участка обработки сигнализации, на каждом из которых SIP-адаптер ECSS-10 работает как независимый агент. Функции, описанные в данном разделе, позволяют определить специфичные заголовки SIP-сообщений, которые необходимо протранслировать в исходящее плечо. Трансляция заголовков может осуществляться без изменений либо с модификацией.
В системе реализовано:
- транзит всего RURI, транзит только хост части RURI, транзит заголовков;
- исключение или модификация принятых заголовков.
Транзитные функции
Настройка выполняется для интерфейса входящего плеча, который принимает SIP-запрос или SIP-ответ, таким образом, транзит настраивается только для входящих SIP-сообщений.
Транзит параметров для SIP-транков настраивается командой:
domain/<DOMAIN>/trunk/sip/set <GROUP_NAME> <IFACE_NAME> sip-transit set <PARAMETERS>
Транзит параметров для SIP-абонентов настраивается командой:
domain/<DOMAIN>/sip/user/set *|<GROUP_NAME> [*|<IFACE_NAME>] sip-transit set <PARAMETERS>
где
<GROUP_NAME> - имя группы транков;
<DOMAIN> - имя домена;
<IFACE_NAME> - имя интерфейса транка или абонента;
<PARAMETERS> - настраиваемый параметр для транзита SIP-абонентов.
- headers = [<HEADER1>, <HEADER2>, ...],
- <HEADER> - имя SIP-заголовка.
Транзит заголовков
Для входящих сообщений можно определить список заголовков, которые будут переданы в исходящее плечо.
Например, можно протранслировать через систему заголовки "Via", "User-Agent", позволяющие получить вызываемой стороне дополнительную информацию о терминале вызывающего абонента.
Из списка будут исключены "Call-ID", "To", "From", "CSeq", которые не могут быть протранслированы, поскольку не должны дублироваться.
Для удаления правил транзита заголовков в команде вводится пустой список.
Примеры:
/domain/test.domain/trunk/sip/set sip.test SEA.A sip-transit set headers=[User-Agent, Subject] /domain/test.domain/sip/user/set export 410@192.168.23.166 sip-transit set request_line = domain_name, headers = [User-Agent, Subject] /domain/test.domain/sip/user/set export 410@192.168.23.166 sip-transit set headers = []
Удаление всех правил
Удаление всех правил транзита выполняется командой:
- для SIP-транков:
/domain/<DOMAIN>/trunk/sip/set <GROUP_NAME> <IFACE_NAME> sip-transit clean
- для SIP-абонентов:
/domain/<DOMAIN>/sip/user/set *|<GROUP_NAME> [*|<IFACE_NAME>] sip-transit clean
где
<GROUP_NAME> - имя группы транков;
<IFACE_NAME> - имя интерфейса транка или пользователя.
Команда удаляет все правила для режимов и транзита заголовков. Предусмотрено предупреждение с возможностью прервать выполнение команды.
Пример:
/domain/test.domain/trunk/sip/set tmip TMIP.Public sip-transit clean [set] This command clears of all transit rules. Undo will be impossible. Continue: yes/no ?> yes Executed on the pa_sip@alex complete
Модификации
Настройка выполняется для интерфейса исходящего плеча, который отправляет SIP-запрос или SIP-ответ, таким образом, модификации настраиваются только для исходящих SIP-сообщений.
Модификации могут быть настроены для SIP-транков и SIP-абонентов.
Модификации для SIP-транков настраиваются командой:
/domain/<DOMAIN>/trunk/sip/set <GROUP_NAME> <IFACE_NAME> sip-modifications <COMMAND>
Модификации для SIP-абонентов настраиваются командой:
/domain/<DOMAIN>/sip/user/set *|<GROUP_NAME> [*|<IFACE_NAME>] sip-modifications <COMMAND>
где
<GROUP_NAME> - имя группы транков;<IFACE_NAME> - имя интерфейса транка или абонента;
<COMMAND> - команда модификации:
- clean <HEADER> - очистка правила модификации;
- ignore headers = [<HEADER1>, <HEADER2, ...] - список заголовков, которые должны быть исключены;
- set <PARAMETERS> - формирование правила модификации.
Исключение заголовков
Для исходящего интерфейса задается список заголовков SIP-сообщений, которые не должны отправляться.
Для удаления правила исключения заголовков вводится пустой список.
sip-modifications ignore headers = [<HEADER1>, <HEADER2, ...]
где
<HEADERn> - имя заголовка, который не должен быть отправлен в исходящем сообщении.
Пример:
/domain/test.domain/trunk/sip/set tmip TMIP.Public sip-modifications ignore headers = [Accept, Category] /domain/test.domain/sip/user/set export 410@192.168.23.166 sip-modifications ignore headers = [Accept, Category] /domain/test.domain/sip/user/set export 410@192.168.23.166 sip-modifications ignore headers = []
Коррекция заголовков
Модификация передаваемых заголовков выполняется строго по заданному шаблону. В текущей версии ПО поддерживается включение/исключение/замена текста в заголовках. Возможны одновременная вставка текста в начало и конец, удаление или замена фрагмента.
sip-modifications set <PARAMETERS>
где
<PARAMETERS> - правила модификации:
- header - имя заголовка, к которому будет применено правило, опциональный параметр;
- add_start - текст, который будет добавлен в начале заголовка;
- add_end - текст, который будет добавлен в конец заголовка;
- add_new - текст, который будет добавлен в новый заголовок;
- delete - текст, который должен быть удален, если имеются повторения указанного текста, то будет удалено только первое его упоминание;
- insert - текст, вставляемый на место удаляемого, без параметра "delete" не используется.
Имя заголовка является обязательным условием. В правиле должен быть как минимум один параметр модификации. Разные правила модификации можно использовать одновременно.
Примеры:
в начале заголовка Contact будет добавлено имя "TEST CONTACT" с пробелом после кавычки: /domain/test.domain/trunk/sip/set tmip TMIP.Public sip-modifications set header = contact, add_start = "TEST CONTACT " в конце заголовка Contact будет добавлен параметр "; test": /domain/test.domain/trunk/sip/set tmip TMIP.Public sip-modifications set header = contact, add_end = ; test будет создан новый заголовок Test-Header и в него будет добавлен параметр "text" /domain/test.domain/trunk/sip/set tmip TMIP.Public sip-modifications set header = test-header, add_new = text в заголовке Supported "replaces" будет заменено на "test": /domain/test.domain/trunk/sip/set tmip TMIP.Public sip-modifications set header = supported, delete = replaces, insert = test модификация удаляется, заголовок Supported будет передаваться без изменений: /domain/test.domain/trunk/sip/set tmip TMIP.Public sip-modifications clean supported
Очистка всех правил
Удаление всех правил модификации выполняется командой:
sip-modifications clean <HEADER>
где
<HEADER> - имя заголовка, для которого нужно отменить модификации. При указании символа "*" будет выполнена очистка правил модификации для всех заголовков.
Данная команда очищает лишь список правил модификации, список игнорируемых заголовков не изменяется.
Предусмотрено предупреждение с возможностью прервать выполнение команды.
Пример:
/domain/test.domain/trunk/sip/set tmip TMIP.Public sip-modifications clean * [set] This command clears of modification. Undo will be impossible. Continue: yes/no ?> yes Executed on the pa_sip@alex complete