Понятия, определения

Типы динамической регистрации:

В системе ECSS-10 реализован "операторский" тип регистрации. Регистрация выполняется с одним аккаунтом.
Если SIP-транк не зарегистрирован или истек тайм-аут регистрации, входящие и исходящие вызовы не будут совершаться через данный SIP-транк. 
Вызовы выполняются под разными номерами. Для аутентификации используется единый логин и пароль.

Порядок настройки SIP-транков

Настройка SIP-транка состоит из двух этапов:

1. Декларирование и настройка SIP-транка.

Порядок настройки SIP-транка:

2. Создание правила маршрутизации.

Для добавления правила маршрутизации необходимо:

  1. в выбранный контекст маршрутизации, добавить правило маршрутизации с результатом "внешний";
  2. из списка значений направления , выбрать созданный ранее SIP-транк.

Процесс создания и настройки контекстов маршрутизации описан в разделе Виртуальная АТС. Маршрутизация телефонных вызовов.


Настройка SIP-транков через CLI

Создание SIP-транков


Для создания SIP-транка используется команда:

/domain/<DOMAIN>/trunk/sip/declare <ROUTING_CONTEXT> <GROUP> <TRUNK_INTERFACE> <IPSET> [static <DEST_HOST> <DEST_PORT> <MODE> <LISTEN_PORT> | dynamic <LOGIN> <PASSWORD>]

где

<DOMAIN> — имя виртуальной АТС;
<ROUTING_CONTEXT> — название существующего контекста маршрутизации; 
<GROUP> — название группы интерфейсов (может быть задана существующая или новая группа);
<TRUNK_INTERFACE> — имя системного интерфейса, описывающего данное направление. Имя интерфейса является внутрисистемным идентификатором, участвующем в маршрутизации, отображении статистики и другое;
<IPSET> — имя группы локальных адресов;
static — декларация статического транка;
dynamic — декларация динамического транка (с регистрацией);

  • При декларации динамического транка операторская регистрация должна выполнятся для пользователя <TRUNK_INTERFACE>@<GROUP>.
  • Параметры <DEST_HOST>, <DEST_PORT>, <MODE>, <LISTEN_PORT> не задаются.
  • Режим для динамических транков устанавливается sip-proxy, регистрация для транков с инкапсуляцией ISUP использоваться не должна.

<DEST_HOST> — IP-адрес или доменное имя встречного устройства для взаимодействия;
<DEST_PORT> — транспортный порт встречного устройства для взаимодействия с ним по протоколу SIP;
<MODE> — режим работы транка:

<LISTEN_PORT> — транспортный порт, используемый SIP-адаптером для приема сигнализации. SIP-адаптер может использовать несколько портов для приема сигнализации, что позволяет организовать несколько транков с одним и тем же устройством. Как минимум один локальный (слушающий) порт должен быть назначен в обязательном порядке.
<LOGIN> — логин;
<PASSWORD> — пароль.

В режиме sip-proxy осуществляется работа по протоколу SIP, базовая рекомендация RFC 3261.
В режимах sip-t, sip-i в тело сообщений протокола SIP инкапсулируются сообщения ISUP. Работа протокола SIP-I описана в рекомендации Q.1912.5, протокола SIP-T в RFC 3372,  а протокола SIP-Q в ECMA-143, ECMA-165.

При создании SIP-транка производится проверка имени интерфейса (в системе запрещено создавать транки с одинаковыми именами в пределах одной виртуальной АТС) и связки <dest_host>:<dest_port>:<ip_set>:<listen_port>. Если имя интерфейса SIP-транка совпадет с существующим именем, системой будет выдано предупреждение "trunk already exists". Декларация интерфейса в этом случае не будет выполнена.

При успешном создании SIP-транка имеется возможность сразу (в рамках одной команды) проверить доступность указанного направления посредством передачи запроса OPTIONS. Для этого используется ключ --check, в отличие от версии 2.14, где попытка такой проверки была безусловной. Результат проверки доступности:

Для удаления SIP-транка или всех транков одной группы используется команда:

/domain/<DOMAIN>/trunk/sip/remove <GROUP> <TRUNK_INTERFACE> [--force]

где

<DOMAIN> — имя виртуальной АТС;
<GROUP> — имя группы транков, логическая группировка транков в определенной виртуальной АТС;
<TRUNK_INTERFACE> — имя SIP-транка;
--force — дополнительный параметр (ключ), предназначен для безусловного удаления группы транков или транка.

Настройка параметров SIP-транка

Для настройки параметров SIP-транка используется команда:

/domain/<DOMAIN>/trunk/sip/set <GROUP> <TRUNK_INTERFACE> <PARAMETER> <VALUE>

где

