Схема подключения 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».

  1. Выбрать приложение "Домены".
  2. Выбрать необходимый домен (в примере trueconf.ru).
  3. Выбрать Свойства домена.
  4. Выбрать LDAP сервера.
  5. Добавить.
  6. Заполнить вкладку "Добавить LDAP сервер"
    1. Указать логическое имя LDAP сервера
    2. Указать IP-add или доменное имя сервера.
    3. Выбрать порт по умолчанию (389) или требуемый для вашего проекта.
    4. Указать корневую точку LDAP сервера.
    5. Указать имя атрибута для идентификации (в примере "cn") bind сессии.
    6. Рекурсивный поиск (значение по умолчанию) - выполнять поиск и в поддиректориях.
    7. DN пользователя используемого для подключения к LDAP серверу, двоеточие ":", пароль.
    8. Подтвердить "ОК".
    9. Сохранить.


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

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

Пример: 

до запроса на LDAP-сервер

/domain/test_domain/modificators/ldap/cache/info * 
LDAP cache *:
┌──┬────────────────────────────────────────┬────────────────────────────────────────┬────────────────────────────────────────┐
│Id│          Internal attributes           │          External attrubutes           │               Created At               │
├──┼────────────────────────────────────────┼────────────────────────────────────────┼────────────────────────────────────────┤
└──┴────────────────────────────────────────┴────────────────────────────────────────┴────────────────────────────────────────┘
CODE
после запроса на LDAP сервер
/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 │
└─────────────┴─────────┴────────────────────┴────────────────────┴────────────────────┴────────────────────┘
отчистка cashe
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

Звонок от A абонента TrueConf  petrov.petr@trueconf.ru на В абонента SSWЗвонок от A абонента TrueConf  petrov.petr@trueconf.ru на В абонента SSWTrueConfSSW42009TrueConfTrueConfSSWSSW4200942009INVITE (SDP) sip:ivanov.ivan@trueconf.ruFrom: "petrov.petr@trueconf.ru" <sip:petrov.petr@trueconf.ru>;To: <sip:ivanov.ivan@trueconf.ru>Contact: <sip:petrov.petr@10.0.20.95:5060>100 Trying for session updateINVITE (SDP) sip:42009@10.0.20.138:5060From:"petrov.petr@trueconf.ru" <sip:petrov.petr@trueconf.ru;user=phone>To:<sip:42009@trueconf.ru;user=phone>Contact: <sip:petrov.petr@10.0.20.31:5060>P-Eltex-Info: outgoingRemote-Party-ID: **"petrov.petr@trueconf.ru"<sip:petrov.petr@trueconf.ru>;party=calling;screen=yes;privacy=off100 Trying180 RingingPRACK200 OK180 Ringing (SDP)From:"petrov.petr@trueconf.ru"<sip:petrov.petr@trueconf.ru>To:<sip:ivanov.ivan@trueconf.ru>"Contact: <sip:ivanov.ivan@10.0.20.31:5060>P-Eltex-Info: incoming200 OK (SDP)ACK200 OKACKINFO200 OKBYE200 OKBYE200 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;

petrov.petr@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

ivanov.ivan@trueconf.ru
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

Звонок от абонента 42001 SSW на конференцию ID=12345 запущенную в TrueConfЗвонок от абонента 42001 SSW на конференцию ID=12345 запущенную в TrueConf42001SSWTrueConf4200142001SSWSSWTrueConfTrueConfINVITE (SDP) sip:0904@trueconf.ruFrom: "sub_A_42001" <sip:42001@trueconf.ru>;To: <sip:0904@trueconf.ru>Contact: <sip:42001@10.0.20.139:5060>100 Trying for session update200 OK (SDP)ACKRTP EVENTRFC 2833 RTP Event **Event ID: DTMF One 1 (1)RTP EVENTRFC 2833 RTP Event **Event ID: DTMF Two 2 (2)RTP EVENTRFC 2833 RTP Event **Event ID: DTMF Three 3 (3)RTP EVENTRFC 2833 RTP Event **Event ID: DTMF Four 4 (4)RTP EVENTRFC 2833 RTP Event **Event ID: DTMF Five 5 (5)INVITE (SDP) sip:0012345@10.0.20.95:5060From:sub_A_42001" <sip:42001@trueconf.rus;user=phone>To: <sip:0012345@10.0.20.95;user=phone>Contact: <sip:42001@10.0.20.31:5060>P-Eltex-Info: outgoingRemote-Party-ID: <sip:42001@trueconf.ru>;party=calling;screen=yes;privacy=off100 Trying180 Ringing200 OK (SDP)ACKINVITE (SDP) sip:42001@10.0.20.139:5060From:"0904" <sip:0904@trueconf.ru;user=phone>To:"sub_A_42001" <sip:42001@trueconf.ru>Contact: <sip:0904@10.0.20.31:5060>P-Eltex-Info: connectedRemote-Party-ID:"42007" <sip:0012345@trueconf.ru>;party=called;screen=yes;privacy=off100 Trying for session update200 OKACKINFO200 OKBYE200 OKBYE200 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

Звонок из конференции ID=12345 запущенной в TrueConf на абонента 42001 SSWЗвонок из конференции ID=12345 запущенной в TrueConf на абонента 42001 SSWTrueConfSSW42001TrueConfTrueConfSSWSSW4200142001INVITE (SDP) sip:+42001@trueconf.ruFrom: "Конференция Тест" <sip:0012345@trueconf.ru>;To: <sip:+42001@trueconf.ru>Contact: <sip:10.0.20.95:5060>100 Trying for session updateINVITE (SDP) sip:42001@10.0.20.139:5060From: "Конференция Тест" <sip:0012345@trueconf.ru>;To: <sip:42001@trueconf.ru>Contact: <sip:0012345@10.0.20.31:5060>Remote-Party-ID: "Конференция Тест" <sip:0012345@trueconf.ru>;party=calling;screen=yes;privacy=off100 Trying180 Ringing180 Ringing (SDP)200 OK (SDP)ACK200 OK (SDP)ACKINFO200 OKBYE200 OKBYE200 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

Звонок от абонента TrueConf petrov.petr@trueconf.ru на абонента 42001 SSWЗвонок от абонента TrueConf petrov.petr@trueconf.ru на абонента 42001 SSWTrueConfSSW42001TrueConfTrueConfSSWSSW4200142001INVITE (SDP) sip:+42001@trueconf.ruFrom: "petrov.petr@trueconf.ru <sip:petrov.petr@trueconf.ru>;To: <sip:+42001@trueconf.ru>Contact: <sip:petrov.petr:10.0.20.95:5060>100 Trying for session updateINVITE (SDP) sip:42001@10.0.20.139:5060From:"petrov.petr@trueconf.ru" <sip:petrov.petr@trueconf.ru>;To: <sip:42001@trueconf.ru>Contact: <sip:petrov.petr@10.0.20.31:5060>Remote-Party-ID: "petrov.petr@trueconf.ru" <sip:petrov.petr@trueconf.ru>;party=calling;screen=yes;privacy=off100 Trying180 Ringing180 Ringing (SDP)200 OK (SDP)ACK200 OK (SDP)ACKINFO200 OKBYE200 OKBYE200 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