Описание

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-сервере.
  • 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 абонента будут игнорироваться.

Не рекомендуется использовать данный режим при работе системы с 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