<DOMAIN> — имя виртуальной АТС;
<GROUP> — имя группы транков, логическая группировка транков внутри виртуальной АТС;
<TRUNK_INTERFACE> — имя SIP-транка;
<PARAMETER> — настраиваемый параметр, список параметров приведен в Приложении Б. Набор параметров интерфейса SIP.
<VALUE> — значение параметра.

Для просмотра информации о SIP-транке используется команда:

/domain/<DOMAIN>/trunk/sip/info <GROUP> [<TRUNK_INTERFACE>]

где

<DOMAIN> — имя виртуальной АТС;
<GROUP> — название существующей группы интерфейсов, символ "*" используется для указания всех групп транков;
<TRUNK_INTERFACE> — логическое имя транка, символ "*" используется для указания всех интерфейсов группы.
Для просмотра свойств группы имя интерфейса транка (символ "*") не указывается.

Настройка дополнительных параметров SIP-транка

Для настройки дополнительных параметров SIP-транка используется команда:

/domain/<DOMAIN>/trunk/set <GROUP> <TRUNK> <PARAMETER> <VALUE>

где

<DOMAIN> — имя виртуальной АТС;
<GROUP> — имя группы транков, логическая группировка транков внутри виртуальной АТС;
<TRUNK> — имя SIP-транка;
<PARAMETER> — настраиваемый параметр,

В таблице 1 приведено описание параметров.

Название свойства



Значение по умолчанию


Описание
traffic\limitundefined (1.0)Ограничение трафика в процентном отношении, диапазон значений [0.1 - 1.0]
bandwidth\inunbounded(0)Максимальная пропускная способность для входящих вызовов.
bandwidth\outunbounded(0)Максимальная пропускная способность для исходящих вызовов.
bandwidth\total    unbounded(0)Максимальная пропускная способность для всех вызовов.
cps_limit\in256Максимальное количество входящих вызовов/сек.

cps_limit\out

256Максимальное количество исходящих вызовов/сек.

cps_limit\total

256Максимальное количество вызовов/сек.

white_list\in

undefined (false)"Белый" список для входящих вызовов
white_list\in\enabledfalseВключить "белый" список для входящих вызовов
white_list\outundefined (false)"Белый" список для исходящих вызовов
white_list\out\enabledfalseВключить "белый" список для исходящих вызовов
black_list\inundefined (false)"Черный" список для входящих вызовов
black_list\in\enabledfalseВключить "черный" список для входящих вызовов

black_list\out

undefined (false)"Черный" список для исходящих вызовов
black_list\out\enabledfalseВключить "черный" список для исходящих вызовов
sitelocalИмя сайта для данного транка
zonedefaultИмя зоны для данного транка
antifraud-localfalseПараметр для идентификации внутренних вызовов в  antifraud (false/true)
early_mediafalse

При получении 183(SDP) прокидывать RTP со стороны Б, в сторону абонента А (false/true).

  • Если значение true и вызов исходящий, то пропускаем раннюю медиа со стороны Б.
  • Если значение false и вызов исходящий, то не пропускаем раннюю медиа со стороны Б.
  • Для входящего вызова ранняя медиа пропускается всегда.
ignore-early-mediafalse

Блокирует проброс на противоположное плечо приходящего на транк media с early_media (false/true).

  • Прокидываем 180 как обычно, игнорируя последующие 18x,
  • Прокидываем 183, или любой другой Media Progress, как 180 без SDP, игнорируя последующие 18х.
  • Нет работы с media потоком: не передаем КПВ, при передачей 180 Ringing , локальный КПВ на телефоне, или на ТАУ.
  • SDP из Early Media будет использовано в 200 OK
early_rbt_playbackfalseПредварительное воспроизведение сигнала КПВ (RBT) перед поступлением потока RTP (false/true).
Имеет приоритет перед ignore-early-media (при включении обоих параметров, будет работать early_rbt_playback).

<VALUE> — значение параметра.

Для просмотра информации о SIP-транке используется команда:

/domain/<DOMAIN>/trunk/info <GROUP> [<TRUNK>]

где

<DOMAIN> — имя виртуальной АТС;
<GROUP> — название существующей группы интерфейсов, символ "*" используется для указания всех групп транков;
<TRUNK> — логическое имя транка, символ "*" используется для указания всех интерфейсов группы.
Для просмотра свойств группы имя интерфейса транка (символ "*") не указывается.

Проверка состояния SIP-транка

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

Для проверки состояния SIP-транка используется команда:

/domain/<DOMAIN>/trunk/sip/check <GROUP> [<TRUNK_INTERFACE>] [timerF = <TIMERF>]

где

<DOMAIN> — имя виртуальной АТС;
<GROUP> — название существующей группы интерфейсов. Символ "*" используется для указания всех групп транков;
<TRUNK_INTERFACE> — логическое имя транка. Символ "*" используется для указания всех интерфейсов группы.

