
Схема подключения TrueConf - SSW - IP ТФОП

Для корректной работы SSW - TrueConf требуется подключенный и сконфигурированный LDAP/AD сервер.
Ldap сервер должен содержать для каждого абонента информацию о его номере, и идентификаторе пользователя TrueConf ID (в данном примере UID).


для примера (petrov.petr / 42007):
ldapsearch -x -D cn=admin,dc=myldap,dc=eltex,dc=local -w password -h 10.0.20.35 -b cn=petrov.petr@trueconf.ru,ou=people,dc=myldap,dc=eltex,dc=local
# extended LDIF
#
# LDAPv3
# base <cn=petrov.petr@trueconf.ru,ou=people,dc=myldap,dc=eltex,dc=local> with scope subtree
# filter: (objectclass=*)
# requesting: ALL
#
# petrov.petr@trueconf.ru, people, myldap.eltex.local
dn: cn=petrov.petr@trueconf.ru,ou=people,dc=myldap,dc=eltex,dc=local
cn: petrov.petr@trueconf.ru
displayName: petrov.petr@trueconf.ru
mail: petrov.petr@trueconf.ru
objectClass: inetOrgPerson
objectClass: top
sn: 42007
telephoneNumber: 42007
uid: petrov.petr
userPassword:: NDIwMDc=
# search result
search: 2
result: 0 Success
# numResponses: 2
# numEntries: 1 |
Сервер TrueConf поддерживает идентификацию абонента только в символьном виде (например petrov.petr). В свою очередь SSW обрабатывает абонента по его номеру (например 42007). Для установления соединения между SSW ↔ TrueConf требуется выполнить модификацию 42007 → petrov.petr и в обратном направлении petrov.petr → 42007. Данная модификация выполняется в SSW на SIP-транке между SSW и TrueConf.
Подготовка конфигурации на SSW
Предполагается, конфигурация локальных абонентов, sip-trunk-и к сети ТфОП уже созданы и работают. Абоненты могут делать исходящие соединения на ТфОП и принимать звонки из ТфОП.
Конфигурация подключение к LDAP-серверу
В CoCon
1. Настройка интеграции.
/domain/<DOMAIN>/ldap/declare <ID> <TYPE> <HOST> <PORT> <DC_OR_DOMAIN>
где:
- <DOMAIN> — имя виртуальной АТС;
- <ID> — имя LDAP-сервера;
- <HOST> — IP или доменное имя LDAP-сервера;
- <PORT> — Port LDAP-сервера (default или порт);
- <DC_OR_DOMAIN> — LDAP Base DN, например dc=eltex,dc=local;
- <TYPE> — LDAP-сервер тип, ldap или ad.
Пример:
/domain/trueconf.ru/ldap/declare ldap_trueconf ldap 10.0.20.36 default dc=eltex,dc=local
LDAP server ldap_trueconf successfully configured |
2. Настройка атрибута пользователя для авторизации и синхронизации.
/domain/<DOMAIN>/ldap/set <ID> login-attribute <LDAP login attribute>
где:
- <DOMAIN> — имя виртуальной АТС;
- <ID> — уникальный идентификатор LDAP-сервера;
- <login attribute> — атрибут LDAP для поиска имени пользователя, используемого при подключении к серверу LDAP.
Пример:
/domain/trueconf.ru/ldap/set ldap_trueconf login-attribute cn
LDAP/AD server' ldap_trueconf property "login-attribute" successfully updated |
3. Настройка логина и пароля пользователя, выполняющего LDAP-запрос.
/domain/<DOMAIN>/ldap/set <ID> search-auth <LDAP user's login for search auth> <LDAP user's password>
где:
- <DOMAIN> — имя виртуальной АТС;
- <ID> — уникальный идентификатор LDAP-сервера;
- <LDAP user's login for search auth> — логин пользователя, выполняющего LDAP-запрос;
- <LDAP user's password> — пароль пользователя, выполняющего LDAP-запрос.
Пример:
/domain/trueconf.ru/ldap/set ldap_trueconf search-auth cn=admin,dc=myldap,dc=eltex,dc=local password
LDAP/AD server' ldap_eltex property "search-auth" successfully updated |
4. Просмотр конфигурации LDAP серверов.
/domain/<DOMAIN>/ldap/info
где:
- <DOMAIN> — имя виртуальной АТС.
Пример:
/domain/trueconf.ru/ldap/info
┌───────────────────────────────┬──┬───────────────────────────────────────────────────┬──────────────────────────────────────────────────────────────────────────────────┐
│ Id │T │ Host:Port │ Properties │
├───────────────────────────────┼──┼───────────────────────────────────────────────────┼──────────────────────────────────────────────────────────────────────────────────┤
│ldap_trueconf │L │10.0.20.36:default │Base DN: dc=eltex,dc=local │
│ │ │ │Login attribute: cn │
│ │ │ │Search scope: Subtree (recursive) │
│ │ │ │Authenticated at: cn=admin,dc=myldap,dc=eltex,dc=local │
│ │ │ │SSL: false │
└───────────────────────────────┴──┴───────────────────────────────────────────────────┴──────────────────────────────────────────────────────────────────────────────────┘
Total: 1 server(s)
Legend:
- L - LDAP server;
- A - Active Directory server |
5. Проверка соединения.
/domain/<DOMAIN>/ldap/check-connection <ID>
где:
- <DOMAIN> — имя виртуальной АТС;
- <ID> — уникальный идентификатор AD-сервера.
Пример:
/domain/trueconf.ru/ldap/check-connection ldap_trueconf
Connection successful |
В web
Пример настройки параметров соединения с LDAP-сервером через web.
Обратите внимание на поле «Поиск пользователей». В нем указывается логин и пароль в формате «cn=<name>,dc=<name>,dc=<name>:12345». Перед паролем водится «:».
В данном примере «логин/пароль» → «admin/password» соответственно. В этом случае укажите в поле «Поиск пользователей/Search auth» → «cn=admin,dc=myldap,dc=eltex,dc=local:password».
- Выбрать приложение "Домены".
- Выбрать необходимый домен (в примере trueconf.ru).
- Выбрать Свойства домена.
- Выбрать LDAP сервера.
- Добавить.
- Заполнить вкладку "Добавить LDAP сервер"
- Указать логическое имя LDAP сервера
- Указать IP-add или доменное имя сервера.
- Выбрать порт по умолчанию (389) или требуемый для вашего проекта.
- Указать корневую точку LDAP сервера.
- Указать имя атрибута для идентификации (в примере "cn") bind сессии.
- Рекурсивный поиск (значение по умолчанию) - выполнять поиск и в поддиректориях.
- DN пользователя используемого для подключения к LDAP серверу, двоеточие ":", пароль.
- Подтвердить "ОК".
- Сохранить.

