3.14.0 Правила модификации сигнализации 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-абонентов. Можно указать список параметров через запятую. Если в операции "set" указан только один параметр (request_line или headers), то значение другого параметра не изменится. Порядок следования параметров не важен:
- request_line = <MODE>
- <MODE> - режим транзита:
- disable - отключить транзит RURI;
- domain_name - транзит хост части RURI без определения IP-адреса, соответствующего хосту на DNS-сервере;
- domain_name_force - транзит хост части RURI с определением IP-адреса, соответствующего хосту на DNS-сервере;
- ruri - транзит полного RURI без определения IP-адреса, соответствующего хосту на DNS-сервере;
- ruri_force - транзит полного RURI с определением IP-адреса, соответствующего хосту на DNS-сервере.
- <MODE> - режим транзита:
- headers = [<HEADER1>, <HEADER2>, ...],
- <HEADERn> - имя SIP-заголовка.
Транзит хост части RURI
В данном режиме в RURI исходящего INVITE используется тот же хост, что и в RURI входящего INVITE. Таким образом, настройка хоста удаленной стороны на SIP-транке или хост частного адреса зарегистрированного SIP-абонента будут игнорироваться.
Если установлен "force" режим транзита RURI, то в этом случае INVITE будет передаваться на IP-адрес, соответствующий этому хосту (адрес определяется с помощью сервиса DNS). Настройка хоста удаленной стороны на SIP-транке или хост частного адреса зарегистрированного SIP-абонента будут игнорироваться.
Данный транзит не затрагивает имени или номера абонента, передаваемого в RURI. В этом случае будет использован номер, полученный от системы в результате маршрутизации вызова. Этот номер может быть как аналогичным принятому во входящем INVITE, так и быть модифицированным.
Также изменения не применяются к параметрам RURI, если вызов адресован SIP-абоненту, в контакте которого были зарегистрированы дополнительные параметры.
Примеры:
/domain/test.domain/trunk/sip/set sip.test SEA.A sip-transit set request_line = domain_name /domain/test.domain/sip/user/set export 410@192.168.23.166 sip-transit set request_line = d
Транзит полного RURI
В данном режиме RURI исходящего INVITE полностью заменяется на RURI, принятый во входящем INVITE, включая имя пользователя и параметры.
Таким образом, если в процессе маршрутизации вызова номер вызываемого абонента был модифицирован, то этот измененный номер будет передан только в заголовке "To", но не в RURI.
Если установлен "force" режим транзита RURI, то в этом случае INVITE будет передаваться на IP-адрес, соответствующий этому хосту (адрес определяется с помощью сервиса DNS). Настройка хоста удаленной стороны на SIP-транке либо хост частного адреса зарегистрированного SIP абонента будут игнорироваться.
Примеры:
/domain/test.domain/trunk/sip/set sip.test SEA.A sip-transit set request_line = ruri /domain/test.domain/sip/user/set export 410@192.168.23.166 sip-transit set request_line = ruri
Транзит заголовков
Для входящих сообщений можно определить список заголовков, которые будут переданы в исходящее плечо.
Например, можно протранслировать через систему заголовки "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