Если ответ не получен (направление на данный транк не доступно), то выводится результат "timeout".

  • Если удаленный клиент не поддерживает запросы OPTIONS, и при этом не отвечает ответом 405, то результат будет таким же, хотя реально направление доступно для вызовов.
  • В таком случае периодический контроль доступности должен быть отключен (set options_control 0), в противном случае при не ответе на четыре OPTIONS, транк блокируется.

<TIMERF> — тайм-аут ожидания ответа, в пределах которого отправляются повторные запросы, если удаленная сторона не отвечает. Задается в миллисекундах. Для выключения контроля установите значение тайм-аута — 0.

Если встречное оборудование доступно, то результатом выполнения команды будет значение "Accessible"=true, если недоступно — "Accessible"=false.

Динамический SIP-транк

Для направлений, на которых необходима регистрация встречных SIP-транков в системе ECSS-10, создаются динамические SIP-транки.

Создание, удаление динамического транка

Создание динамического SIP-транка


Для создания динамического SIP-транка используется команда:

/domain/<DOMAIN>/trunk/sip/declare <ROUTING_CONTEXT> <GROUP> <TRUNK_NAME> <IPSET> [dynamic LOGIN PASSWORD]

где

<DOMAIN> — имя виртуальной АТС;
<ROUTING_CONTEXT> — контекст маршрутизации для данного транка;
<GROUP> — имя группы транков (параметр идентичен <TRUNK_GROUP> для обычных SIP-транков); 
<TRUNK_NAME> — имя для регистрации динамического SIP-транка;
<IPSET> — имя группы локальных адресов;
<LOGIN> — логин;
<PASSWORD> — пароль.

При создании динамического SIP-транка в системе создается виртуальный абонент-транк с URI <TRUNK_INTERFACE>@<GROUP>.

В командах работы с SIP-абонентами данный виртуальный абонент-транк не доступен.

Удаление динамического SIP-транка

Для удаления динамического SIP-транка используется команда:

/domain/<DOMAIN>/trunk/sip/remove <GROUP> <TRUNK_NAME> [--force]

где

<DOMAIN> — имя виртуальной АТС;
<GROUP> — имя группы транков (параметр идентичен <TRUNK_GROUP> для обычных SIP-транков); 
<TRUNK_NAME> — имя для регистрации динамического SIP-транка (параметр идентичен <TRUNK_NAME> для обычных SIP-транков);
--force — дополнительный параметр (ключ), предназначен для безусловного удаления группы транков или транка;

Настройка параметров динамического транка

Для настройки параметров динамического SIP-транка используется команда:

/domain/<DOMAIN>/trunk/sip/set <GROUP> <TRUNK_NAME> <PARAMETER> <VALUE>

где

<DOMAIN> — имя виртуальной АТС;
<GROUP> — имя группы транков, логическая группировка транков в определенной виртуальной АТС;
<TRUNK_NAME> — имя динамического SIP-транка;
<PARAMETER> — настраиваемый параметр;
<VALUE> — значение параметра.

Основной перечень параметров динамического SIP-транка соответствует параметрам стандартного SIP-транка и описан выше.

Дополнительные параметры для динамического SIP-транка:

Параметры "inc_authentication_login" и "inc_authentication_password" необходимы при использовании авторизации входящих вызовов.

Для просмотра информации о динамическом SIP-транке используется команда:

/domain/<DOMAIN>/trunk/sip/info <GROUP> <TRUNK_NAME>

где

<DOMAIN> — имя виртуальной АТС;
<GROUP> — имя группы транков, символ "*" используется для просмотра информации о всех транках кластера;
<TRUNK_NAME> — имя динамического SIP-транка.

Исходящая регистрация транков SIP-адаптера

Регистрация транка выполняется на вышестоящем сервере. Запрос регистрации отправляется только с одной из нод кластера.
Количество контактов, передаваемое в запросе регистрации, равно количеству нод в кластере. IP-адреса в контактах устанавливаются из параметра "ip-set", назначенного транку.
Параметр "ip-set" настраивается командой domain/<DOMAIN>/sip/network/set node_ip.