Настройки для поддержки символьного SIP URI
Для того чтобы SIP-адаптер начал обрабатывать символьный идентификатор абонента, необходимо включить, на уровне домена, обработку не номерных URI, следующей командой:
/domain/<DOMAIN>/sip/properties/set non_telephone_number_allow true
где:
- <DOMAIN> — имя виртуальной АТС;
Пример:
/domain/trueconf.ru/sip/properties/set non_telephone_number_allow true
Property "non_telephone_number_allow" successfully changed from:
false
to
true. |
Создать модификацию
TrueConf использует при установления соединения между клиентами TrueConf только в символьную адресацию , для примера petrov.petr звонит ivanov.ivan-у. В свою очередь SSW использует только номерную адресацию. Поэтому при звонках TrueConf ↔ SSW требуется выполнять модификацию номера в имя и обратно, petrov.petr ↔ 42007, ivanov.ivan ↔ 42009. Данная модификация выполняется на SSW.
Установка параметров модификации для LDAP сервера
Указываем , какие атрибуты в профиле пользователя требуется считать с LDAP сервера для выполнении модификации, эти параметры можно установить только через CoCon:
/domain/<DOMAIN>/modificators/ldap/set <ID> <PROPERTY> <VALUE>
где:
- <DOMAIN> — имя виртуальной АТС;
- <ID> — уникальный идентификатор LDAP-сервера;
- <PROPERTY> — параметры для изменения
- in\internal_attribute — это атрибут LDAP-пользователя, в котором хранится номер абонента (используется на SSW (для примера telephoneNumber)). По умолчанию отсутствует;
- in\external_attribute — то атрибут LDAP-пользователя, в котором хранится символьный идентификатор абонента (используется для приема от TrueConf ( для примера uid)). По умолчанию отсутствует;
- out\internal_attribute — это атрибут LDAP-пользователя, в котором хранится номер абонента (используется на SSW (для примера telephoneNumber)). По умолчанию отсутствует;
- out\external_attribute — это атрибут LDAP-пользователя, в котором хранится символьный идентификатор абонента (используется для передачи на TrueConf ( для примера uid)). По умолчанию отсутствует;
- cache_ttl — время жизни кэша LDAP/AD-сервера, в секундах. По умолчанию — 500 (сек);
- <VALUE> — значение параметра (Имя атрибута в LDAP сервере). По умолчанию отсутствует;
Пример:
/domain/trueconf.ru/modificators/ldap/set ldap_trueconf in\internal_attribute telephoneNumber
/domain/trueconf.ru/modificators/ldap/set ldap_trueconf out\internal_attribute telephoneNumber
/domain/trueconf.ru/modificators/ldap/set ldap_trueconf in\external_attribute uid
/domain/trueconf.ru/modificators/ldap/set ldap_trueconf out\external_attribute uid
/domain/trueconf.ru/modificators/ldap/info
/domain/trueconf.ru/modificators/ldap/set ldap_trueconf in\internal_attribute telephoneNumber
LDAP server' ldap_trueconf property [in,internal_attribute] successfully updated
/domain/trueconf.ru/modificators/ldap/set ldap_trueconf out\internal_attribute telephoneNumber
LDAP server' ldap_trueconf property [out,internal_attribute] successfully updated
/domain/trueconf.ru/modificators/ldap/set ldap_trueconf in\external_attribute uid
LDAP server' ldap_trueconf property [in,external_attribute] successfully updated
/domain/trueconf.ru/modificators/ldap/set ldap_trueconf out\external_attribute uid
LDAP server' ldap_trueconf property [out,external_attribute] successfully updated
/domain/trueconf.ru/modificators/ldap/set ldap_trueconf cache_ttl 1000
LDAP server' ldap_trueconf property "cache_ttl" successfully updated
/domain/trueconf.ru/modificators/ldap/info
┌───────────────┬────────────────────────────────────────┐
│ Id │ Properties │
├───────────────┼────────────────────────────────────────┤
│ldap_trueconf │Cache policy: only_resp │
│ │Cache ttl: 10000 s. │
│ │Internal attribute (in): telephoneNumber│
│ │Internal attribute (out): telephoneNumbe│
│ │r │
│ │External attribute (in): uid │
│ │External attribute (out): uid │
└───────────────┴────────────────────────────────────────┘ |
Настройка модификации
Настройка через CoCon
Контекст модификации можно настроить командой:
/domain/<DOMAIN>/modificators/edit <MODIFICATION_CONTEXT>
где:
- <DOMAIN> — имя виртуальной АТС;
- <MODIFICATION_CONTEXT> — уникальное имя модификации номеров (в примере ldap_trueconf);
Пример:
<?xml version="1.0" encoding="UTF-8"?>
<modificators xmlns:xs="http://www.w3.org/2001/XMLSchema-instance" xs:noNamespaceSchemaLocation="ecss_modificators.xsd" name="ldap_trueconf">
<in>
<rule name="in_local_calls">
<conditions/>
<actions>
<external_modification service="ldap_modification_service" id="ldap_trueconf" timeout="5000" args="["cgpn","cdpn"]"/>
</actions>
<result>
<finish/>
</result>
</rule>
</in>
<out>
<rule name="out_local_calls">
<conditions/>
<actions>
<external_modification service="ldap_modification_service" id="ldap_trueconf" timeout="5000" args="["cgpn","cdpn"]"/>
</actions>
<result>
<finish/>
</result>
</rule>
</out>
</modificators> |
Данный пример контекста модификации преобразует только вызовы с символьным URI обоих параметров "cgpn"и"cdpn", правило по выходу ожидает, что оба номера можно будет преобразовать, поскольку, если LDAP-сервер не сможет отобразить хоть одно из запрашиваемых полей, внешняя модификация будет провалена! |
где:
- <service> — это сервис, который занимается внешней модификацией и поддерживается на данный момент лишь один: ldap_modification_service;
- <id> — это сервер для модификации, настроенный ранее (в примере ldap_trueconf);
- <timeout> — время ожидания ответа;
- <args> — аргументы для сервиса внешней модификации. В данный момент в аргументах должен быть JSON список с строками cgpn и cdpn (с учетом регистра).
Настройка через веб
Модификацию можно настроить через веб приложение "Модификация номеров":

