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

где:

Пример:

<?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-сервер не сможет отобразить хоть одно из запрашиваемых полей, внешняя модификация будет провалена!

где:

Настройка через веб

Модификацию можно настроить через веб приложение "Модификация номеров":



Кэширование

SSW кэширует результаты выполнения внешней маршрутизации с помощью сервера LDAP. Кэшируются только ответы на запросы в моменты инициализации вызова. Хранение кеша осуществляется с настраиваемым периодом (выше указанный параметр "cache_ttl" ). Есть возможность просмотра и очистки кэша с помощью следующих команд:

/domain/<DOMAIN>/modificators/ldap/cache/clean <ID> [--direction]
/domain/<DOMAIN>/modificators/ldap/cache/info <ID> [--direction] 

где:

Пример: 

/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/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/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" на абонентов SSW создана.
Звонок от trueconf клиента petrov.petr@trueconf.ru на абонента SSW 42009 который так же имеет аккаунт trueconf = ivanov.ivan@trueconf.ru:

Пример

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

Пример

Для реализации данного функционала нужно дополнить конфигурацию на SSW.

Добавить сервис IVR для доступа к TrueConf


Добавить правило маршрутизации.

CLI

/domain/<DOMAIN>/routing/edit default_routing

где:

добавив туда следующее правило

    <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 

где:

добавив туда следующее правило по выходу (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 на абонента ТфОП / корпоративной сети.

Пример


Для реализации данного функционала нужно дополнить конфигурацию на SSW.


Изменить модификацию

В текущей конфигурации при звонке через sip-trunk "trueconf" все cgpn/cdpn будут анализироваться в LDAP сервере для замены на символьный формат URI. В случае звонка из конференции на абонента SSW/ТфОП требуется передать номер абонента В в оригинальном виде без модификации (42001). Модификация номера А так же не должна выполнятся → будет передан номер конференции (00+12345).

Добавим правило по входу для модификации "ldap_trueconf".

CLI

domain/<DOMAIN>/modificators/edit ldap_trueconf 

где:

добавив туда следующее правило по входу (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 на абонента ТфОП / корпоративной сети.

Пример

Для реализации данного функционала нужно дополнить конфигурацию на 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 

где:

добавив туда следующее правило по входу (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