Настройка параметров SIP-транка для исходящей регистрации выполняется командами:

  1. Настройка периода времени регистрации на вышестоящем сервере или отключение регистрации:
    /domain/<DOMAIN>/trunk/sip/set <GROUP> <TRUNK_INTERFACE> out_registration <EXPIRE>
    где <EXPIRE> — период регистрации в секундах, 0 — отключение регистрации, при этом отправляется запрос разрегистрации (REGISTER с Expire=0). При изменении параметра <EXPIRE> будет отправлен внеочередной (первый, если параметр не был установлен ранее) запрос регистрации, и время последующей передачи запроса будет пересчитано от текущего момента.
  2. Настройка регистрируемого имени SIP-транка
    /domain/<DOMAIN>/trunk/sip/set <GROUP> <TRUNK_INTERFACE> user-name <NAME>
    где <NAME> — имя SIP-транка для исходящей регистрации. Если имя не указано, то по умолчанию используется имя интерфейса.
  3. Настройка домена регистрации SIP-транка
    /domain/<DOMAIN>/trunk/sip/set <GROUP> <TRUNK_INTERFACE> sipdomain <SipDomain>
    где <SipDomain> — имя SIP-домена. Если параметр не задан, то в его качестве используется параметр "host" (IP-адрес или доменное имя транка), настроенный в параметрах транка.
    Для просмотра информации о SIP-транке используется команда:
    /domain/<DOMAIN>/trunk/sip/info <GROUP> [<TRUNK_INTERFACE>]
    где
    <DOMAIN> — имя виртуальной АТС;
    <GROUP> — имя группы транков, символ "*" используется для просмотра информации о всех транках кластера;
    <TRUNK_INTERFACE> — имя SIP-транка.
  4. Установка логина

    /domain/<DOMAIN>/trunk/sip/set <GROUP> <TRUNK_INTERFACE> out_authentication_login <ENTRY_LOGIN_TO_OUTGOING_PROXY_AUTHENTICA>

    где

    <ENTRY_LOGIN_TO_OUTGOING_PROXY_AUTHENTICA> — имя SIP-транка, используемое при аутентификации, опциональный параметр.

  5. Установка пароля

    /domain/<DOMAIN>/trunk/sip/set <GROUP> <TRUNK_INTERFACE> out_authentication_password <ENTRY_PASSWORD_TO_OUTGOING_PROXY_AUTHENT>

    где

    <ENTRY_PASSWORD_TO_OUTGOING_PROXY_AUTHENT> — пароль SIP-транка, используемый при аутентификации, опциональный параметр.

Примеры:

  1. Создание нового SIP-транка "new_test_trunk" в группу "sip_trunks", режим sip-proxy, транк направлен на 192.168.123.123:5060, транк использует контекст маршрутизации default_context

    admin@[mycelium1@ecss1]:/$ domain/test.domain/trunk/sip/declare default_context sip_trunks new_test_trunk ipset 192.168.123.123 5060 sip-proxy 5070 
    Executed on the sip1@ecss1
    declared


  2. Просмотр информации о SIP-транке "test" 

    admin@[mycelium1@ecss1]:/$ domain/test.domain/trunk/sip/info test_group test 
    Executed on the sip1@ecss1
    ┌───────┬──────┬───────────┬────────────┬────────────┬────────────────────────────────────────────────────────────────────────┐
    │ Group │ Uri  │ Is active │ Is blocked │ Is dynamic │                               Parameters                               │
    ├───────┼──────┼───────────┼────────────┼────────────┼────────────────────────────────────────────────────────────────────────┤
    │ test  │ test │ false     │ false      │ true       │ declared by admin at 02.11.2015 09:20:28                               │
    │       │      │           │            │            │                                                                        │
    │       │      │           │            │            │  listen-port                    = 50000                                │
    │       │      │           │            │            │  ip-set                         = ipset1                               │
    │       │      │           │            │            │  mode                           = 'sip-proxy'                          │
    │       │      │           │            │            │  current number of calls        = 0                                    │
    │       │      │           │            │            │  disconnect time                = 29.12.2015 10:19:49                  │
    │       │      │           │            │            │  disconnections number          = 0                                    │
    ...
    │       │      │           │            │            │  try-contact-for-anonymous      = true                                 │
    │       │      │           │            │            │  unreliable-early-media         = false                                │
    │       │      │           │            │            │  user-name                      = test                                 │
    └───────┴──────┴───────────┴────────────┴────────────┴────────────────────────────────────────────────────────────────────────┘


  3. Создание динамического транка "new_test_trunk_reg" в группе "sip_trunks", транк использует контекст маршрутизации default_context

    admin@[mycelium1@ecss1]:/$ domain/test.domain/trunk/sip/declare default_context sip_trunks new_test_trunk_reg ipset --registration 
    Executed on the sip1@ecss1
    {declared,["test.domain",default_context,"sip_trunks",<<"new_test_trunk_reg">>,
               "dynamic",0,sipproxy]}


  4. Удаление SIP-транка "new_test_trunk"

    admin@[mycelium1@ecss1]:/$ domain/test.domain/trunk/sip/remove sip_trunks new_test_trunk 
    [remove] This command removes trunks interfaces. Undo will be impossible.
    Continue: yes/no ?> yes
    Executed on the sip1@ecss1
    [{"new_test_trunk",removed}]