Кэширование
SSW кэширует результаты выполнения внешней маршрутизации с помощью сервера LDAP. Кэшируются только ответы на запросы в моменты инициализации вызова. Хранение кеша осуществляется с настраиваемым периодом (выше указанный параметр "cache_ttl" ). Есть возможность просмотра и очистки кэша с помощью следующих команд:
/domain/<DOMAIN>/modificators/ldap/cache/clean <ID> [--direction]
/domain/<DOMAIN>/modificators/ldap/cache/info <ID> [--direction]
где:
- <DOMAIN> — имя виртуальной АТС;
- <id> — это сервер для модификации, настроенный ранее (в примере ldap_trueconf);
- <--direction> — направление обработки модификации , прием или передача (in / out)
Пример:
/domain/test_domain/modificators/ldap/cache/info *
LDAP cache *:
┌──┬────────────────────────────────────────┬────────────────────────────────────────┬────────────────────────────────────────┐
│Id│ Internal attributes │ External attrubutes │ Created At │
├──┼────────────────────────────────────────┼────────────────────────────────────────┼────────────────────────────────────────┤
└──┴────────────────────────────────────────┴────────────────────────────────────────┴────────────────────────────────────────┘ |
/domain/trueconf.ru/modificators/ldap/cache/info *
LDAP cache *:
┌─────────────┬─────────┬────────────────────┬────────────────────┬────────────────────┬────────────────────┐
│ Id │Direction│Internal attributes │External attrubutes │ Host │ Created At │
├─────────────┼─────────┼────────────────────┼────────────────────┼────────────────────┼────────────────────┤
│ldap_trueconf│out │42009 │ivanov.ivan │- │2025/05/23 08:49:37 │
│ldap_trueconf│out │42007 │petrov.petr │- │2025/05/23 08:49:37 │
│ldap_trueconf│in │42009 │ivanov.ivan │- │2025/05/23 08:49:37 │
│ldap_trueconf│in │42007 │petrov.petr │- │2025/05/23 08:49:37 │
└─────────────┴─────────┴────────────────────┴────────────────────┴────────────────────┴────────────────────┘ |
domain/trueconf.ru/modificators/ldap/cache/clean *
LDAP cache for all successfully cleaned with result: ok.
domain/trueconf.ru/modificators/ldap/cache/info *
LDAP cache *:
┌──┬────────────────────────────────────────┬────────────────────────────────────────┬────────────────────────────────────────┐
│Id│ Internal attributes │ External attrubutes │ Created At │
├──┼────────────────────────────────────────┼────────────────────────────────────────┼────────────────────────────────────────┤
└──┴────────────────────────────────────────┴────────────────────────────────────────┴────────────────────────────────────────┘
|
SIP-trunk SSW ↔ TrueConf
CLI
Создать SIP статический транк для TrueConf следующей командой:
/domain/<DOMAIN>/trunk/sip/declare <ROUTING_CONTEXT> <GROUP> <TRUNK_INTERFACE> <IPSET> static <DEST_HOST> <DEST_PORT> <MODE> <LISTEN_PORT>
где:
- <DOMAIN> — имя виртуальной АТС;
- <ROUTING_CONTEXT> — название существующего контекста маршрутизации (по умолчанию "default_routing");
- <GROUP> — название группы интерфейсов (может быть задана существующая или новая группа);
- <TRUNK_INTERFACE> — имя системного интерфейса, описывающего данное направление. Имя интерфейса является внутрисистемным идентификатором, участвующем в маршрутизации, отображении статистики и другое;
- <IPSET> — имя группы локальных адресов;
- static — декларация статического транка;
- <DEST_HOST> — IP-адрес или доменное имя встречного устройства для взаимодействия;
- <DEST_PORT> — транспортный порт встречного устройства для взаимодействия с ним по протоколу SIP;
- <MODE> — режим работы транка:
- sip-proxy — на направлении работает протокол SIP;
- sip-t — на направлении работает протокол SIP-T (используется инкапсуляция ISUP);
- sip-i — на направлении работает протокол SIP-I (используется инкапсуляция ISUP);
- sip-q — на направлении работает протокол SIP-Q(используется для инкапсуляции ISUP)
- <LISTEN_PORT> — транспортный порт, используемый SIP-адаптером для приема сигнализации. SIP-адаптер может использовать несколько портов для приема сигнализации, что позволяет организовать несколько транков с одним и тем же устройством. Как минимум один локальный (слушающий) порт должен быть назначен в обязательном порядке.
Пример:
/domain/trueconf.ru/trunk/sip/declare default_routing sip trueconf test_set static 10.0.20.95 5060 sip-proxy 5060
Executed on the sip1@ecss1
declared |
Назначить на созданный транк "trueconf" ранее созданную модификацию "ldap_trueconf" следующей командой:
/domain/<DOMAIN>/iface/user-set <OWNER> <GROUP> <TRUNK> modificator <MODIFICATION_CONTEXT>
где:
- <DOMAIN> — имя виртуальной АТС;
- <OWNER> — имя владельца (символ "*" используется для указания всех владельцев);
- <GROUP> —имя группы (символ "*" используется для указания всех групп);
- <TRUNK> —имя транка;
- <MODIFICATION_CONTEXT> — имя модификации.
Пример:
/domain/trueconf.ru/iface/user-set sip1 sip trueconf modificator ldap_trueconf
Property 'modificator' successfully changed to 'ldap_trueconf' for interfaces:
trueconf |
/domain/trueconf.ru/iface/info sip1 sip trueconf
┌─────────┬─┬───────────────────┬────────────────────────────────────────────────────────────────────────────────┐
│Interface│W│ Property │ Value │
├─────────┼─┼───────────────────┼────────────────────────────────────────────────────────────────────────────────┤
│trueconf │i│adapter\version │"3.14.15.17.192" │
│ │i│bandwidth\total │256 │
│ │i│cause_location │default │
│ │i│cdpn_transformation│none │
│ │D│cfc-support │true │
│ │i│declaration │{"abf",{1747,971812,384981}} │
│ │g│domain │"trueconf.ru" │
│ │i│dynamic │false │
│ │i│external_id │69957632 │
│ │g│gate │{gate_amqp,<<"acp.adapter.init.ex">>,<<"acp.sip.sip1.test_set.init.rk">>} │
│ │i│group │"sip" │
│ │i│id │<<"trueconf">> │
│ │i│ip │"10.0.20.96" │
│ │i│ip_set │"test_set" │
│ │i│isActive │true │
│ │i│listen_port │5060 │
│ │i│media-profile │{media_profile,"default",user, │
│ │ │ │ [{media_profile_codecs,'<other>', │
│ │ │ │ [{media_profile_codec,<<"<other>">>,<<"*">>,true,#{}}], │
│ │ │ │ #{offroad => false,'rtcp-enabled' => true}}, │
│ │ │ │ {media_profile_codecs,audio, │
│ │ │ │ [{media_profile_codec,<<"G722">>,<<"*">>,true,#{}}, │
│ │ │ │ {media_profile_codec,<<"PCMA">>,<<"*">>,true,#{}}, │
│ │ │ │ {media_profile_codec,<<"PCMU">>,<<"*">>,true,#{}}, │
│ │ │ │ {media_profile_codec,<<"G729">>,<<"*">>,true,#{}}, │
│ │ │ │ {media_profile_codec,<<"telephone-event">>,<<"*">>,true,#{}}], │
│ │ │ │ #{offroad => false,'rtcp-enabled' => true}}], │
│ │ │ │ #{'dtmf-receive-type' => auto,'dtmf-transmit-type' => transit}} │
│ │i│mode │sipproxy │
│ │i│modificator │ldap_trueconf │
│ │i│my_from │none │
│ │i│network_interface │"test_set" │
│ │i│owner │"sip1" │
│ │i│port │5060 │
│ │i│profile │undefined │
│ │i│remote_client │default │
│ │i│remote_network_type│local │
│ │i│req100rel │supported │
│ │i│routing.context │default_routing │
│ │D│site │<<"local">> │
│ │i│stat\cps_max\in │0 │
│ │i│stat\cps_max\out │0 │
│ │i│stat\cps_max\total │0 │
│ │i│stat\in │0 │
│ │i│stat\out │0 │
│ │i│stat\rejected\in │0 │
│ │i│stat\rejected\out │0 │
│ │i│subtype │trunk │
│ │D│terminal_type │smart │
│ │i│trunk │"trueconf.ru.sip.trunk.autoname" │
│ │i│type │sip │
│ │i│user_name │none │
│ │D│zone │<<"default">> │
└─────────┴─┴───────────────────┴────────────────────────────────────────────────────────────────────────────────┘
Legend:
W: Where property is set:
D: This is default property
G: This is global property
g: This is group property
O: This is owner property
B: This is group+owner property
i: This is interface property
?: Unknown property level
Note: * char in W column means "Can't read iface resource info". Error reason in value column in this case |
|
Web
Вариант создание SIP-trunk-a через web интерфейс:
- Выбрать приложение "Менеджер транков"
- Выбрать добавить (+)
- Указать параметры:
- Имя транка для "TrueConf"
- Можно сразу указать предварительно созданную модификацию "ldap_trueconf"
- IP-add TrueConf сервера
- Порт приема sip сообщений от TrueConf сервера
- Сохранить конфигурацию "Создать"

Минимальная конфигурация для получения и обработки запросов от клиентов сервиса "TrueConf" на абонентов SSW создана.
Звонок от trueconf клиента petrov.petr@trueconf.ru на абонента SSW 42009 который так же имеет аккаунт trueconf = ivanov.ivan@trueconf.ru:
Пример
- TrueConf абонент А(petrov.petr@trueconf.ru) набирает из адресной книге абонента B (#sip:ivanov.ivan@trueconf.ru).
- TrueConf сервер отравляет вызов на SIP-транк по умолчанию на SSW.
- SSW получает invite c полями From: petrov.petr@trueconf.ru /To: ivanov.ivan@trueconf.ru через транк "trueconf" на котором установлена модификация "ldap_trueconf".
- SSW отправляет ldap запрос "searchRequest" с указанием требуемых атрибутов ( Filter: (&(|(uid=petrov.petr)(uid=ivanov.ivan))(objectClass=person)) ).
- В ответном сообщении LDAP сервер отправляет "searchResEntry" с данными:
(item telephoneNumber = 42009 / item uid = ivanov.ivan + item telephoneNumber = 42007 / item uid = petrov.petr). - SSW выполняет модификацию символьных URI в номера абонентов SSW, ivanov.ivan → 42009 и petrov.petr → 42007.
- SSW устанавливает соединение между транком "trueconf" и абонентом В (42009).
- Абонент В отвечает trueconf абоненту А(petrov.petr@trueconf.ru).
- Абонент А и В завершают разговор.
- SSW формирует записи в cdr и "Истории вызовов"

INVITE sip:ivanov.ivan@trueconf.ru SIP/2.0
Via: SIP/2.0/UDP 10.0.20.95:5060;branch=z9hG4bKDB3A0E2FDC3B5C4AAA59398C4E983309-1
Max-Forwards: 70
From: "petrov.petr@trueconf.ru"<sip:petrov.petr@trueconf.ru>;tag=0F5D0CCBCF8DA37FB90F91513F9837BA
To: <sip:ivanov.ivan@trueconf.ru>
Call-ID: 9F14E6152CFD77BE152CD56F1AAFA237
CSeq: 1 INVITE
Contact: <sip:petrov.petr@10.0.20.95:5060;transport=udp>
Content-Type: application/sdp
User-Agent: TrueConf Server 5.4.5.1034
Supported: timer, gruu-10
Allow: INVITE, UPDATE, ACK, CANCEL, INFO, OPTIONS, BYE, MESSAGE, SUBSCRIBE, NOTIFY
Session-Expires: 1800; refresher=uac
Min-SE: 90
Content-Length: 1241
v=0
o=petrov.petr@trueconf.ru 1747979553375499 1 IN IP4 10.0.20.95
s=noname
c=IN IP4 10.0.20.95
b=AS:2048
t=0 0
a=group:FEC-FR S1 R1
m=audio 50288 RTP/AVP 114 115 113 104 103 9 0 8 110
c=IN IP4 10.0.20.95
a=rtpmap:114 G7221/32000
a=fmtp:114 bitrate=32000
a=rtpmap:115 G7221/32000
a=fmtp:115 bitrate=48000
a=rtpmap:113 G7221/32000
a=fmtp:113 bitrate=24000
a=rtpmap:104 G7221/16000
a=fmtp:104 bitrate=32000
a=rtpmap:103 G7221/16000
a=fmtp:103 bitrate=24000
a=rtpmap:9 G722/8000
a=rtpmap:0 PCMU/8000
a=rtpmap:8 PCMA/8000
a=rtpmap:110 telephone-event/8000
a=sendrecv
m=video 50290 RTP/AVP 99 98 100 102 101 34
c=IN IP4 10.0.20.95
b=TIAS:2097152
a=content:main
a=rtpmap:99 H264/90000
a=fmtp:99 profile-level-id=640028
a=rtpmap:98 H264/90000
a=fmtp:98 profile-level-id=4D0028
a=rtpmap:100 H264/90000
a=fmtp:100 profile-level-id=420028
a=rtpmap:102 H263-2000/90000
a=fmtp:102 CIF4=1;CIF=1
a=rtpmap:101 H263-1998/90000
a=fmtp:101 CIF4=1;CIF=1
a=rtpmap:34 H263/90000
a=fmtp:34 CIF4=1;CIF=1
a=sendrecv
a=rtcp-fb:* ccm fir
a=fec-source-flow: id=0
a=mid:S1
m=application 50292 UDP/FEC *
c=IN IP4 10.0.20.95
a=sendrecv
a=mid:R1
a=fec-repair-flow: encoding-id=8; fssi=E:1412,S:0,m:8
a=repair-window:200ms
|
| title Звонок от A абонента TrueConf petrov.petr@trueconf.ru на В абонента SSW
participant TrueConf
participant SSW
participant 42009
TrueConf->SSW:**INVITE (SDP) sip:ivanov.ivan@trueconf.ru**\nFrom: "**petrov.petr@trueconf.ru"** \n**<sip:petrov.petr@trueconf.ru>**; \nTo: <**sip:ivanov.ivan@trueconf.ru**>\nContact: <sip:petrov.petr@10.0.20.95:5060>
SSW->TrueConf:**100 Trying for session update**
SSW->42009:**INVITE (SDP) sip:42009@10.0.20.138:5060**\nFrom: **"petrov.petr@trueconf.ru"** \n**<sip:petrov.petr@trueconf.ru;user=phone>**\nTo: **<sip:42009@trueconf.ru;user=phone>**\nContact: <sip:petrov.petr@10.0.20.31:5060>\nP-Eltex-Info: outgoing\nRemote-Party-ID: **"petrov.petr@trueconf.ru" \n**<sip:petrov.petr@trueconf.ru>**;\nparty=**calling**;screen=yes;privacy=off
42009->SSW:**100 Trying**
42009->SSW:**180 Ringing**
42009<-SSW:**PRACK**
SSW<-42009:**200 OK**
SSW->TrueConf:**180 Ringing (SDP)**\nFrom: **"petrov.petr@trueconf.ru"**\n**<sip:petrov.petr@trueconf.ru>**\nTo: **<sip:ivanov.ivan@trueconf.ru>**"\nContact: <sip:ivanov.ivan@10.0.20.31:5060>\nP-Eltex-Info: incoming
42009->SSW:**200 OK (SDP)**
SSW->42009:**ACK**
SSW->TrueConf:**200 OK**
TrueConf->SSW:**ACK**
TrueConf->SSW:**INFO**
SSW->TrueConf:**200 OK**
42009->SSW:**BYE**
SSW->42009:**200 OK**
SSW->TrueConf:**BYE**
TrueConf->SSW:**200 OK**
|
| INVITE sip:42009@10.0.20.138:5060 SIP/2.0
Via: SIP/2.0/UDP 10.0.20.31:5060;branch=z9hG4bK-o-1747981786458214-067833-101
From: "petrov.petr@trueconf.ru" <sip:petrov.petr@trueconf.ru;user=phone>;tag=ecssO1747981786458220067833
To: <sip:42009@trueconf.ru;user=phone>
Call-ID: 06d3ef2855782afd
CSeq: 1 INVITE
User-Agent: Eltex ECSS-10 SIP 3.14.15.17.192
Max-Forwards: 69
Contact: <sip:petrov.petr@10.0.20.31:5060;line=e064b4b7d36a0762>
X-Call-Ref: 3330628706
Accept: multipart/mixed, application/sdp
Allow: INVITE, ACK, BYE, CANCEL, PRACK, REGISTER, INFO, REFER, NOTIFY, OPTIONS, SUBSCRIBE, MESSAGE, UPDATE, PUBLISH
Allow-Events: presence, dialog, conference, as-feature-event, keep-alive
P-Eltex-Info: trueconf.ru 42009@trueconf.ru/- 3330628706 sip1@ecss1 <0.6783.3>/1 outgoing
Category: 10
Session-Expires: 1800;refresher=uac
Min-SE: 300
Supported: 100rel, timer, replaces
Remote-Party-ID: "petrov.petr@trueconf.ru" <sip:petrov.petr@trueconf.ru>;party=calling;screen=yes;privacy=off
Content-Type: application/sdp
Content-Length: 691
v=0
o=- 2208989156 3956968389 IN IP4 10.0.20.82
s=ECSS-10
b=AS:3166
t=0 0
m=audio 12084 RTP/AVP 8 0 9 96
c=IN IP4 10.0.20.82
a=rtpmap:8 PCMA/8000/1
a=rtpmap:0 PCMU/8000/1
a=rtpmap:9 G722/8000/1
a=rtpmap:96 telephone-event/8000
a=fmtp:96 0-16
a=rtcp:12085 IN IP4 10.0.20.82
a=sendrecv
a=ssrc:1512148167 cname:32acdb1a728e8b18
m=video 12086 RTP/AVP 100 96
c=IN IP4 10.0.20.82
b=TIAS:3000000
a=rtpmap:100 H264/90000
a=fmtp:100 packetization-mode=0;profile-level-id=42e01E
a=rtpmap:96 H263-1998/90000
a=fmtp:96 CIF=1;QCIF=1
a=rtcp:12087 IN IP4 10.0.20.82
a=sendrecv
a=imageattr:* recv [x=640,y=480,q=0.50]
a=ssrc:2146164917 cname:32acdb1a728e8b18
a=rtcp-fb:* nack pli
|
| SIP/2.0 180 Ringing
Via: SIP/2.0/UDP 10.0.20.95:5060;branch=z9hG4bKDB3A0E2FDC3B5C4AAA59398C4E983309-1
From: "petrov.petr@trueconf.ru"<sip:petrov.petr@trueconf.ru>;tag=0F5D0CCBCF8DA37FB90F91513F9837BA
To: <sip:ivanov.ivan@trueconf.ru>;tag=ecssI1747981786351243038360
Call-ID: 9F14E6152CFD77BE152CD56F1AAFA237
CSeq: 1 INVITE
Supported: timer, replaces
Allow: INVITE, ACK, BYE, CANCEL, PRACK, REGISTER, INFO, REFER, NOTIFY, OPTIONS, SUBSCRIBE, MESSAGE, UPDATE, PUBLISH
Allow-Events: presence, dialog, conference, as-feature-event, keep-alive
Content-Type: application/sdp
Contact: <sip:ivanov.ivan@10.0.20.31:5060;line=e064b4b7d36a0762>
P-Eltex-Info: trueconf.ru trueconf/-1 3330628706 sip1@ecss1 <0.6782.3>/3 incoming
X-Call-Ref: 3330628706
User-Agent: Eltex ECSS-10 SIP 3.14.15.17.192
Content-Length: 629
v=0
o=- 2208989197 3956968389 IN IP4 10.0.20.82
s=ECSS-10
b=AS:3166
t=0 0
m=audio 12088 RTP/AVP 9 110
c=IN IP4 10.0.20.82
a=rtpmap:9 G722/8000/1
a=rtpmap:110 telephone-event/8000
a=fmtp:110 0-16
a=rtcp:12089 IN IP4 10.0.20.82
a=sendrecv
a=ssrc:958229803 cname:1c7586f267ffe5ad
m=video 12090 RTP/AVP 99
c=IN IP4 10.0.20.82
b=TIAS:3000000
a=rtpmap:99 H264/90000
a=fmtp:99 packetization-mode=0;profile-level-id=42001E
a=rtcp:12091 IN IP4 10.0.20.82
a=sendrecv
a=imageattr:* recv [x=640,y=480,q=0.50]
a=ssrc:229923839 cname:1c7586f267ffe5ad
a=rtcp-fb:* nack pli
m=application 0 UDP/FEC *
c=IN IP4 10.0.20.95
|
|
|

|
TYPE;DATIME;KOD_A;KOD_B;N_TR_GR_A;N_TR_GR_B;T_ECD;T_DBA;CAUSE_ISUP;CAUSE_INT;COMPLETIND;DIALED_DIG;ACTSUSB;CATEG_A;PLACE;REC_SEQ;SERVUSER;SERVINDIC;TREATMENT;CONN_ID;REDIRECTED;REDIRECTION;ORIG_CALLED;SRC_IP;DST_IP;PORT_A;PORT_B;DIAGNOSTIC
Call;2025.05.23 12:46:19;42007;42009;trueconf.ru.sip.trunk.autoname;;5;2;16;normal;7;42009;;10;1;0;42007;;Call is complete;986411945;;;;10.0.20.95;10.0.20.138;trueconf;42009@trueconf.ru; |
|

|
 
|
 
|
ldapsearch -x -D cn=admin,dc=myldap,dc=eltex,dc=local -w password -h 10.0.20.35 -b cn=petrov.petr@trueconf.ru,ou=people,dc=myldap,dc=eltex,dc=local
# extended LDIF
#
# LDAPv3
# base <cn=petrov.petr@trueconf.ru,ou=people,dc=myldap,dc=eltex,dc=local> with scope subtree
# filter: (objectclass=*)
# requesting: ALL
#
# petrov.petr@trueconf.ru, people, myldap.eltex.local
dn: cn=petrov.petr@trueconf.ru,ou=people,dc=myldap,dc=eltex,dc=local
cn: petrov.petr@trueconf.ru
displayName: petrov.petr@trueconf.ru
mail: petrov.petr@trueconf.ru
objectClass: inetOrgPerson
objectClass: top
sn: 42007
telephoneNumber: 42007
uid: petrov.petr
userPassword:: NDIwMDc=
# search result
search: 2
result: 0 Success
# numResponses: 2
# numEntries: 1
|
ldapsearch -x -D cn=admin,dc=myldap,dc=eltex,dc=local -w password -h 10.0.20.35 -b cn=ivanov.ivan@trueconf.ru,ou=people,dc=myldap,dc=eltex,dc=local
# extended LDIF
#
# LDAPv3
# base <cn=ivanov.ivan@trueconf.ru,ou=people,dc=myldap,dc=eltex,dc=local> with scope subtree
# filter: (objectclass=*)
# requesting: ALL
#
# ivanov.ivan@trueconf.ru, people, myldap.eltex.local
dn: cn=ivanov.ivan@trueconf.ru,ou=people,dc=myldap,dc=eltex,dc=local
cn: ivanov.ivan@trueconf.ru
displayName: 42009
mail: ivanov.ivan@trueconf.ru
objectClass: inetOrgPerson
objectClass: top
sn: 42009
telephoneNumber: 42009
uid: ivanov.ivan
userPassword:: NDIwMDk=
# search result
search: 2
result: 0 Success
# numResponses: 2
# numEntries: 1
|
|
Звонок от абонента SSW/ТфОП на конференцию запущенную на TrueConf
Пример
- TrueConf оператор создает конференцию (в примере ID конференции = 12345) в данной конференции указаны два участника, клиенты trueconf petrov.petr и ivanov.ivan. Клиент petrov.petr является владельцем данной конференции. Альтернативный вариант , клиент trueconf petrov.petr через приложение создает конференцию, назначает ID конференции = 12345 и указывает список участников (клиентов trueconf).
- Конференция активна, участники общаются.
- Требуется подключится сотруднику у которого нет возможности использовать ПО TrueConf, есть только телефон SSW (42001). Сотрудник знает идентификатор конференции. Аналогичным образом SSW обработает звонок от абонента ТфОП на конференцию запущенную на TrueConf.
- Абонент SSW (42001) набирает код доступа к IVR ВСК TrueConf 0904.
- Абонент слышит приглашение к донабору номера - "введите номер конференции".
- Абонент набирает идентификатор конференции (12345).
- IVR TrueConf выполняет модификацию номера 00<ConfID> (два 00 необходимы для понимания TrueConf-ом звонка в конференцию).
- SSW посылает запрос Invite в TrueConf server, через SIP-транк "trueconf".
- Абонент SSW попадет в конференцию. (В зависимости от конфигурации конференции, может требоваться подтверждение от инициатора).
- Клиенты trueconf и абонент SSW участвуют в конференции.
- Абонент SSW завершают разговор (отключается от конференции). Или инициатор конференции ее завершает.
- SSW формирует записи в cdr и "Истории вызовов" (на номер доступа к ВСК TrueConf 0904).

Для реализации данного функционала нужно дополнить конфигурацию на SSW.
Добавить сервис IVR для доступа к TrueConf
- Для создания IVR TrueConf нужно открыть IVR редактор.
- Сохранить созданный IVR скрипт.
Добавить правило маршрутизации.
CLI
/domain/<DOMAIN>/routing/edit default_routing
где:
- <DOMAIN> — имя виртуальной АТС;
добавив туда следующее правило
<rule name="trueconf">
<conditions>
<cdpn digits="00%"/>
</conditions>
<result>
<external>
<trunk value="trueconf"/>
</external>
</result>
</rule> |
Web
В "Менеджер маршрутизации" добавить еще одно правило доступа к sip-trunk на TrueConf.

Изменить модификацию
В текущей конфигурации при звонке через sip-trunk "trueconf" все cgpn/cdpn будут анализироваться в LDAP сервере для замены на символьный формат URI. В случае звонка от абонентов SSW/ТфОП на активную конференцию требуется передать код конференции в цифровом виде без модификации (00<Conf_ID>).
Добавим правило по выходу для модификации "ldap_trueconf".
CLI
domain/<DOMAIN>/modificators/edit ldap_trueconf
где:
- <DOMAIN> — имя виртуальной АТС;
добавив туда следующее правило по выходу (OUT) , и поставить его до основного правила модификации "in_local_calls".
. . .
<rule name="00_Conf_ID">
<conditions>
<cdpn digits="00%"/>
</conditions>
<actions/>
<result>
<finish/>
</result>
</rule>
. . . |
Данным правилом мы пропускаем звонок в случае cdpn с любыми цифрами после 00 без модификации номера В. Номер А так же отправляется на TrueConf конференцию без модификации, указывая, что звонок на конференцию прошел от абонента SSW / ТфОП.
Web
В "Модификация номеров" добавить еще одно правило по выходу. И установить его на первую позицию.

Результат:
INVITE sip:0904@trueconf.ru;user=phone SIP/2.0
Via: SIP/2.0/UDP 10.0.20.139:5060;branch=z9hG4bKa25644758b01731e52ef8b39a45ee2b3;rport
From: "sub_A_42001" <sip:42001@trueconf.ru>;tag=918815402
To: <sip:0904@trueconf.ru;user=phone>
Call-ID: 4286849174@10_0_20_139
CSeq: 3 INVITE
Contact: <sip:42001@10.0.20.139:5060>
Authorization: Digest username="42001", realm="trueconf.ru", qop=auth, algorithm=MD5, uri="sip:0904@trueconf.ru;user=phone", nonce="d859b38ee8ad3781b1faadac11cea031", nc=00000001, cnonce="525b115255a602162e2a16954502424c", response="3e3e4
f694257857c943de0fffbf709"
Max-Forwards: 70
User-Agent: A510 IP/42.076.00.000.000
Supported: replaces
Allow-Events: message-summary, refer, ua-profile
Allow: INVITE, ACK, CANCEL, BYE, OPTIONS, INFO, REFER, SUBSCRIBE, NOTIFY
Content-Type: application/sdp
Content-Length: 360
v=0
o=42001 5010 155 IN IP4 10.0.20.139
s=Mapping
c=IN IP4 10.0.20.139
t=0 0
m=audio 5010 RTP/AVP 9 8 0 96 97 2 18 101
a=rtpmap:9 G722/8000
a=rtpmap:8 PCMA/8000
a=rtpmap:0 PCMU/8000
a=rtpmap:96 G726-32/8000
a=rtpmap:97 AAL2-G726-32/8000
a=rtpmap:2 G726-32/8000
a=rtpmap:18 G729/8000
a=rtpmap:101 telephone-event/8000
a=fmtp:101 0-16
a=ptime:20
|
| title Звонок от абонента 42001 SSW на конференцию ID=12345 запущенную в TrueConf
participant 42001
participant SSW
participant TrueConf
42001->SSW:**INVITE (SDP) sip:0904@trueconf.ru**\nFrom: "**sub_A_42001" <sip:42001@trueconf.ru>**; \nTo: <**sip:0904@trueconf.ru**>\nContact: <sip:42001@10.0.20.139:5060>
SSW->42001:**100 Trying for session update**
SSW->42001:**200 OK (SDP)**
42001->SSW:**ACK**
42001->SSW:**RTP EVENT**\nRFC 2833 RTP Event **Event ID: DTMF One 1 (1)
42001->SSW:**RTP EVENT**\nRFC 2833 RTP Event **Event ID: DTMF Two 2 (2)
42001->SSW:**RTP EVENT**\nRFC 2833 RTP Event **Event ID: DTMF Three 3 (3)
42001->SSW:**RTP EVENT**\nRFC 2833 RTP Event **Event ID: DTMF Four 4 (4)
42001->SSW:**RTP EVENT**\nRFC 2833 RTP Event **Event ID: DTMF Five 5 (5)
SSW->TrueConf:**INVITE (SDP) sip:0012345@10.0.20.95:5060**\nFrom: **sub_A_42001" <sip:42001@trueconf.rus;user=phone>**\nTo: <**sip:0012345@10.0.20.95**;user=phone>\nContact: <sip:42001@10.0.20.31:5060>\nP-Eltex-Info: outgoing\nRemote-Party-ID: <sip:**42001@trueconf.ru>**;\nparty=**calling**;screen=yes;privacy=off
TrueConf->SSW:**100 Trying**
TrueConf->SSW:**180 Ringing**
TrueConf->SSW:**200 OK (SDP)**
SSW->TrueConf:**ACK**
SSW->42001:**INVITE (SDP) sip:42001@10.0.20.139:5060**\nFrom: **"0904" <sip:0904@trueconf.ru**;user=phone>\nTo: **"sub_A_42001" <sip:42001@trueconf.ru>**\nContact: <sip:0904@10.0.20.31:5060>\nP-Eltex-Info: connected\nRemote-Party-ID: **"42007" <sip:0012345@trueconf.ru>**;\nparty=**called**;screen=yes;privacy=off
42001->SSW:**100 Trying for session update**
42001->SSW:**200 OK**
SSW->42001:**ACK**
SSW->TrueConf:**INFO**
TrueConf->SSW:**200 OK**
42001->SSW:**BYE**
SSW->42001:**200 OK**
SSW->TrueConf:**BYE**
TrueConf->SSW:**200 OK** |
| INVITE sip:0012345@10.0.20.95:5060 SIP/2.0 Via: SIP/2.0/TCP 10.0.20.31:37817;branch=z9hG4bK-o-1748239662125040-055570-10 From: "sub_A_42001" <sip:42001@trueconf.ru;user=phone>;tag=ecssO1748239662125046055570 To: <sip:0012345@10.0.20.95;user=phone> Call-ID: 06d43a82e08fcb43 CSeq: 1 INVITE User-Agent: Eltex ECSS-10 SIP 3.14.15.17.192
Max-Forwards: 69
Contact: <sip:42001@10.0.20.31:5060;line=e064b4b7d36a0762>
X-Call-Ref: 7234248172626130533
Accept: multipart/mixed, application/sdp
Allow: INVITE, ACK, BYE, CANCEL, PRACK, REGISTER, INFO, REFER, NOTIFY, OPTIONS, SUBSCRIBE, MESSAGE, UPDATE, PUBLISH
Allow-Events: presence, dialog, conference, as-feature-event, keep-alive
P-Eltex-Info: trueconf.ru trueconf/- 7234248172626130533 sip1@ecss1 <0.5557.0>/1 outgoing
Category: 10
Session-Expires: 1800;refresher=uac
Min-SE: 300
Supported: 100rel, timer, replaces
Remote-Party-ID: "sub_A_42001" <sip:42001@trueconf.ru>;party=calling;screen=yes;privacy=off
Content-Type: application/sdp
Content-Length: 691 v=0
o=- 2208988830 3957228462 IN IP4 10.0.20.82
s=ECSS-10
b=AS:3166
t=0 0
m=audio 12030 RTP/AVP 8 0 9 96
c=IN IP4 10.0.20.82
a=rtpmap:8 PCMA/8000/1
a=rtpmap:0 PCMU/8000/1
a=rtpmap:9 G722/8000/1
a=rtpmap:96 telephone-event/8000
a=fmtp:96 0-16
a=rtcp:12031 IN IP4 10.0.20.82
a=sendrecv
a=ssrc:1747633771 cname:56200275641ceef0
m=video 12032 RTP/AVP 100 96
c=IN IP4 10.0.20.82
b=TIAS:3000000
a=rtpmap:100 H264/90000
a=fmtp:100 packetization-mode=0;profile-level-id=42e01E
a=rtpmap:96 H263-1998/90000
a=fmtp:96 CIF=1;QCIF=1
a=rtcp:12033 IN IP4 10.0.20.82
a=sendrecv
a=imageattr:* recv [x=640,y=480,q=0.50]
a=ssrc:1265926128 cname:56200275641ceef0
a=rtcp-fb:* nack pli
|
| INVITE sip:42001@10.0.20.139:5060 SIP/2.0
Via: SIP/2.0/UDP 10.0.20.31:5060;branch=z9hG4bK-o-1748239663135958-055560-0904
From: "0904" <sip:0904@trueconf.ru;user=phone>;tag=ecssI1748239658068280038150
To: "sub_A_42001" <sip:42001@trueconf.ru>;tag=918815402
Call-ID: 4286849174@10_0_20_139
CSeq: 2 INVITE
User-Agent: Eltex ECSS-10 SIP 3.14.15.17.192
Max-Forwards: 70
Contact: <sip:0904@10.0.20.31:5060;line=e064b4b7d36a0762>
X-Call-Ref: 176229158
Accept: multipart/mixed, application/sdp
Allow: INVITE, ACK, BYE, CANCEL, PRACK, REGISTER, INFO, REFER, NOTIFY, OPTIONS, SUBSCRIBE, MESSAGE, UPDATE, PUBLISH
Allow-Events: presence, dialog, conference, as-feature-event, keep-alive
P-Eltex-Info: trueconf.ru 42001@trueconf.ru/-1 176229158 sip1@ecss1 <0.5556.0>/6 connected
Session-Expires: 1800;refresher=uac
Min-SE: 300
Supported: timer, replaces
Remote-Party-ID: "42007" <sip:0012345@trueconf.ru>;party=called;screen=yes;privacy=off
Content-Type: application/sdp
Content-Length: 279
v=0
o=- 2208988880 3957228458 IN IP4 10.0.20.82
s=ECSS-10
t=0 0
m=audio 12028 RTP/AVP 9 101
c=IN IP4 10.0.20.82
a=rtpmap:9 G722/8000/1
a=rtpmap:101 telephone-event/8000
a=fmtp:101 0-16
a=rtcp:12029 IN IP4 10.0.20.82
a=sendrecv
a=ssrc:217070892 cname:05eb169040990cf9
|
|
|
Вызов из конференции TrueConf на абонента ТфОП / корпоративной сети.
Пример
- Конференция активна, участники общаются.
- В процессе конференции потребовалось подключить сотрудника, который доступен по корпоративному телефону / по мобильному или городскому телефону.
- TrueConf сервер устанавливает соединение через SIP trunk, в качестве номера А указывается номер конференции (00+номер конференции) + имя конференции (Конференция 12345).
- При приеме вызова абонентом он подключается к конференции.
- Клиенты trueconf и абонент SSW участвуют в конференции.
- Абонент SSW завершают разговор (отключается от конференции). Или инициатор конференции ее завершает.

Для реализации данного функционала нужно дополнить конфигурацию на SSW.
Изменить модификацию
В текущей конфигурации при звонке через sip-trunk "trueconf" все cgpn/cdpn будут анализироваться в LDAP сервере для замены на символьный формат URI. В случае звонка из конференции на абонента SSW/ТфОП требуется передать номер абонента В в оригинальном виде без модификации (42001). Модификация номера А так же не должна выполнятся → будет передан номер конференции (00+12345).
Добавим правило по входу для модификации "ldap_trueconf".
CLI
domain/<DOMAIN>/modificators/edit ldap_trueconf
где:
- <DOMAIN> — имя виртуальной АТС;
добавив туда следующее правило по входу (IN) , и поставить его до основного правила модификации "in_local_calls".
. . .
<in>
<rule name="00_42">
<conditions>
<cgpn digits="00%"/>
<cdpn digits="42%"/>
</conditions>
<actions/>
<result>
<finish/>
</result>
</rule>
</in>
. . . |
Данным правилом мы пропускаем звонок в случае cdpn с любыми цифрами после 42 и cgpn с любыми цифрами после 00 без модификации номеров.
Web
В "Модификация номеров" добавить еще одно правило по входу. И установить его на позицию перед правилом "in_local_calls".

Результат:
INVITE sip:+42001@trueconf.ru SIP/2.0
Via: SIP/2.0/UDP 10.0.20.95:5060;branch=z9hG4bKB0464D39CC32276B8FE1117BB2260F59-1
Max-Forwards: 70
From: "Конференция Тест"<sip:0012345@trueconf.ru>;tag=C7B2984B568C49CFBF99DC059230B9D5
To: <sip:+42001@trueconf.ru>
Call-ID: 5886E6DD5862602F30EBF0373C8B74D0
CSeq: 1 INVITE
Contact: <sip:10.0.20.95:5060;transport=udp>
Content-Type: application/sdp
User-Agent: TrueConf Server 5.4.5.1034
Supported: timer, gruu-10
Allow: INVITE, UPDATE, ACK, CANCEL, INFO, OPTIONS, BYE, MESSAGE, SUBSCRIBE, NOTIFY
Session-Expires: 1800; refresher=uac
Min-SE: 90
Content-Length: 1237
v=0
o=0012345@trueconf.ru 1749532538445425 1 IN IP4 10.0.20.95
s=noname
c=IN IP4 10.0.20.95
b=AS:1024
t=0 0
a=group:FEC-FR S1 R1
m=audio 50486 RTP/AVP 114 115 113 104 103 9 0 8 110
c=IN IP4 10.0.20.95
a=rtpmap:114 G7221/32000
a=fmtp:114 bitrate=32000
a=rtpmap:115 G7221/32000
a=fmtp:115 bitrate=48000
a=rtpmap:113 G7221/32000
a=fmtp:113 bitrate=24000
a=rtpmap:104 G7221/16000
a=fmtp:104 bitrate=32000
a=rtpmap:103 G7221/16000
a=fmtp:103 bitrate=24000
a=rtpmap:9 G722/8000
a=rtpmap:0 PCMU/8000
a=rtpmap:8 PCMA/8000
a=rtpmap:110 telephone-event/8000
a=sendrecv
m=video 50488 RTP/AVP 99 98 100 102 101 34
c=IN IP4 10.0.20.95
b=TIAS:1048576
a=content:main
a=rtpmap:99 H264/90000
a=fmtp:99 profile-level-id=640020
a=rtpmap:98 H264/90000
a=fmtp:98 profile-level-id=4D0028
a=rtpmap:100 H264/90000
a=fmtp:100 profile-level-id=420028
a=rtpmap:102 H263-2000/90000
a=fmtp:102 CIF4=1;CIF=1
a=rtpmap:101 H263-1998/90000
a=fmtp:101 CIF4=1;CIF=1
a=rtpmap:34 H263/90000
a=fmtp:34 CIF4=1;CIF=1
a=sendrecv
a=rtcp-fb:* ccm fir
a=fec-source-flow: id=0
a=mid:S1
m=application 50490 UDP/FEC *
c=IN IP4 10.0.20.95
a=sendrecv
a=mid:R1
a=fec-repair-flow: encoding-id=8; fssi=E:1412,S:0,m:8
a=repair-window:200ms
|
| title Звонок из конференции ID=12345 запущенной в TrueConf на абонента 42001 SSW
participant TrueConf
participant SSW
participant 42001
TrueConf->SSW:**INVITE (SDP) sip:+42001@trueconf.ru**\nFrom: "**Конференция Тест" <sip:0012345@trueconf.ru>**; \nTo: <**sip:+42001@trueconf.ru**>\nContact: <sip:10.0.20.95:5060>
SSW->TrueConf:**100 Trying for session update**
SSW->42001:**INVITE (SDP) sip:42001@10.0.20.139:5060**\nFrom: "**Конференция Тест" <sip:0012345@trueconf.ru>**; \nTo: <**sip:42001@trueconf.ru**>\nContact: <sip:0012345@10.0.20.31:5060> \nRemote-Party-ID: "Конференция Тест" <sip:0012345@trueconf.ru>;\nparty=calling;screen=yes;privacy=off
42001->SSW:**100 Trying**
42001->SSW:**180 Ringing**
SSW->TrueConf:**180 Ringing (SDP)**
42001->SSW:**200 OK (SDP)**
SSW->42001:**ACK**
SSW->TrueConf:**200 OK (SDP)**
TrueConf->SSW:**ACK**
TrueConf->SSW:**INFO**
SSW->TrueConf:**200 OK**
42001->SSW:**BYE**
SSW->42001:**200 OK**
SSW->TrueConf:**BYE**
TrueConf->SSW:**200 OK** |
| INVITE sip:42001@10.0.20.139:5060 SIP/2.0
Via: SIP/2.0/UDP 10.0.20.31:5060;branch=z9hG4bK-o-1749535015498239-0196320-101
From: "Конференция Тест" <sip:0012345@trueconf.ru;user=phone>;tag=ecssO17495350154982440196320
To: <sip:42001@trueconf.ru;user=phone>
Call-ID: 06d5829e77b12844
CSeq: 1 INVITE
User-Agent: Eltex ECSS-10 SIP 3.14.15.17.197
Max-Forwards: 69
Contact: <sip:0012345@10.0.20.31:5060;line=e064b4b7d36a0762>
X-Call-Ref: 2042997207
Accept: multipart/mixed, application/sdp
Allow: INVITE, ACK, BYE, CANCEL, PRACK, REGISTER, INFO, REFER, NOTIFY, OPTIONS, SUBSCRIBE, MESSAGE, UPDATE, PUBLISH
Allow-Events: presence, dialog, conference, as-feature-event, keep-alive
P-Eltex-Info: trueconf.ru 42001@trueconf.ru/- 2042997207 sip1@ecss1 <0.19632.0>/1 outgoing
Category: 10
Session-Expires: 1800;refresher=uac
Min-SE: 300
Supported: 100rel, timer, replaces
Remote-Party-ID: "Конференция Тест" <sip:0012345@trueconf.ru>;party=calling;screen=yes;privacy=off
Content-Type: application/sdp
Content-Length: 690
v=0
o=- 2208989301 3958523815 IN IP4 10.0.20.82
s=ECSS-10
b=AS:3166
t=0 0
m=audio 12212 RTP/AVP 8 0 9 96
c=IN IP4 10.0.20.82
a=rtpmap:8 PCMA/8000/1
a=rtpmap:0 PCMU/8000/1
a=rtpmap:9 G722/8000/1
a=rtpmap:96 telephone-event/8000
a=fmtp:96 0-16
a=rtcp:12213 IN IP4 10.0.20.82
a=sendrecv
a=ssrc:102554448 cname:322286151fbcea57
m=video 12214 RTP/AVP 100 96
c=IN IP4 10.0.20.82
b=TIAS:3000000
a=rtpmap:100 H264/90000
a=fmtp:100 packetization-mode=0;profile-level-id=42e01E
a=rtpmap:96 H263-1998/90000
a=fmtp:96 CIF=1;QCIF=1
a=rtcp:12215 IN IP4 10.0.20.82
a=sendrecv
a=imageattr:* recv [x=640,y=480,q=0.50]
a=ssrc:2016628796 cname:322286151fbcea57
a=rtcp-fb:* nack pli
|
|
|
Звонок клиента TrueConf на абонента ТфОП / корпоративной сети.
Пример
- Сервер TrueConf по SIP trunk посылает Invite c указанием абонент А = petrov.petr@trueconf.ru, а абонент В = 42001.
- SSW выполняет модификацию номера абонента А petrov.petr@trueconf.ru → 42007, номер абонента В остается без изменений.
- SSW устанавливает соединение с абонентом В 42001.
- Клиент trueconf petrov.petr@trueconf.ru и абонент SSW участвуют в разговоре.
- Абонент SSW или клиент trueconf завершают разговор.
- SSW формирует записи в cdr и "Истории вызовов" (на номер 42007).

Для реализации данного функционала нужно дополнить конфигурацию на SSW.
Изменить модификацию
В текущей конфигурации при звонке через sip-trunk "trueconf" все cgpn/cdpn будут анализироваться в LDAP сервере для замены на символьный формат URI. В случае звонка от клиента TrueConf на абонента SSW/ТфОП требуется передать номер абонента В в оригинальном виде без модификации (42001). Модификация номера А должна быть выполнена (для генерации CDR /Истории звонков) petrov.petr@trueconf.ru → 42007.
Добавим правило по входу для модификации "ldap_trueconf".
CLI
domain/<DOMAIN>/modificators/edit ldap_trueconf
где:
- <DOMAIN> — имя виртуальной АТС;
добавив туда следующее правило по входу (IN) , и поставить его до основного правила модификации "in_local_calls".
. . .
<in>
<rule name="42__">
<conditions>
<cdpn digits="42%"/>
</conditions>
<actions>
<external_modification service="ldap_modification_service" id="ldap_trueconf" timeout="5000" args="["cgpn"]"/>
</actions>
<result>
<finish/>
</result>
</rule>
</in>
. . . |
Данным правилом мы пропускаем звонок в случае cdpn с любыми цифрами после 42 без модификации номера В , модификация будет выполнятся только для номера А.
Web
В "Модификация номеров" добавить еще одно правило по входу. И установить его на позицию перед правилом "in_local_calls".

Результат:
INVITE sip:+42001@trueconf.ru SIP/2.0
Via: SIP/2.0/UDP 10.0.20.95:5060;branch=z9hG4bK93B19F2A6F87A306DF937AA528280705-1
Max-Forwards: 70
From: "petrov.petr@trueconf.ru"<sip:petrov.petr@trueconf.ru>;tag=A52167E250AACD6E5F21170862E587D8
To: <sip:+42001@trueconf.ru>
Call-ID: B80114A66F5F1C2BBA9C97630D190ECB
CSeq: 1 INVITE
Contact: <sip:petrov.petr@10.0.20.95:5060;transport=udp>
Content-Type: application/sdp
User-Agent: TrueConf Server 5.4.5.1034
Supported: timer, gruu-10
Allow: INVITE, UPDATE, ACK, CANCEL, INFO, OPTIONS, BYE, MESSAGE, SUBSCRIBE, NOTIFY
Session-Expires: 1800; refresher=uac
Min-SE: 90
Content-Length: 1241
v=0
o=petrov.petr@trueconf.ru 1749537273274861 1 IN IP4 10.0.20.95
s=noname
c=IN IP4 10.0.20.95
b=AS:2048
t=0 0
a=group:FEC-FR S1 R1
m=audio 50498 RTP/AVP 114 115 113 104 103 9 0 8 110
c=IN IP4 10.0.20.95
a=rtpmap:114 G7221/32000
a=fmtp:114 bitrate=32000
a=rtpmap:115 G7221/32000
a=fmtp:115 bitrate=48000
a=rtpmap:113 G7221/32000
a=fmtp:113 bitrate=24000
a=rtpmap:104 G7221/16000
a=fmtp:104 bitrate=32000
a=rtpmap:103 G7221/16000
a=fmtp:103 bitrate=24000
a=rtpmap:9 G722/8000
a=rtpmap:0 PCMU/8000
a=rtpmap:8 PCMA/8000
a=rtpmap:110 telephone-event/8000
a=sendrecv
m=video 50500 RTP/AVP 99 98 100 102 101 34
c=IN IP4 10.0.20.95
b=TIAS:2097152
a=content:main
a=rtpmap:99 H264/90000
a=fmtp:99 profile-level-id=640028
a=rtpmap:98 H264/90000
a=fmtp:98 profile-level-id=4D0028
a=rtpmap:100 H264/90000
a=fmtp:100 profile-level-id=420028
a=rtpmap:102 H263-2000/90000
a=fmtp:102 CIF4=1;CIF=1
a=rtpmap:101 H263-1998/90000
a=fmtp:101 CIF4=1;CIF=1
a=rtpmap:34 H263/90000
a=fmtp:34 CIF4=1;CIF=1
a=sendrecv
a=rtcp-fb:* ccm fir
a=fec-source-flow: id=0
a=mid:S1
m=application 50502 UDP/FEC *
c=IN IP4 10.0.20.95
a=sendrecv
a=mid:R1
a=fec-repair-flow: encoding-id=8; fssi=E:1412,S:0,m:8
a=repair-window:200ms
|
| title Звонок от абонента TrueConf petrov.petr@trueconf.ru на абонента 42001 SSW
participant TrueConf
participant SSW
participant 42001
TrueConf->SSW:**INVITE (SDP) sip:+42001@trueconf.ru**\nFrom: "**petrov.petr@trueconf.ru <sip:petrov.petr@trueconf.ru>**; \nTo: <**sip:+42001@trueconf.ru**>\nContact: <sip:petrov.petr:10.0.20.95:5060>
SSW->TrueConf:**100 Trying for session update**
SSW->42001:**INVITE (SDP) sip:42001@10.0.20.139:5060**\nFrom: **"petrov.petr@trueconf.ru" <sip:petrov.petr@trueconf.ru>**; \nTo: <**sip:42001@trueconf.ru**>\nContact: <sip:petrov.petr@10.0.20.31:5060> \nRemote-Party-ID: "petrov.petr@trueconf.ru" <sip:petrov.petr@trueconf.ru>;\nparty=calling;screen=yes;privacy=off
42001->SSW:**100 Trying**
42001->SSW:**180 Ringing**
SSW->TrueConf:**180 Ringing (SDP)**
42001->SSW:**200 OK (SDP)**
SSW->42001:**ACK**
SSW->TrueConf:**200 OK (SDP)**
TrueConf->SSW:**ACK**
TrueConf->SSW:**INFO**
SSW->TrueConf:**200 OK**
42001->SSW:**BYE**
SSW->42001:**200 OK**
SSW->TrueConf:**BYE**
TrueConf->SSW:**200 OK** |
| INVITE sip:42001@10.0.20.139:5060 SIP/2.0
Via: SIP/2.0/UDP 10.0.20.31:5060;branch=z9hG4bK-o-1749539789338538-0205320-101
From: "petrov.petr@trueconf.ru" <sip:petrov.petr@trueconf.ru;user=phone>;tag=ecssO17495397893385450205320
To: <sip:42001@trueconf.ru;user=phone>
Call-ID: 06d583c8d50d112a
CSeq: 1 INVITE
User-Agent: Eltex ECSS-10 SIP 3.14.15.17.197
Max-Forwards: 69
Contact: <sip:petrov.petr@10.0.20.31:5060;line=e064b4b7d36a0762>
X-Call-Ref: 591663351
Accept: multipart/mixed, application/sdp
Allow: INVITE, ACK, BYE, CANCEL, PRACK, REGISTER, INFO, REFER, NOTIFY, OPTIONS, SUBSCRIBE, MESSAGE, UPDATE, PUBLISH
Allow-Events: presence, dialog, conference, as-feature-event, keep-alive
P-Eltex-Info: trueconf.ru 42001@trueconf.ru/- 591663351 sip1@ecss1 <0.20532.0>/1 outgoing
Category: 10
Session-Expires: 1800;refresher=uac
Min-SE: 300
Supported: 100rel, timer, replaces
Remote-Party-ID: "petrov.petr@trueconf.ru" <sip:petrov.petr@trueconf.ru>;party=calling;screen=yes;privacy=off
Content-Type: application/sdp
Content-Length: 690
v=0
o=- 2208989129 3958528589 IN IP4 10.0.20.81
s=ECSS-10
b=AS:3166
t=0 0
m=audio 12172 RTP/AVP 8 0 9 96
c=IN IP4 10.0.20.81
a=rtpmap:8 PCMA/8000/1
a=rtpmap:0 PCMU/8000/1
a=rtpmap:9 G722/8000/1
a=rtpmap:96 telephone-event/8000
a=fmtp:96 0-16
a=rtcp:12173 IN IP4 10.0.20.81
a=sendrecv
a=ssrc:701090482 cname:3031a8005acd2eda
m=video 12174 RTP/AVP 100 96
c=IN IP4 10.0.20.81
b=TIAS:3000000
a=rtpmap:100 H264/90000
a=fmtp:100 packetization-mode=0;profile-level-id=42e01E
a=rtpmap:96 H263-1998/90000
a=fmtp:96 CIF=1;QCIF=1
a=rtcp:12175 IN IP4 10.0.20.81
a=sendrecv
a=imageattr:* recv [x=640,y=480,q=0.50]
a=ssrc:1927482076 cname:3031a8005acd2eda
a=rtcp-fb:* nack pli
|
|
|