Управление медиапрофилями для транка

Для установки/изменения медиапрофиля для транка используются следующие команды:

  1. Установка медиапрофиля по входящей и исходящей связи для транка или нескольких транков. Если media-profile-outgoing для транка установлен, то параметр влияет только на входящую связь.

    /domain/<DOMAIN>/alias/set-for-iface <IFACE_GROUP> <IFACE_RANGE> media-profile <MEDIA_PROFILE_NAME>

    где

    <DOMAIN> — имя виртуальной АТС;
    <IFACE_GROUP> — имя группы транков (интерфейсов),
    <IFACE_RANGE> — имя одного транка (интерфейса) или список транков, для которых будет устанавливаться медиапрофиль,
    <MEDIA_PROFILE_NAME> — имя медиа-профиля

  2. Установка медиапрофиля по исходящей связи для транка или нескольких транков. Если параметр не задан, то для исходящей связи используется тот же медиапрофиль, что и для входящей связи — заданный параметр media-profile.

    /domain/<DOMAIN>/alias/set-for-iface <IFACE_GROUP> <IFACE_RANGE> media-profile-outgoing <MEDIA_PROFILE_NAME>

    где

    <DOMAIN> — имя виртуальной АТС;
    <IFACE_GROUP> — имя группы транков (интерфейсов),
    <IFACE_RANGE> — имя одного транка (интерфейса) или список транков, для которых будет устанавливаться медиапрофиль,
    <MEDIA_PROFILE_NAME> — имя медиа-профиля

  3. Просмотр текущего медиапрофиля на транке.

    /domain/<DOMAIN>/alias/iface-info <IFACE_GROUP> <IFACE_RANGE>

    где

    <DOMAIN> — имя виртуальной АТС;
    <IFACE_GROUP> — имя группы транков (интерфейсов),
    <IFACE_RANGE> — имя одного транка (интерфейса) или список транков для которых будут отображаться параметры.

    Команда выдаст таблицу со всеми параметрами установленными для транка. В таблице необходимо найти параметры media-profile и media-profile-outgoing.
    Если параметров не установлено, то используется медиапрофиль по умолчанию (default).

  4. Сброс медиапрофиля на транке в значение по умолчанию

    /domain/<DOMAIN>/alias/iface-clean <IFACE_GROUP> <IFACE_RANGE> media-profile

    где

    <DOMAIN> — имя виртуальной АТС;
    <IFACE_GROUP> — имя группы транков (интерфейсов),
    <IFACE_RANGE> — имя одного транка (интерфейса) или список транков, для которых будет сбрасываться параметр.

  5. Сброс медиапрофиля для исходящей связи в значение по умолчанию

    /domain/<DOMAIN>/alias/iface-clean <IFACE_GROUP> <IFACE_RANGE> media-profile-outgoing

    где

    <DOMAIN> — имя виртуальной АТС;
    <IFACE_GROUP> — имя группы транков (интерфейсов),
    <IFACE_RANGE> — имя одного транка (интерфейса) или список транков, для которых будет сбрасываться параметр.

Настройка SIP-транков через web-конфигуратор

Порядок создания SIP-транков через web-конфигуратор.

  1. Подключиться к web-конфигуратору.
  2. В определенной виртуальной АТС создать контекст маршрутизации, описание приведено в разделе Настройка параметров маршрутизации через web-конфигуратор.
  3. Открыть приложение "Менеджер транков" ("Trunk Manager").

Настройка транков с помощью стандартного режима web-конфигуратора описана в разделе Транки (Trunks).

Авторизация транзитных вызовов на транке по RADIUS

Для обеспечения контроля над принятыми из транка вызовами и предоставления услуг абонентам, подключенным к ECSS-10 по этому транку, может использоваться RADIUS-сервер. В этом случае авторизация и аутентификация вызовов, принятых из транка осуществляется на RADIUS-сервере.

ECSS-10 поддерживает и другой механизм предоставления услуг абонентам подключенным через транк — механизм фиксированных контактов, описание приведено в разделе Аутентификация абонентов.

Настройка авторизации вызовов, принятых из транка на RADIUS-сервере, выполняется следующей командой:

/domain/<DOMAIN>/trunk/sip/set <GROUP> <TRUNK> <PARAMETER> <VALUE>

где

<DOMAIN> — имя виртуальной АТС;
<GROUP> — имя группы транков, логическая группировка транков в определенной виртуальной АТС;
<TRUNK_INTERFACE> — имя SIP-транка;
<PARAMETER> — настраиваемый параметр, принимает значения:

<VALUE> — значение параметра.

Для просмотра информации используется команда:

/domain/<DOMAIN>/trunk/sip/info <GROUP> [<TRUNK_INTERFACE>] [--profile <PROFILE>]

где

<DOMAIN> — имя виртуальной АТС;
<GROUP> — имя группы транков, символ "*" используется для просмотра информации о всех транках виртуальной АТС;
<TRUNK_INTERFACE> — имя SIP-транка;
--profile — флаг используется для просмотра информации о конфигурации профилей транка;
<PROFILE> — имя профиля, символ "*" используется для указания всех профилей транков.

Пример:

domain/d.408/sip/pa_sip1/trunk/info smg.test SMG.2 
Executed on the pa_sip@alex
---------------------------------------------------------------------------------------------------------
|  Group   |  Uri  | Is active | Is blocked |                        Parameters                         |
|----------+-------+-----------+------------+-----------------------------------------------------------|
| smg.test | SMG.2 | true      | false      |        amqp_exchange = ecss.call.control.ex               |
...
|          |       |           |            |   inc_authentication = true                               |
...
|          |       |           |            |        "radius area" = radius.direction                   |
...

При отсутствии корректного ответа от RADIUS-сервера вызов помечается, и на уровне системы принимается решение о продолжении обслуживания.

Настройка области аутентификации (area) и RADIUS-серверов выполняется командами:

/domain/<DOMAIN>/sip/user/dynamic-area/info|new|remove|set ...
/domain/<DOMAIN>/sip/user/dynamic-radius-server/info|new|remove|set ...

Подробное описание данных команд приведено в разделе 1.

Управление транковой записью разговоров

Транковая запись разговоров осуществляет запись всех вызовов (входящих и исходящих) которые проходят через транк.
Транковая запись разговоров существует независимо от активности абонентской запись разговоров.
Управление транковой записью разговоров осуществляется следующими командами:

  1. Активация транковой записи разговоров

    /domain/<DOMAIN>/iface/user-set <OWNER> <GROUP> <IFACE-RANGE> call_record true

    где

    <DOMAIN> — имя виртуальной АТС;
    <OWNER> — имя кластера адаптера владельца интерфейсов, для sip-адаптера обычно sip1;
    <GROUP> — имя группы интерфейсов, в данном случае транков;
    <IFACE-RANGE> — диапазон/список интерфейсов, в данном случае тарнков.

  2. Деактивация транковой записи разговоров

    /domain/<DOMAIN>/iface/user-set <OWNER> <GROUP> <IFACE-RANGE> call_record false

    где

    <DOMAIN> — имя виртуальной АТС;
    <OWNER> — имя кластера адаптера владельца интерфейсов, для sip-адаптера обычно sip1;
    <GROUP> — имя группы интерфейсов, в данном случае транков;
    <IFACE-RANGE> — диапазон/список интерфейсов, в данном случае тарнков.

  3. Просмотр статуса транковой записи разговоров

    /domain/<DOMAIN>/iface/info <OWNER> <GROUP> <IFACE-RANGE> call_record

    где

    <DOMAIN> — имя виртуальной АТС;
    <OWNER> — имя кластера адаптера владельца интерфейсов, для sip-адаптера обычно sip1;
    <GROUP> — имя группы интерфейсов, в данном случае транков;
    <IFACE-RANGE> — диапазон/список интерфейсов, в данном случае тарнков.

    В результате выполнения команды будет выдана информация о том включена или нет (true/false) транковая запись разговоров.

Метод привязки транковых каналов к виртуальному абоненту для станций Coral

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


Существует SIP-транк, за которым находятся несколько FXO портов для выхода в городскую ТфОП. Некоторые абоненты должны иметь возможность выхода в городскую сеть через любой свободный порт, остальные абоненты должна выходить строго через конкретно заданные (один или несколько) порты. В обратном порядке, когда вызов получен со стороны городской сети с конкретного FXO порта, SSW должен иметь возможность обрабатывать данный вызов с использованием различных стратегий. Более того, необходимо посредством BLF наблюдать состояние FXO, какие порты в транке сейчас заняты.
Поэтому, было решено к транкам, для которых явно заданы каналы, добавить возможность сопоставлять внутренние виртуальные номера домена и каждый из каналов в транке. Тогда вызовы будут обрабатываться следующим образом:

  1. Если вызов приходит из конкретного канала в транке, к которому привязан номер виртуального абонента, то номер вызывающего абонента для этого вызова меняется на заданный номер виртуального абонента (на виртуальном абоненте можно активировать различные ДВО, таким образом вызов из транка будет обрабатываться этими ДВО в том числе BLF);
  2. Звонок на номер виртуального абонента со стороны локального абонента приведет к звонку через определенный канал транка (тот канал, за которым закреплен номер данного виртуального абонента);

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

  1. Создаем виртуально абонента с номером NUMBER, контекстом маршрутизации ROUTING_CONTEXT

    domain/<DOMAIN>/alias/virtual/declare <NUMBER> <ROUTING_CONTEXT> <GROUP>

    <DOMAIN> — имя виртуальной АТС (домен);
    <NUMBER> — номер абонента;
    <ROUTING_CONTEXT> — план маршрутизации, используемый абонентом;
    <GROUP> — группа, к которой будет причислен абонент.

  2. На данного виртуального абонента активируем один из сервисов распределения вызова (CGG, CHunt и т.п.). При этом нужно помнить, что когда групповые сервисы активны, также используется несколько абонентских линий и нужно активировать соответствующий сервис ml (мультилайн)

    domain/<DOMAIN>/ss/enable <NUMBER> cgg

    <DOMAIN> — название виртуальной АТС (домена), для которой выполняются настройки;
    <NUMBER> — номер виртуального абонента, для которого выполняются настройки.

    Активируем на виртуальном абонента услугу распределения вызова

    domain/<DOMAIN>/ss/activate <NUMBER> cgg numbers = <NUM1>, <NUM2>, ...

    <DOMAIN> — название виртуальной АТС (домена), для которой выполняются настройки;

    <NUMBER> — номер виртуального абонента, для которого выполняются настройки;<NUM1>, <NUM2> — номера на FXO порте, привязываемые к виртуальному номеру.

  3. Создаем SIP транк

    domain/<DOMAIN>/trunk/sip/declare <ROUTINGCONTEXT> <GROUP> <TRUNKNAME> <IPSET> static <DSTADDR> <DSTPORT> <MODE> <SRCPORT>

    <DOMAIN> — имя виртуальной АТС (домен);
    <ROUTING_CONTEXT> — план маршрутизации, используемый транком;
    <GROUP> — группа, к которой будет причислен транк;
    <TRUNK_NAME> — имя создаваемого транка;
    <IP_SET> — набор IP-адресов;
    <DST_ADDR> — адрес назначения для создаваемого транка;
    <DST_PORT> — порт назначения, для создаваемого транка;
    <MODE> — режим инкапсуляции ISUP:

    <SRC_PORT> — порт приема, для создаваемого транка.

  4. Указываем клиента, в чью сторону направлен транк:

    domain/<DOMAIN>/trunk/sip/set <TRUNK_GROUP> <TRUNK> remote-client <CLIENT>

    <DOMAIN> — имя виртуальной АТС (домен);
    <TRUNK_GROUP> — группа, к которой причислен транк;

    <TRUNK> — имя транка, для которого происходит настройка;<CLIENT> — название организации, с которой связан созданный транк.
  5. В созданный транк добавляем Coral контакты, закрепленные за ними номера виртуальных абонентов и номера каналов

    domain/<DOMAIN>/trunk/sip/set <TRUNK_GROUP> <TRUNK> channel-contact-map add <CHANNEL_RANGE> <NUMBER_RANGE> <CONTACT_RANGE>

    <DOMAIN> — имя виртуальной АТС (домен);
    <TRUNK_GROUP> — группа, в которую входит транк;
    <TRUNK> — имя транка, для которого происходит настройка;
    <CHANNEL_NUMBER> — номер выделенного в транке канала. формат: порядковый номер канала, или диапазон в {} через "-", или перечисление  или ",";
    <NUMBER> — номер виртуального абонента, закрепляемый за каналом в транке;
    <CONTACT_RANGE> — Специальный идентификатор порта для Coral шлюза.

  6. Активируем на транке ДВО fxo_trunk

    domain/<DOMAIN>/trunk/services/activate <TRUNK_GROUP> <TRUNK> fxo_trunk
    <DOMAIN> — имя виртуальной АТС (домен);
    <TRUNK_GROUP> — группа, в которую входит транк;
    <TRUNK> — имя транка, для которого происходит настройка;
  7. Правила маршрутизации, которые позволяют выйти на FXO порт
    Рассмотрим пример, в котором виртуальные абоненты будут иметь маску номера 99x. Городские номера иметь маску xxxxxxx Тогда выход на FXO порт закрепленный за данным номером будет выглядеть так:

    <rule name="to_fxo_port_with_empty_b_number">
          <conditions>
            <cdpn digits="99?"/>
          </conditions>
          <actions>
            <cdpn digits=""/>
          </actions>
          <result>
            <local vdn="{1,2,3}"/>
          </result>
        </rule>
        <rule name="to_fxo_port_with_complete_b_number">
          <conditions>
            <cdpn digits="99?%"/>
            <final value="true"/>
          </conditions>
          <actions>
            <cdpn digits="{%}"/>
          </actions>
          <result>
            <local vdn="{1,2,3}"/>
          </result>
        </rule>
        <rule name="to_fxo_trunk">
          <conditions>
            <cdpn digits="???????"/>
            <final value="true"/>
          </conditions>
          <result>
            <external>
              <trunk value="FXO_TRUNK"/>
            </external>
          </result>
        </rule>


Таким образом, если абонент наберет номер виртуального абонента, то он совершит вызов на FXO порт без номера вызываемого абонента за портом FXO, и встречная станция будет коллектить номер. Если же абонента наберет номер виртуального абонента и вместе с ним номер, на которых он хочет позвонить — то вызов уйдет на определенный FXO порт с уже заполненным номером вызываемого абонента. Если же абонент не хочет выбирать определенный FXO порт, а хочет выйти через любой свободный порт — ему достаточно просто набрать 7-мизначный городской номер. В этом случае вызов по маршрутизации уйдет на FXO_TRUNK, там выберется свободный канал (FXO порт), и уже через него отправится вызов.

Пример команд:

domain/test.domain/alias/virtual/declare 99900{1-2} default_routing fxo.users
domain/test.domain/ss/enable 99900{1-2} cgg
domain/test.domain/ss/activate 99900{1-2} cgg numbers = [364000, 364001]
domain/test.domain/trunk/sip/declare default_routing cspg.trunks FXO_1 ipset1 static 192.168.23.173 5060 sip-proxy 5060
domain/test.domain/trunk/sip/set cspg.trunks FXO_1 remote-client coral
domain/test.domain/trunk/sip/set cspg.trunks FXO_1 channel-contact-map add {1-2} 99900{1-2} u00s15p{0-1}
domain/<DOMAIN>/trunk/services/activate cspg.trunks FXO_1 fxo_trunk 

BLF подписки

За счет того, что описанный выше механизм позволяет выполнять привязку внутренних номеров к каналам транка, появляется возможность выполнить BLF подписку на данный номер (внутренний номер), после чего при звонке через определенный канал транка будут идти BLF оповещения по связанному с ним номеру.

Conflicted Name

В станций Coral транки Coral имеют специального вида имена uUUsSSpPP, где uUU - номер юнита, sSS - номер полки, pPP - номер порта (0 для потоков). Таким образом, u00s04p00 - это адрес платы E1, которая отражена на ECSS как SIP-транк. В то же время на второй станции Coral, подключенной к CSS есть абонент, который находится на плате аналоговых ТА и его адрес u00s04p00.

в этом случае в логах будут сообщение вида  WARN <0.3370.0> [loc_iface_store:is_contact_known/4:1474]: {"test_domain",<<"test">>}: conflicted name: [coral,"u00s04p00"]

В случае подключения двух станций с одинаковыми индексами абонентских портов их SIP учетными записями можно развести через указание опции sip-domain на разных станциях, система будет их корректно различать. (для примера )
domain/test_domain/sip/user/info sip_users u00s07p00@1.test_domain
domain/test_domain/sip/user/info sip_users u00s07p00@2.test_domain

в случае если мы имеем конфигурацию подключения двух станций на одной станции  абонент имеет URI u00s04p00  а второй транк c аналогичным URI u00s04p00  (или два разных транка с одинаковым URI u00s04p00 ) нужно помнить 

Если на транке включен профиль coral (remote-client = coral) , и сделана настройка user-name (в info по trunk это подсказывает индикация (set)), то входящий INVITE с такого транка обязан иметь в контакте указанное имя. Т.о. вызовы с других сущностей но по тем же портам будут отбиваться.

Если же не указан профиль или целенаправленно не выставлено имя (индикация (default)) - то такого контроля не будет, все вызовы на портах транка будут приняты. Отказ будет только в случае более двух транков с одними параметрами, но в таком случае они также должны быть корректно сконфигурированы как описано выше (профиль + имя), в противном случае - все рассматривается как некорректная/ конфликтная /конфигурация, которую необходимо выправлять.

domain/test_domain/trunk/sip/info sip.test test

┌──────────┬───────┬───────────┬────────────┬────────────┬──────────────────────────────────────────────────────────────────┐
│ Group    │ Uri   │ Is active │ Is blocked │ Is dynamic │ Parameters                                                       │
├──────────┼───────┼───────────┼────────────┼────────────┼──────────────────────────────────────────────────────────────────┤
│ sip.test │ test  │ true      │ false      │ false      │ declared by ecss-root at 13.03.2015 18:32:07                     │
...
│          │       │           │            │            │ remote-client = coral                                            │
...
│          │       │           │            │            │ user-name = test /default                                        │
...
│          │       │           │            │            │ user-name = u00s04p00 /set                                       │ 

┴───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘



Команды управления SIP-транками

Команды управления SIP-транками включают в себя:

Блокировка и разблокировка SIP-транка

block

unblock

Проверка состояния SIP-транка

check

Просмотр информации о SIP-транке

info

Просмотр активных вызовов, установленных через SIP-транк

call-list