|| DeviceType | Программный коммутатор |
|| DeviceName1 | ECSS-10 Softswitch |
|| DocTitleAdditional | Release notes |
|| fwversion | 3.17 |

Шаблон SSW normal

Версия

Дата Выхода

3.17

09.10.2025

Ключевые цели

Новые возможности

Для агентов КЦ добавлено опциональное поведение по освобождению линии при несопровождаемом трансфере

Было: Проблемное поведение вызвано соблюдением ECSS-10 RFC 5359 в отношении несопровождаемого трансфера.

Когда осуществляется передача вызова, до момента завершения трансфера SSW занимает линию передающего вызов абонента на случай, если трансфер завершится не успешно и потребуется снова соединить исходных абонентов.

В случае, если у абонента SSW подключена услуга мультилайн (ml), данная проблема не так заметна, поскольку звонки от других абонентов поступают на дополнительные линии, а не пытаются занять ту, что задействована в переводе.

Для агентов КЦ данная услуга (ml) не включена, параллельная обработка нескольких вызов агентом КЦ недопустима и ломает стратегии распределения вызовов в очереди.

Решение:
В настройки КЦ на SSW добавляется флаг "Освобождать линию агента КЦ при несопровождаемом переводе вызова".

Если его активировать, то для вызовов, переведенных агентами КЦ, не соблюдается поведение, указанное в RFC 5359, т. е. линия освобождается и, при неуспешном трансфере, вызов отбивается для всех участников.

SSW не производит различие между вызовами, распределенными на агента из очереди КЦ и поступившими на него напрямую, механизм трансфера будет зависеть от того, кто делает перевод вызова.


Добавлена возможность: Добавлено свойство агента free_line_transfer_enabled. Если свойство отключено, трансфер должен работать по-старому. В случае, если свойство активировано, то при несопровождаемом трансфере линия агента освобождается (вызовы из очереди начинают распределяться на него сразу после начала трансфера, а не после того, когда сторона C ответит на вызов). Если сторона C не отвечает, то вызов отбивается.

Реализована поддержка кодека G.726

Добавлена возможность: Добавлена поддержка кодеков G726-16/G726-24/G726-32/G726-40

Добавлена возможность выполнять транзит DTMF при вызове через IVR

Добавлена возможность: Входящий звонок с транка или от абонента приходит на IVR, обрабатывается там, уходит на исходящий транк на оборудование стороны В, где для установления соединения требуется еще дополнительный DTMF донабор. Добавлена возможность после проключения соединения через IVR пропускать транзитом передачу DTMF донабора на оконечное оборудование стороны В. Дополнительной активации не требуется.

Добавлена поддержка сормирования услуг CFOS, CFU, CFB, CFNR

Добавлена возможность:

Ecss-SSType ::= ENUMERATED -- Тип ДВО
{
  unknown(0), -- Неизвестный тип ДВО
  cfu(1),     -- Безусловная переадресация
  cfb(2),     -- Переадресация при занятости абонента
  cfnr(3),    -- Переадресация при неответе абонента
  dnd(4),     -- Временный запрет входящей связи
  cw(5),      -- Уведомление о поступлении нового вызова
  mpty(6),    -- Конференция
  ch(7),      -- Постановка на удержание
  cr(8),      -- Снятие с удержания
  ct(9),      -- Передача вызова
  ...
}

Event Message: ssAction (8)
    SSAction
        Call UID: 936260013
        Subscriber info
            Number
                Type: unknown (1)
                Value: 1000
            SIP URI: sip:1000@192.168.47.50:5050
            Abonent's login: 1.0_abonent
        Dialed number
            Type: unknown (1)
            Value: *21*1001#
        VAS action type: activation (0)
        VAS action result: success (1)
        VAS type: unconditional (CFU) (1)
        Redirect number
            Type: unknown (1)
            Value: 1001

Услуги, не входящие в перечень ASN, для примера CFOS, передаются с VAS type: unknown

Event Message: ssAction (8)
    SSAction
        Call UID: 936260013
        Subscriber info
            Number
                Type: unknown (1)
                Value: 1000
            SIP URI: sip:1000@192.168.47.50:5050
            Abonent's login: 1.0_abonent
        Dialed number
            Type: unknown (1)
            Value: *24*1001#
        VAS action type: activation (0)
        VAS action result: success (1)
        VAS type: unknown (0)
        Redirect number
            Type: unknown (1)
            Value: 1001

Улучшения

Услуга MCID: добавлена индикация обнаружения злонамеренного вызова 
в истории вызовов и alarm

Добавлена возможность: После окончания звонка, который абонент определил как злонамеренный, абонент набирает код *36#, уведомляя станцию о необходимости пометить последний звонок как злонамеренный.

В списке предупреждений выводится сообщение на событие MCID, в случае если абонент указал на последний вызов как злонамеренный (набрав *36#).

Alarms list on md1:
┌──────────────┬────────┬────────┬─────┬───────────────────────┬────────────┬──────────────────────────────────────────────────────────────┐
│     Date     │Severity│Location│Cause│         Class         │  Instance  │        Message                                               │
├──────────────┼────────┼────────┼─────┼───────────────────────┼────────────┼──────────────────────────────────────────────────────────────┤
│24.10 14:59:19│warning │env     │other│ecss::cluster::core::ss│mcid54772990│"100": Malicious Caller Detected - "101" (CallRef - 54772990) │
└──────────────┴────────┴────────┴─────┴───────────────────────┴────────────┴──────────────────────────────────────────────────────────────┘
Selected: 1
Total: 1

В списке вызовов отображается тип звонка mcid - Malicious Call Identification" / Отслеживание злонамеренного вызова. 

/domain/test_domain/calls/list         
┌────────────────┬──────────┬───────────────────┬────────┬────────┬────────┬────┬────┬──┬────────┬────────┬─────┬──┬──────────────────────┬─┬──┐
│   Call ID      │ CallRef  │      Start        │ Stage  │Original│Original│CgPN│CdPN│T │Duration│Internal│ISUP │RI│          Release     │A│SS│
│                │          │                   │        │  CgPN  │  CdPN  │    │    │  │        │  cause │cause│  │        description   │ │  │
│                │          │                   │        │        │        │    │    │  │        │        │     │  │                      │ │  │
├────────────────┼──────────┼───────────────────┼────────┼────────┼────────┼────┼────┼──┼────────┼────────┼─────┼──┼──────────────────────┼─┼──┤
│06e00ff19aaf527c│3326780936│17.10.2025 10:01:45│released│     100│     101│ 100│ 101│mc│      6s│normal  │ 16  │Cd│Call is complete      │Y│  │
│06e00ff241a35535│3372326652│17.10.2025 10:01:56│released│     101│    *36#│ 101│*36#│n │     18s│normal  │ 16  │S │Prompt player stopped.│Y│ *│
└────────────────┴──────────┴───────────────────┴────────┴────────┴────────┴────┴────┴──┴────────┴────────┴─────┴──┴──────────────────────┴─┴──┘
Legend:
    T - type
        i - internal
        n - normal
        c - callback
        r - refer
        a - acd
        m - mgm
        mc - mcid
    RI - release initiator
        Cg - calling side
        Cd - called side
        S - system
    A - is call answered
        Y - yes, call is answered
        N - no, call isn't answered
    SS - supplementary services
        * - supplementary services is present
        empty - supplementary service isn't present


Услуга Flexicall: доработано применение услуги

Добавлена возможность: Для услуги ДВО Flexicall выбирать режим внутренней или внешней переадресации в стандартном и расширенном web-режиме.
В зависимости от выбранного режима выделяются определенные номера (внешние/внутренние). В неактивной таблице нельзя удалить и добавить номера абонентов.

Пример расширенный режим web:



Пример стандартный режим web:



Скрыто меню во вкладке "Удалить" при настройке IVR

В некоторых блоках IVR присутствуют таблицы (например таблица "сообщения для проигрывания" в блоке проигрывания звуковых сигналов). В выпадающем меню есть пункт выбора отображаемых столбцов. В нем присутствует "фантомный" столбец (не имеет имени и его нельзя выключить, но при наведении выделяется синим фоном как валидная для выбора опция). Данный столбец отвечает за функцию "Удалить" строчку из таблицы. Его нельзя исключить из списка отображения, иначе потеряем логику управления таблицей.

Было:
Расширенный режим:

Стандартный режим:

После исправления ошибки:
Расширенный режим:


Стандартный режим:


Alarm о потере токена стал более информационным

Обновилось сообщение о аварии с LPM Token. Сейчас в колонке сообщений явно видно, что проблема произошла с Token, он отсутствует.

Было: Ранее сообщение было "LMS_NOT_AVAILABLE ". 

После исправления ошибки: В настоящий момент "LPM Token missing"

┌───────────────┬──────────┬───────────┬─────────────┬───────────────────────┬────────────────────┬────────────────────┐
│     Date      │ Severity │ Location  │   Cause     │         Class         │   Instance         │        Message     │
├───────────────┼──────────┼───────────┼─────────────┼───────────────────────┼────────────────────┼────────────────────┤
│24.10 15:31:27 │critical  │ds1@ecss1  │outOfService │ecss::licence          │ECSS-M-TEST-TOKEN-  │LPM Token missing   │
│               │          │           │             │                       │DEDLINE-1-MIN:1:    │                    │
│               │          │           │             │                       │2025/10/24 13:34:00 │                    │
└───────────────┴──────────┴───────────┴─────────────┴───────────────────────┴────────────────────┴────────────────────┘


Добавлена команда отображения текущего состояния услуги Extension Mobility для различных устройств
и аккаунтов

Добавлена команда: /domain/<DOMAIN>/ss/extension_mobility/info

Команда отображает в виде таблицы на каком устройстве (MAC) находится технический аккаунт (Original interface), с каким аккаунтом он связан в текущий момент (Guest interface) и какие SIP аккаунты сейчас зарегистрированы на данном устройстве (Current interfaces).

У команды нет аргументов, но можно установить один из 3 флагов: --iface_mac, --origin_iface, --guest_iface

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

/domain/test.domain/ss/extension_mobility/info --guest_iface 9990@test.domain                                                                   
┌─────────────────┬──────────────────┬────────────────┬──────────────────┬───────┐
│   MAC address   │Original interface│Guest interface │Current interfaces│Comment│
├─────────────────┼──────────────────┼────────────────┼──────────────────┼───────┤
│00:15:65:8D:2A:5E│8000@trunk_test   │9990@test.domain│9990@test.domain  │       │
└─────────────────┴──────────────────┴────────────────┴──────────────────┴───────┘

/domain/trunk_test/ss/extension_mobility/info --origin_iface 8000@trunk_test                                                              
┌─────────────────┬──────────────────┬────────────────┬─────────────────┬──────────────────────────────────────────────────────────────────────┐
│   MAC address   │Original interface│Guest interface │Current interface│                                Comment                               │
├─────────────────┼──────────────────┼────────────────┼─────────────────┼──────────────────────────────────────────────────────────────────────┤
│00:15:65:8D:2A:5E│8000@trunk_test   │9991@test.domain│9990@test.domain │Guest alias not linked with origin alias(check guest alias properties)│
└─────────────────┴──────────────────┴────────────────┴─────────────────┴──────────────────────────────────────────────────────────────────────┘

Доработана команда просмотра SIP-пользователей занявших лицензию Elph ключом выбора определенного клиента

Доработана команда: /domain/<DOMAIN>/sip/user/elph-registered.Добавлена возможность фильтрации по полю "user-agent" с использованием дополнительных ключей.
Без ключа работает как и ранее, 
Ключи фильтрации
--desktop - user-agent содержит "desktop", пример: "user-agent: Elph-desktop 2.11.0-93"
--android - user-agent содержит "android", пример: "user-agent: Elph-android 2.11.0.58"
--ios - user-agent содержит "iOS", пример: "user-agent: Elph iOS 2.11.0"

/domain/test_domain/sip/user/elph-registered * --user-agent desktop

┌───────────────────┬────────┬─────────┬─────────────────────────────────────────────────┬───────────────────────────────────────────────┐
│     Interface     │ Number │ Dynamic │                      Contact                    │                 Registration info             │
├───────────────────┼────────┼─────────┼─────────────────────────────────────────────────┼───────────────────────────────────────────────┤
│ 42001@test_domain │ 42001  │ false   │ q: 1.0; ip-set: test_set; on port: 5060; sip    │ registered on:                                │
│                   │        │         │  node control: sip1@ecss1                       │   node: sip1@ecss1 port: udp 10.0.20.31:5060  │
│                   │        │         │  sip transport: tcp                             │ last via list:                                │
│                   │        │         │  user-agent: Elph-desktop 2.11.0-93             │   SIP/2.0/TCP 10.0.20.139                     │
│                   │        │         │  <sip:42001@10.0.20.139:5060>;expires=67        │ last user agent:                              │
│                   │        │         │                                                 │   Elph-desktop 2.11.0-93                      │
│                   │        │         │                                                 │                                               │
│ 42005@test_domain │ 42005  │ false   │ q: 1.0; ip-set: test_set; on port: 5060; sip    │ registered on:                                │
│                   │        │         │  node control: sip1@ecss1                       │   node: sip1@ecss1 port: udp 10.0.20.31:5060  │
│                   │        │         │  sip transport: tcp                             │ last via list:                                │
│                   │        │         │  user-agent: Elph-desktop 2.11.0-93             │   SIP/2.0/TCP 10.0.20.35                      │
│                   │        │         │  <sip:42005@10.0.20.35>;expires=2039            │ last user agent:                              │
│                   │        │         │                                                 │   Elph-desktop 2.11.0-93                      │
└───────────────────┴────────┴─────────┴─────────────────────────────────────────────────┴───────────────────────────────────────────────┘ 


В IVR добавлены параметры для базовой очереди

Для режима распределения "Случайно" в очереди были добавлены параметры: "кол-во попыток распределения" и "длительность распределения".

  • Количество попыток распределения (Distribution attempts) — число, показывающее количество попыток распределения вызова [1-10].
  • Длительность распределения — максимальная продолжительность распределения в сек. [1-120].


Было:

После исправления ошибок:

Добавлена возможность выбора аудиофайла приветствия в Queue IVR редактора

В текущую версию IVR добавлен блок "Однократное приветствие" не только для Queue CC, но и для Queue.

Было:


После исправления ошибки:

Добавлена поддержка "*" и разорванных диапазонов в команде 
"/domain/<DOMAIN>/
ss/profile/activate"
применения профиля услуг ДВО

Было: Ранее для команды /domain/<DOMAIN>/ss/profile/activate <имя_профиля> система не принимала диапазон AddressRange, который имел разрыв, для примера 10{1-3,5}. Также команда отклонялась, если вводили параметр "*". При этом выводилась следующая ошибка:

/domain/test_domain/ss/profile/activate ss-test *           
Command error: Unexpected error: {aborted,{throw,{licence_access_denied,{clip,"*"}}}}

После исправления ошибки: Добавлена поддержка значения "*" в параметры AddressRange команды /domain/<DOMAIN>/ss/profile/activate. А также возможность ввода не непрерывного диапазона значений, включая номера разной длинны:

/domain/test.domain/ss/profile/activate ss-profile *
Success: Supplemenraty service's profile ss-profile activated for address "2000" 
Success: Supplemenraty service's profile ss-profile activated for address "102" 
Success: Supplemenraty service's profile ss-profile activated for address "101" 
Success: Supplemenraty service's profile ss-profile activated for address "104" 
Success: Supplemenraty service's profile ss-profile activated for address "103" 
Success: Supplemenraty service's profile ss-profile activated for address "3000" 
Success: Supplemenraty service's profile ss-profile activated for address "1000" 
Success: Supplemenraty service's profile ss-profile activated for address "105" 


/domain/test.domain/ss/profile/activate ss-profile {101-103,105,2000}
Success: Supplemenraty service's profile ss-profile activated for address "101" 
Success: Supplemenraty service's profile ss-profile activated for address "102" 
Success: Supplemenraty service's profile ss-profile activated for address "103" 
Success: Supplemenraty service's profile ss-profile activated for address "105"
Success: Supplemenraty service's profile ss-profile activated for address "2000"


Дополнен вывод подсказки для команд /cluster/core/core1/sorm3/

Было: Для команды /cluster/core/core1/sorm3/info -h  и /cluster/core/core1/sorm3/set -h  help был неинформативный:

/cluster/core/core1/sorm3/info -h
Show value of requested property(es).
Usage: info [<Field>]
  <Field>:
    sorm_profile ([]): Defenition of SORM-3 connection entrypoint.

После исправления ошибки: Параметры help обновлены:

/cluster/core/core1/sorm3/info -h
Show value of requested property(es).
Usage: info [<Field>]
  <Field>:
    sorm_profile ([]): Defenition of SORM-3 connection entrypoint
        Params:
            ip-port    - IP address where signaling and RTP traffic will be sent, Port where signaling traffic will be sent;
            port-range - Range of ports where RTP traffic will be sent.

/cluster/core/core1/sorm3/set -h 
Change value of requested property.
Usage: set <Field> <Value>
  <Field>:
    sorm_profile ([]): Defenition of SORM-3 connection entrypoint
        Params:
            ip-port          - IP address where signaling and RTP traffic will be sent, Port where signaling traffic will be sent;
            media-port-range - Range of ports where RTP traffic will be sent.


Улучшен вывод информации по sorm3 профилю в коконе

Было: Для команды /cluster/core/core1/sorm3/info вывод информации был неинформативный, не были указаны параметры SORM3-профиля, для каждого из параметров была информация только об имени профиля:

/cluster/core/core1/sorm3/info sorm_profile

┌────────────┬──────────────────────────┐
│  Property  │          Value           │
├────────────┼──────────────────────────┤
│sorm_profile│sorm_3: 192.168.47.100    │
│            │sorm_3: 55554             │
│            │sorm_3: 12000-14000       │
└────────────┴──────────────────────────┘

После исправления ошибки: Изменен вывод команды, теперь указывается для каждого профиля: имя_параметра=значение параметра:

/cluster/core/core1/sorm3/info sorm_profile 
┌────────────┬─────────────────────────────────────────────────────────────────────────────────┐
│  Property  │                                     Value                                       │
├────────────┼─────────────────────────────────────────────────────────────────────────────────┤
│sorm_profile│sorm_3: ip-port = 192.168.47.100:55554, media-port-range = 12000-14000           │
│            │profile: ip-port = 192.168.108.23:55555, media-port-range = port range is not set│
│            │def_pro: ip-port = 192.168.63.36:1234, media-port-range = 18000 - 19000          │
└────────────┴─────────────────────────────────────────────────────────────────────────────────┘


В адаптацию номеров добавлено поле redirection_number 

Было: Настроить адаптацию номеров для поля redirection_number можно было только в CoCon, в web-интерфейсе его можно было видеть без возможности редактирования:

<?xml version="1.0" encoding="UTF-8"?>
  <adaptation xmlns:xs="http://www.w3.org/2001/XMLSchema-instance" xs:noNamespaceSchemaLocation="ecss_modificators.xsd" name="test_adapt">
. . .
    <rule name="forwarding">
      <conditions>
        <rnn digits="???"/>
      </conditions>
      <actions>
        <rnn digits="73832201{1,2,3}" nai="internationNumber"/>
      </actions>
      <result>
        <finish/>
      </result>
    </rule>
. . .
  </adaptation>

После исправления ошибки: В настоящий момент редактировать параметр redirection_number можно как через CoCon, так и через web:

Добавлена оптимизация при multicall соединении после первого вызова

Добавлена оптимизация, позволяющая распределять вызов из очереди на операторов, которые успели освободиться после обработки предыдущего вызова в очереди.

Исправления

Услуга CHUNT: Исправлена с длиной списка "Размер очереди" в "Стандартном режиме" web интерфейса

Было: Ошибка с длиной списка (Размер очереди) через стандартный режим web-конфигуратора, система не принимает значение, отличное от "0" в режиме "Расширенные настройки".


После исправления ошибки: Можно указать любой размер очереди (в примере =50) и создавать нужное количество абонентов в группу как через расширенный режим web-интерфейса, так и через стандартный режим web-интерфейса.

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

Было: При создании виртуального абонента с номером, который уже создан, в CoCon не выдается ошибка. Абонент перезаписывается с новыми параметрами:

/domain/test_domain/alias/virtual/list 
Virtual aliases in the domain:test_domain
┌───────────────────────┬───────┬───────┬──────┐
│     Iface             │ Group │Address│Active│
├───────────────────────┼───────┼───────┼──────┤
│virtual:444@test_domain│.system│444    │true  │
│virtual:555@test_domain│.system│555    │true  │
└───────────────────────┴───────┴───────┴──────┘

/domain/test_domain/alias/virtual/declare 444 default_routing test 
┌───────┬───────────────────────┬──────────────┐
│Address│     Iface             │    Result    │
├───────┼───────────────────────┼──────────────┤
│444    │virtual:444@test_domain│already exists
└───────┴───────────────────────┴──────────────┘

/domain/test_domain/alias/virtual/list                                
Virtual aliases in the domain:test_domain
┌───────────────────────┬───────┬───────┬──────┐
│     Iface             │ Group │Address│Active│
├───────────────────────┼───────┼───────┼──────┤
│virtual:444@test_domain│test   │444    │true  │
│virtual:555@test_domain│.system│555    │true  │
└───────────────────────┴───────┴───────┴──────┘

После исправления ошибки: Вывод на команду изменен, система выдает уведомление "virtual number  already exist", параметры абонента не переписываются:

/domain/test_domain/alias/virtual/list                                
Virtual aliases in the domain:test_domain
┌───────────────────────┬───────┬───────┬──────┐
│     Iface             │ Group │Address│Active│
├───────────────────────┼───────┼───────┼──────┤
│virtual:444@test_domain│.system│444    │true  │
│virtual:555@test_domain│.system│555    │true  │
└───────────────────────┴───────┴───────┴──────┘

/domain/test_domain/alias/virtual/declare 444 default_routing test 
Command canceled: virtual number 444@test_domain already exist

/domain/test_domain/alias/virtual/list                             
Virtual aliases in the domain:test_domain
┌───────────────────────┬───────┬───────┬──────┐
│     Iface             │ Group │Address│Active│
├───────────────────────┼───────┼───────┼──────┤
│virtual:444@test_domain│.system│444    │true  │
│virtual:555@test_domain│.system│555    │true  │
└───────────────────────┴───────┴───────┴──────┘


Исправлены всплывающие подсказки в web-интерфейсе для услуги CFT

Было: Всплывающая подсказка не корректно выводила формат времени HH:MM AM or PM, при этом в SSW время до полудня/после полудня не используется:


После исправления ошибки: Подсказка исправлена.

Запрещено добавлять шаблон IVR ограничений с пустым именем в приложении "Редактор IVR ограничений"

Было: Проблема в профиле ограничений IVR. 

При создании профиля, если набрать имя профиля, а потом удалить все символы и сделать сохранение, сохранится профиль без имени.

При этом далее система не даст создать профиль: Поле "Имя" более недоступно.


Удалить данный профиль с пустыми именем можно многократным (20-30 раз) нажатием на значок "Удалить" в пустой строке шаблонов:


После исправления ошибки: Изменена процедура сохранения профиля, сейчас выполняется контроль имени:

Исправлена ошибка проигрывания moh (Music on hold) в селекторе 

Было: В селекторе при постановке на hold абонентом за транком, ssw успешно детектирует hold, но moh не глушит. При этом если на hold ставит абонент SSW, тогда музыка будет заглушена.

После исправления ошибки: Moh глушится при постановки на hold абонентом за транком.

Решены проблемы с прокруткой в окне длинных списков

Было: Проблема проявлялась в web-интерфейсе при прокрутке больших списков в приложениях "Управление услугами", "История вызовов", "Менеджер маршрутизации". В случае прокрутки вниз /вверх список откатывается назад, просмотреть весь список объектов нет возможности.

После исправления ошибки: Прокрутка осуществляется равномерно в обе стороны.

Исправлена возможность редактирования IVR-скрипта в стандартном режиме web

Было: В стандартном режиме web-интерфейса при попытке отредактировать конфигурацию IVR скриптов ничего не происходило. При нажатии клавиши "Настройки скрипта" не выполнялось никаких действий:

при этом в расширенном режиме нажатие клавиши "Настройки скрипта" обрабатывалось корректно и открывалась окно "Настройки скрипта":

После исправления ошибки: Клавиша "Настройки скрипта" обрабатывается корректно и открывается окно "Настройки скрипта":

Исправлено отображение примера услуги: Speed Dial

Было: В приложении" Управление услугами" была ошибка в примерах для услуги "Быстрый набор":
После исправления ошибки: Примеры указаны корректно:

Изменены макросы для блока Send mail и Voice mail в IVR 

Было: Обновлены устаревшие переменные для блоков IVR "VoiceMail" и "Send mail":


После исправления ошибки:

Исправлена ошибка, автоматически не завершается конференция, созданная оператором

Было: При получении оператором вызова через "слепой" трансфер с использованием ECSS API (call_unattended_transfer) и последующим созданием конференции из абонента позвонившего в КЦ + оператора получившего трансфер + еще одного оператора, конференция не завершается автоматически, когда в ней остался только один участник (оба оператора закончили разговор). Проблема возникала только с использованием трансфера через ECSS API (call_unattended_transfer) при использовании трансфера через ТА проблема не возникала.


После исправления ошибки: Конференция завершается автоматически, если в ней остался только один участник, как с использованием трансфера, так и без него.

Исправлена ошибка приоритета кодеков в конфигурационном файле /etc/ecss/ecss-media-server/config.xml

Было: В конфигурационном файле /etc/ecss/ecss-media-server/config.xml можно было указать для разных кодеков одинаковый приоритет (для примера gsm="1" g722="1" g729="1"), что приводило к неоптимальной работе MSR при установки RTP-соединений.

После исправления ошибки: При активизации сервиса MSR выполняются следующие проверки:

  • Одинаковые приоритеты у разных типов кодеков;
  • Одинаковые приоритеты у аудио кодеков;
  • Одинаковые приоритеты у видео кодеков.

В случае обнаружения ошибки сервис ecss-media-server не стартует.

sudo systemctl status ecss-media-server
× ecss-media-server.service - daemon ecss-media-server of ecss-10
     Loaded: loaded (/lib/systemd/system/ecss-media-server.service; enabled; vendor preset: enabled)
    Drop-In: /usr/lib/systemd/system/ecss-media-server.service.d
             └─ecss.service.conf
     Active: failed (Result: exit-code) since Fri 2025-09-05 16:25:28 +07; 1s ago
    Process: 7907 ExecStart=/usr/bin/ecss-media-server --noinput (code=exited, status=1/FAILURE)
   Main PID: 7907 (code=exited, status=1/FAILURE)
        CPU: 92ms

сен 05 16:25:28 ecss1 systemd[1]: ecss-media-server.service: Scheduled restart job, restart counter is at 5.
сен 05 16:25:28 ecss1 systemd[1]: Stopped daemon ecss-media-server of ecss-10.
сен 05 16:25:28 ecss1 systemd[1]: ecss-media-server.service: Start request repeated too quickly.
сен 05 16:25:28 ecss1 systemd[1]: ecss-media-server.service: Failed with result 'exit-code'.
сен 05 16:25:28 ecss1 systemd[1]: Failed to start daemon ecss-media-server of ecss-10.

по команде journalctl -u ecss-media-server.service -e выводится следующее аварийное сообщение:

media-server config file /etc/ecss/ecss-media-server/config.xml has error - codecs pcmu and g722 have the same priority (для примера).

Исправлена ошибка ecss-web-conf проявляющаяся при остановке сервиса командой systemctl stop 

Было: При выполнении останова сервиса ecss-web-conf происходило его падение и выполнялся дамп памяти (core dump).

date
Чт 30 окт 2025 12:05:28 +07
sudo systemctl stop ecss-web-conf.service
sudo coredumpctl list
TIME                            PID   UID   GID SIG     COREFILE EXE                 SIZE
Fri 2025-10-17 09:11:38 +07 1072236 33339 33339 SIGQUIT missing  /usr/bin/node        n/a
Fri 2025-10-17 09:21:29 +07  520421 33339 33339 SIGQUIT missing  /usr/bin/node        n/a
Fri 2025-10-17 09:25:08 +07  678058 33339 33339 SIGQUIT missing  /usr/bin/uwsgi-core  n/a
Thu 2025-10-30 12:05:31 +07  745770 33339 33339 SIGQUIT present  /usr/bin/uwsgi-core 7.4M

После исправления ошибки: При выполнении команды остановки сервиса сервис останавливается корректно без генерации дампа памяти:

 date
Чт 30 окт 2025 12:07:25 +07
abf@ecss1:~$ sudo systemctl stop ecss-web-conf.service
abf@ecss1:~$ sudo coredumpctl list
TIME                            PID   UID   GID SIG     COREFILE EXE                 SIZE
Fri 2025-10-17 09:11:38 +07 1072236 33339 33339 SIGQUIT missing  /usr/bin/node        n/a
Fri 2025-10-17 09:21:29 +07  520421 33339 33339 SIGQUIT missing  /usr/bin/node        n/a
Fri 2025-10-17 09:25:08 +07  678058 33339 33339 SIGQUIT missing  /usr/bin/uwsgi-core  n/a
Thu 2025-10-30 12:05:31 +07  745770 33339 33339 SIGQUIT present  /usr/bin/uwsgi-core 7.4M


При отключении токена паспорт и лицензия не удаляются

Было: при удалении/отключении токена лицензия и паспорт автоматически удаляются из системы.



После исправления ошибки: При отсутствии токена, переключаемся на default лицензию. Без удаления всех остальных лицензий. При восстановлении доступа к токен включаем последнюю активную лицензию из списка. Также система генерирует аварии при пропадании токен.



После восстановления доступа к токен аварийное сообщение удаляется автоматически.




Исправлена ошибка при выполнении команды /domain/<Domain>/ss/
licence/allocate

Было: При одновременном назначении пакетов ДВО нескольким абонентам, если в номерах присутствует разное количество цифр, команда выдает ошибку.

/domain/test_domain/ss/licence/allocate {777,50002} ECSS-ADV 
Command error: can't parse mandatory argument "address_range"

После исправления ошибки:

/domain/test_domain/ss/licence/allocate {777,50002} ECSS-ADV
Check 2 addresses for existing
[**********************************************************************] 87mks    
2 users divided into 1 parts
[**********************************************************************] 20mks    
Allocate licence package for 1 address parts
[**********************************************************************] 460mks   

Successfull addresses "50002 777"


ECSS-ADV
Total: 2
Success: 2
Error: 0


Исправлены ошибочные записи в логах ядра

Было: После обновления до версии 3.14.15 стали появляться ошибки в логах ядра. Запись не критическая, это CSTA нотификация о начале записи (call_record).

ERROR <0.7206.0> [ss_chunt_main:165]: Handle_receive receive and dropped unknown msg

После исправления ошибки: Данные записи больше не пишутся в лог ядра.

Исправлены ошибки в логах DS при удалении домена

Было: Пои удалении домена в логе DS появлялась ошибка:

2025-09-17 10:30:04:079048 ERROR <0.4161.0> [ds_metrics:33]: Exec error for rtop_domain
Stack trace:[{mnesia,wrap_trans,6,[{file,"mnesia.erl"},{line,497}]},
             {ds_metrics,set_rtopman_access_time_,3,
                 [{file,"src/ds_metrics.erl"},{line,27}]},
             {rtop_agent_core_server,handleCommand,4,
                 [{file,"src/rtop_agent_core/rtop_agent_core_server.erl"},
                  {line,266}]},
             {elx_process_pool_worker,handle_cast,2,
                 [{file,"src/elx_process_pool_worker.erl"},{line,124}]},
             {gen_server,try_dispatch,4,[{file,"gen_server.erl"},{line,637}]},
             {gen_server,handle_msg,6,[{file,"gen_server.erl"},{line,711}]},
             {proc_lib,wake_up,3,[{file,"proc_lib.erl"},{line,259}]}]

После исправления ошибки: Сообщение в логе не появляется. 

Причина ошибки: Ошибка возникала на ядре при получении ivents удаления domain, выполнялась попытка отправки запросы на удаление контекстов маршрутизации и модификации и адаптации номеров из БД, но rtop уже удалил сами таблицы для domain, поэтому в лог записывалась ошибка транзакции.

Исправлена ошибка ограничения на длину имени хоста

Было: Обнаружена проблема длинны имени хоста, при количестве символов в имени хоста более 19 не мог успешно стартовать сервис ecss-mycelium, при длине более 24 символов ecss-pa-sip ecss-ds ecss-mediator ecss-mycelium

test@ecss1ecss1ecss1ecss1:/$ systemctl is-active ecss-core ecss-pa-sip ecss-ds ecss-mediator ecss-mycelium
active
active
active
active
failed

test@ecss1ecss1ecss1ecss1ecss1:/$ systemctl is-active ecss-core ecss-pa-sip ecss-ds ecss-mediator ecss-mycelium
active
failed
failed
failed
failed

После исправления ошибки:

test@ecss1ecss1ecss1ecss1ecss1:/$ systemctl is-active ecss-core ecss-pa-sip ecss-ds ecss-mediator ecss-mycelium
active
active
active
active
active


Удалена отправка заголовка Remote-Party-id в SIP сообщении BYE

Было: После совершения перехвата перехвативший отбивает вызов, от ssw приходит BYE с заголовком "Remote-Party-ID", в сообщении BYE заголовка Remote-Party-ID быть не должно.

После исправления ошибки:
После совершения перехвата перехвативший отбивает вызов, от SSW приходит BYE без заголовка Remote-Party-ID

Исправлено сохранение уровня громкости микрофона при переподключении участника к встрече

Было: У участника конференции есть возможность регулировать уровень усиления микрофона как в "+" так и в "-". Но при выходе из конференции и подключении обратно уровень микрофона выставляется в значение "0". Но статус микрофон включен или выключен система помнит. 

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

Исправлена ошибка, если nai=internationNumber, calling и called number подставлялся номер без "+"

SORM
На домене настроена адаптация номеров в международный формат. При вызове на сорм-приемник в атрибутах Calling number, Called number, Dialed number и Connected number подставляется номер без "+".

    Basic message params:
                 body: . . . . . . . receive full number
                 BASIC params:
                 callUID: .. . . . . 848200734
                 intcpParty: . . . . called
                 callingPn:
                 |-dn:
                 | |-nrType: . . . . unknown
                 | |-nrValue: .. . . 79994501000
                 |-Login: .. . . . . Test_adaptation_cgpn
                 |-IP: . . . . . . . 192.168.47.231
                 |-SIP URI: .. . . . sip:1000@192.168.47.50:5050
                 |-OPC: .. . . . . . 0
                 |-DPC: .. . . . . . 0
                 calledPn:
                 |-dn:
                 | |-nrType: . . . . unknown
                 | |-nrValue: .. . . 79994502000
                 |-Login: .. . . . . Test_adaptation_cdpn
                 |-IP: . . . . . . . no
                 |-SIP URI: .. . . . sip:2000@192.168.47.50:5050;user=phone
                 |-OPC: .. . . . . . 0
                 |-DPC: .. . . . . . 0
                 OPTIONAL params:
                 incTrunkGrpId:. . . -1
                 outTrunkGrpId:. . . 56912623
                 snId: . . . . . . . ECSS 010070


    Basic message params:
                 body: . . . . . . . answer
                 BASIC params:
                 callUID: .. . . . . 848200734
                 connectedPn:
                 |-dn:
                 | |-nrType: . . . . unknown
                 | |-nrValue: .. . . 79994502000
                 |-Login: .. . . . . no
                 |-IP: . . . . . . . 192.168.47.50
                 |-SIP URI: .. . . . sip:2000@192.168.47.50;user=phone
                 |-OPC: .. . . . . . 0
                 |-DPC: .. . . . . . 0

    Basic message params:
                 body: . . . . . . . receive full number
                 BASIC params:
                 callUID: .. . . . . 848260932
                 intcpParty: . . . . called
                 callingPn:
                 |-dn:
                 | |-nrType: . . . . e.164
                 | |-nrValue: .. . . +79994501000
                 |-Login: .. . . . . Test_adaptation_cgpn
                 |-IP: . . . . . . . 192.168.47.231
                 |-SIP URI: .. . . . sip:1000@192.168.47.50:5050
                 |-OPC: .. . . . . . 0
                 |-DPC: .. . . . . . 0
                 calledPn:
                 |-dn:
                 | |-nrType: . . . . e.164
                 | |-nrValue: .. . . +79994502000
                 |-Login: .. . . . . Test_adaptation_cdpn
                 |-IP: . . . . . . . no
                 |-SIP URI: .. . . . sip:2000@192.168.47.50:5050;user=phone
                 |-OPC: .. . . . . . 0
                 |-DPC: .. . . . . . 0
                 OPTIONAL params:
                 incTrunkGrpId:. . . -1
                 outTrunkGrpId:. . . 56912623
                 snId: . . . . . . . ECSS 010070


    Basic message params:
                 body: . . . . . . . answer
                 BASIC params:
                 callUID: .. . . . . 848260932
                 connectedPn:
                 |-dn:
                 | |-nrType: . . . . e.164
                 | |-nrValue: .. . . +79994502000
                 |-Login: .. . . . . no
                 |-IP: . . . . . . . 192.168.47.50
                 |-SIP URI: .. . . . sip:2000@192.168.47.50;user=phone
                 |-OPC: .. . . . . . 0
                 |-DPC: .. . . . . . 0

Исправлена ошибка SORM при передаче Basic message params в случае nai=internationNumber, nrType=e.164

SORM
В ASN есть два типа nrType: unknown и e.164
Если nai=internationNumber, то в nrType должен подставляться e.164, в остальных случаях unknown:

prepare_digits_type(internationNumber) ->    e.164;
prepare_digits_type(_) ->                    unknown.

Basic message params:
                 body: . . . . . . . receive full number
                 BASIC params:
                 callUID: .. . . . . 1941979922
                 intcpParty: . . . . partyB
                 callingPn:
                 |-dn:
                 | |-nrType: . . . . unknown
                 | |-nrValue: .. . . 79131242009
                 |-Login: .. . . . . orig A num
                 |-IP: . . . . . . . 10.0.20.138
                 |-SIP URI: .. . . . sip:42009@test_domain
                 |-OPC: .. . . . . . 0
                 |-DPC: .. . . . . . 0
                 calledPn:
                 |-dn:
                 | |-nrType: . . . . unknown
                 | |-nrValue: .. . . 79131250001
                 |-Login: .. . . . . no
                 |-IP: . . . . . . . no
                 |-SIP URI: .. . . . sip:50001@test_domain
                 |-OPC: .. . . . . . 0
                 |-DPC: .. . . . . . 0
                 OPTIONAL params:
                 incTrunkGrpId:. . . -1
                 outTrunkGrpId:. . . -1
                 snId: . . . . . . . ECSS 010070

Basic message params:
                 body: . . . . . . . receive full number
                 BASIC params:
                 callUID: .. . . . . 1941979922
                 intcpParty: . . . . partyB
                 callingPn:
                 |-dn:
                 | |-nrType: . . . . e.164
                 | |-nrValue: .. . . 79131242009
                 |-Login: .. . . . . orig A num
                 |-IP: . . . . . . . 10.0.20.138
                 |-SIP URI: .. . . . sip:42009@test_domain
                 |-OPC: .. . . . . . 0
                 |-DPC: .. . . . . . 0
                 calledPn:
                 |-dn:
                 | |-nrType: . . . . e.164
                 | |-nrValue: .. . . 79131250001
                 |-Login: .. . . . . no
                 |-IP: . . . . . . . no
                 |-SIP URI: .. . . . sip:50001@test_domain
                 |-OPC: .. . . . . . 0
                 |-DPC: .. . . . . . 0
                 OPTIONAL params:
                 incTrunkGrpId:. . . -1
                 outTrunkGrpId:. . . -1
                 snId: . . . . . . . ECSS 010070



Исправлена ошибка миграции на новую линию участников boss группы, если линия уже освобождена

Было: При звонке на номер босс группы, установление соединения абонента с одним из участников группы и последующего подключения к разговору еще одного участника группы посредством кнопки BLF (*126*<номер группы>*0), трое абонентов участвуют в разговоре. По завершению разговора участники группы отбиваются, но BLF показывает индикацию занятости линий на обоих. Индикация BLF показывает занятость линий, пока не совершится новый вызов на босс-группу или телефоны не продлят подписку BLF.

После исправления ошибки: По окончанию разговора BLF показывает, что линии участников группы свободны.

СОРМ исправлена ошибка прекращение контроля активного вызова при выходе из конференции одного из участников

Было: На контроле СОРМ абонент В. Абонент А устанавливает соединение с В. Абонент В активирует 3way-конференцию с абонентами А и C. Конференция на контроле СОРМ, медиа поток от трех абонентов на прослушивании. Абонент А отбивается, остается соединение абонентов В и C, но контроль со стороны СОРМ для соединения В и С больше не осуществляется.

После исправления ошибки: при аналогичном сценарии после отбоя абонента А осуществляется контроль соединения между абонентами В и С.

Исправлена ошибка модификации, после исправления ошибки для ocdpn модифицируются все нужные поля

Было: Ошибка при выполнении модификации по "ocdpn" некоторые поля для анализа были упущены.

После исправления ошибки: При выполнении модификации по "ocdpn" все поля могут быть использованы как для "условия", так и для "действия".

Исправлен долгий перезапуск сервиса ecss-cc-ui

Было: При выполнении перезапуска сервиса ecss-cc-ui командой sudo systemctl restart ecss-cc-ui.service происходило ожидание 90 сек до выполнение команды.

real    1m30.246s
user    0m0.002s
sys    0m0.006s

 После исправления ошибки: перезагрузка выполняется без ожидания.

real    0m0.016s
user    0m0.004s
sys    0m0.004s


Исправлена ошибка при создании профиля с использованием символов кириллицы

Было: При попытке создания имени профиля SORM3 на кириллице командой /cluster/core/core1/sorm3/set система выдавала ошибку, (пример ниже) и при попытке выполнить команду /cluster/core/core1/sorm3/info для промотора других (ранее созданных) профилей также получали ошибку:

cluster/core/core1/sorm3/set sorm_profile тест ip-port ip = 192.168.108.23 port = 20000
Command error: Command does not provide correct output for {ok,sorm_profile,
                                             [{"def_pro","192.168.63.36",1234,
                                               {18000,19000}},
                                              {"sorm_3","10.20.0.10",5200,
                                               {12000,14000}},
                                              {"sorm_3_2","10.0.0.11",5099,
                                               {21000,41000}},
                                              {"sorm_3_3","172.18.0.12",65535,
                                               {15000,17000}}],
                                             [{"def_pro","192.168.63.36",1234,
                                               {18000,19000}},
                                              {"sorm_3","10.20.0.10",5200,
                                               {12000,14000}},
                                              {"sorm_3_2","10.0.0.11",5099,
                                               {21000,41000}},
                                              {"sorm_3_3","172.18.0.12",65535,
                                               {15000,17000}},
                                              {[1090,1077,1089,1090],
                                               "192.168.108.23",20000,[]}]}.

cluster/core/core1/sorm3/info                                                          
Command error: Command does not provide correct output for {{ok,
                                              [{sorm_profile,
                                                [{"def_pro","192.168.63.36",
                                                  1234,
                                                  {18000,19000}},
                                                 {"sorm_3","10.20.0.10",5200,
                                                  {12000,14000}},
                                                 {"sorm_3_2","10.0.0.11",5099,
                                                  {21000,41000}},
                                                 {"sorm_3_3","172.18.0.12",
                                                  65535,
                                                  {15000,17000}},
                                                 {[1090,1077,1089,1090],
                                                  "192.168.108.23",20000,
                                                  []}]}]},
                                             false}.

Исправить данную ситуацию можно, только выполнив команду удаления профиля с именем на кириллице.

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

/cluster/core/core1/sorm3/set sorm_profile тест ip-port ip = 192.168.108.23 port = 20000 
Error: Invalid value - profile name must be latin for property "sorm_profile" 

cluster/core/core1/sorm3/info                                                                       
┌────────────┬───────────────────────┐
│  Property  │         Value         │
├────────────┼───────────────────────┤
│sorm_profile│def_pro: 192.168.63.36 │
│            │def_pro: 1234          │
│            │def_pro: 18000 - 19000 │
│            │sorm_3: 10.20.0.10     │
│            │sorm_3: 5200           │
│            │sorm_3: 12000 - 14000  │
│            │sorm_3_2: 10.0.0.11    │
│            │sorm_3_2: 5099         │
│            │sorm_3_2: 21000 - 41000│
│            │sorm_3_3: 172.18.0.12  │
│            │sorm_3_3: 65535        │
│            │sorm_3_3: 15000 - 17000│
└────────────┴───────────────────────┘


Убрана возможность назначить отрицательное значение порта в sorm3-профиле

Было: При вводе отрицательного значения порта система принимала параметр, что недопустимо.

/cluster/core/core1/sorm3/set sorm_profile profile ip-port ip = 192.168.108.23 port = -55555
/cluster/core/core1/sorm3/set sorm_profile profile port-range range_start = -50000 range_end = 60000
/cluster/core/core1/sorm3/info                                                                                  
┌────────────┬───────────────────────┐
│  Property  │         Value         │
├────────────┼───────────────────────┤
│sorm_profile│profile: 192.168.108.23│
│            │profile: -55555        │
│            │profile: -50000 - 60000│
└────────────┴───────────────────────┘

После исправления ошибки: Верификация значений выполняется корректно, оператор получает уведомление:

/cluster/core/core1/sorm3/set sorm_profile profile ip-port ip = 192.168.108.23 port = -55555
Error: Invalid value - port ("-55555") must be non negative integer for property "sorm_profile" 

/cluster/core/core1/sorm3/set sorm_profile profile port-range range_start = -50000 range_end = 60000
Error: Invalid value - port ("-50000") must be non negative integer for property "sorm_profile" 

/cluster/core/core1/sorm3/set sorm_profile profile port-range range_start = 50000 range_end = -60000
Error: Invalid value - port ("-60000") must be non negative integer for property "sorm_profile"


Исправлена ошибка зависания вызова при попытке занять больше портов sorm экстрактора, чем указано в диапазоне sorm3-профиля

Было: вызов зависает на минуту и не завершается с соответствующей причиной, если количество занятых портов превышает диапазон, установленный в профиле sorm3.

После исправления ошибки:
Отправляется сообщение 503 с Reason: Q850; cause=34 No circuit/channel available

Исправлена ошибка подключения несуществующего или не настроенного sorm3-профиля

Было: Сормируемый вызов подвисает на минуту, если в настройках sorm3 привязать не-существующий профиль, затем отбивается SSW - 480 Temporarily not available Reason: Q.850;cause=19;text="No answer from user (user alerted)".

/domain/test_domain/sorm3/set entrypoint_profile test3
Property "entrypoint_profile" successfully changed from: 

   to
test3.

/cluster/core/core1/sorm3/info sorm_profile 
┌────────────┬─────┐
│  Property  │Value│
├────────────┼─────┤
│sorm_profile│     │
└────────────┴─────┘

 

После исправления ошибки
: Выполняется валидация имени профиля и его значений:

/domain/test_domain/sorm3/set entrypoint_profile test3
Command error: Invalid command's arguments:test_domain entrypoint_profile test3


Исправлена ошибка адаптации номера в event forwarding

Было: При использовании услуги безусловной переадресации (cfu) на sorm3 передавался event forwarding c оригинальным номером:

                 [INFO] SORM_K: Basic message params:
                 body: . . . . . . . forwarding
                 BASIC params:
                 callUID: .. . . . . 1028428196
                 forwardedTo:
                 |-dn:
                 | |-nrType: . . . . unknown
                 | |-nrValue: .. . . 1001
                 |-Login: .. . . . . no
                 |-IP: . . . . . . . no
                 |-SIP URI: .. . . . no
                 |-OPC: .. . . . . . 0
                 |-DPC: .. . . . . . 0
                 forwardType:. . . . cfu
                 OPTIONAL params:
                 incTrunkGrpId:. . . -1
                 outTrunkGrpId:. . . -1
                 snId: . . . . . . . ECSS 010070

После исправления ошибки: Номер передается модифицированный:

                 [INFO] SORM_K: Basic message params:
                 body: . . . . . . . forwarding
                 BASIC params:
                 callUID: .. . . . . 998893596
                 forwardedTo:
                 |-dn:
                 | |-nrType: . . . . unknown
                 | |-nrValue: .. . . 73832201001
                 |-Login: .. . . . . no
                 |-IP: . . . . . . . no
                 |-SIP URI: .. . . . no
                 |-OPC: .. . . . . . 0
                 |-DPC: .. . . . . . 0
                 forwardType:. . . . cfu
                 OPTIONAL params:
                 incTrunkGrpId:. . . -1
                 outTrunkGrpId:. . . -1
                 snId: . . . . . . . ECSS 010070


Исправлена ошибочная адаптация feature-кодов

Было: при выполнении сормирования вызовов под адаптацию (добавление префикса до международного формата) попадали feature-коды, начинающиеся на # (деактивация услуг) и *# (просмотр состояния услуг), так-же все feature-коды импульсного набора в случае, если в условии указана маска например ????.

Event Message: ssAction (8)
    SSAction
        Call UID: 38566761
        Subscriber info
            Number
                Type: unknown (1)
                Value: 79994501000
            SIP URI: sip:1000@192.168.47.50:5050
            Abonent's login: Test_adaptation_cgpn
        Dialed number
            Type: unknown (1)
            Value: 7999450#26#
        VAS action type: deactivation (1)
        VAS action result: success (1)
        VAS type: block incoming calls (DND) (4)

или

Event Message: ssAction (8)
    SSAction
        Call UID: 714002644
        Subscriber info
            Number
                Type: unknown (1)
                Value: 79994501000
            SIP URI: sip:1000@192.168.47.50:5050
            Abonent's login: Test_adaptation_cgpn
        Dialed number
            Type: unknown (1)
            Value: 7999450*#26
        VAS action type: interrogation (2)
        VAS action result: success (1)
        VAS type: block incoming calls (DND) (4)

После исправления ошибки: Валидации feature-кодов:

Event Message: ssAction (8)
    SSAction
        Call UID: 1372009067
        Subscriber info
            Number
                Type: unknown (1)
                Value: 79994501000
            SIP URI: sip:1000@192.168.47.50:5050
            Abonent's login: Test_adaptation_cgpn
        Dialed number
            Type: unknown (1)
            Value: *#26
        VAS action type: interrogation (2)
        VAS action result: success (1)
        VAS type: block incoming calls (DND) (4)


Исправлена ошибка активации услуги CFT с указанием разных внешнего и внутреннего номеров через feature-код

Было: при использовании услуги CFT нет возможности активировать/изменить параметры внутреннего и внешнего номера через feature-код:

/domain/test_domain/ss/info 42007        
Domain: test_domain

Supplementary services' settings:
┌─────────────────┬──────────────┬──┬──┬─────────────────────────────────────────────────────────────┐
│    Address      │   Name       │V │E │                                       CSD                   │
├─────────────────┼──────────────┼──┼──┼─────────────────────────────────────────────────────────────┤
│                 │              │  │  │                                                             │
└─────────────────┴──────────────┴──┴──┴─────────────────────────────────────────────────────────────┘

Абонент вводит последовательность *28*123*10001800*5959#

/domain/test_domain/ss/info 42007
Domain: test_domain

Supplementary services' settings:
┌─────────────────┬──────────────┬──┬──┬─────────────────────────────────────────────────────────────┐
│    Address      │    Name      │V │E │                                       CSD                   │
├─────────────────┼──────────────┼──┼──┼─────────────────────────────────────────────────────────────┤
│42007            │cft           │20│T │day_1, address: 5959, external: 5959, timetable: 10:00-18:00 │
│                 │              │  │  │day_2, address: 5959, external: 5959, timetable: 10:00-18:00 │
│                 │              │  │  │day_3, address: 5959, external: 5959, timetable: 10:00-18:00 │
│                 │              │  │  │day_4 = off                                                  │
│                 │              │  │  │day_5 = off                                                  │
│                 │              │  │  │day_6 = off                                                  │
│                 │              │  │  │day_7 = off                                                  │
│                 │              │  │  │replace_category_from_redirection = false                    │
│                 │              │  │  │time_format = local                                          │
│                 │              │  │  │use_external_number = true                                   │
└─────────────────┴──────────────┴──┴──┴─────────────────────────────────────────────────────────────┘

 Абонент вводит последовательность *28*2*10001800*2*5555#

/domain/test_domain/ss/info 42007
Domain: test_domain

Supplementary services' settings:
┌─────────────────┬──────────────┬──┬──┬─────────────────────────────────────────────────────────────┐
│     Address     │     Name     │V │E │                                       CSD                   │
├─────────────────┼──────────────┼──┼──┼─────────────────────────────────────────────────────────────┤
│42007            │cft           │20│T │day_1, address: 5959, external: 5959, timetable: 10:00-18:00 │
│                 │              │  │  │day_2, external: 5555, timetable: 10:00-18:00                │
│                 │              │  │  │day_3, address: 5959, external: 5959, timetable: 10:00-18:00 │
│                 │              │  │  │day_4 = off                                                  │
│                 │              │  │  │day_5 = off                                                  │
│                 │              │  │  │day_6 = off                                                  │
│                 │              │  │  │day_7 = off                                                  │
│                 │              │  │  │replace_category_from_redirection = false                    │
│                 │              │  │  │time_format = local                                          │
│                 │              │  │  │use_external_number = true                                   │
└─────────────────┴──────────────┴──┴──┴─────────────────────────────────────────────────────────────┘

Абонент вводит последовательность *28*5*14451615*1*333#  

/domain/test_domain/ss/info 42007
Domain: test_domain

Supplementary services' settings:
┌─────────────────┬──────────────┬──┬──┬─────────────────────────────────────────────────────────────┐
│      Address    │    Name      │V │E │                                       CSD                   │
├─────────────────┼──────────────┼──┼──┼─────────────────────────────────────────────────────────────┤
│42007            │cft           │20│T │day_1, address: 5959, external: 5959, timetable: 10:00-18:00 │
│                 │              │  │  │day_2, external: 5555, timetable: 10:00-18:00                │
│                 │              │  │  │day_3, address: 5959, external: 5959, timetable: 10:00-18:00 │
│                 │              │  │  │day_4 = off                                                  │
│                 │              │  │  │day_5, address: 333, timetable: 14:45-16:15                  │
│                 │              │  │  │day_6 = off                                                  │
│                 │              │  │  │day_7 = off                                                  │
│                 │              │  │  │replace_category_from_redirection = false                    │
│                 │              │  │  │time_format = local                                          │
│                 │              │  │  │use_external_number = true                                   │
└─────────────────┴──────────────┴──┴──┴─────────────────────────────────────────────────────────────┘

 Абонент вводит последовательность *28*5*14451615*2*888#

/domain/test_domain/ss/info 42007
Domain: test_domain

Supplementary services' settings:
┌─────────────────┬─────────────┬──┬──┬─────────────────────────────────────────────────────────────┐
│     Address     │   Name      │V │E │                    CSD                                      │
├─────────────────┼─────────────┼──┼──┼─────────────────────────────────────────────────────────────┤
│42007            │cft          │20│T │day_1, address: 5959, external: 5959, timetable: 10:00-18:00 │
│                 │             │  │  │day_2, external: 5555, timetable: 10:00-18:00                │
│                 │             │  │  │day_3, address: 5959, external: 5959, timetable: 10:00-18:00 │
│                 │             │  │  │day_4 = off                                                  │
│                 │             │  │  │day_5, address: 888, timetable: 14:45-16:15                  │
│                 │             │  │  │day_6 = off                                                  │
│                 │             │  │  │day_7 = off                                                  │
│                 │             │  │  │replace_category_from_redirection = false                    │
│                 │             │  │  │time_format = local                                          │
│                 │             │  │  │use_external_number = true                                   │
└─────────────────┴─────────────┴──┴──┴─────────────────────────────────────────────────────────────┘

После исправления ошибки: При той же последовательности действий:
*28*123*10001800*5959#
*28*2*10001800*2*5555#
*28*5*14451615*1*333#
*28*5*14451615*2*888#

/domain/test_domain/ss/info 42007
Domain: test_domain

Supplementary services' settings:
┌─────────────────┬─────────────┬──┬──┬─────────────────────────────────────────────────────────────┐
│    Address      │     Name    │V │E │                   CSD                                       │
├─────────────────┼─────────────┼──┼──┼─────────────────────────────────────────────────────────────┤
│42007            │cft          │20│T │day_1, address: 5959, external: 5959, timetable: 10:00-18:00 │
│                 │             │  │  │day_2, address: 5959, external: 5555, timetable: 10:00-18:00 │
│                 │             │  │  │day_3, address: 5959, external: 5959, timetable: 10:00-18:00 │
│                 │             │  │  │day_4 = "off"                                                │
│                 │             │  │  │day_5, address: 333, external: 888, timetable: 14:45-16:13   │
│                 │             │  │  │day_6 = "off"                                                │
│                 │             │  │  │day_7 = "off"                                                │
│                 │             │  │  │replace_category_from_redirection = false                    │
│                 │             │  │  │time_format = local                                          │
│                 │             │  │  │use_external_number = true                                   │
└─────────────────┴─────────────┴──┴──┴─────────────────────────────────────────────────────────────┘


Исправлен прием DTMF event-ов  на sorm приемник в предответном состоянии

Было: DTMF event посылаются на sorm-приемник только после ответа стороной "В". 
Абонент "А" выполняет попытку вызова на абонента "В" и во время посыла вызова отправляет dtmf(info). DTMF events на sorm-приемник не приходят. Абонент "В" отвечает на вызов, после чего на sorm-приемник приходят серия DTMF events.

После исправления ошибки: DTMF events поступают на sorm-приемник по мере набора.

Исправлено заполнение атрибута xpgk-origination-gateway-ip при вызовах из транка в режиме SIP-Q
на Antifraud-сервер

Было: При входящем вызове из SIP-Q транка ssw посылает запрос на RADIUS сервер с атрибутом xpgk-origination-gateway-ip, в котором подставляет значение undifined.

RADIUS Protocol
    Code: Access-Request (1)
. . .
        AVP: t=Vendor-Specific(26) l=51 vnd=ciscoSystems(9)
            Type: 26
            Length: 51
            Vendor ID: ciscoSystems (9)
            VSA: t=Cisco-AVPair(1) l=45 val=in-trunkgroup-label=xqc.test.trunk.autoname
        AVP: t=Vendor-Specific(26) l=45 vnd=ciscoSystems(9)

            Type: 26
            Length: 45
            Vendor ID: ciscoSystems (9)
            VSA: t=Cisco-AVPair(1) l=39 val=xpgk-origination-gateway-ip=undefined
        AVP: t=Vendor-Specific(26) l=36 vnd=ciscoSystems(9)
            Type: 26
            Length: 36
            Vendor ID: ciscoSystems (9)
            VSA: t=Cisco-AVPair(1) l=30 val=xpgk-request-type=check_call

После исправления ошибки: Подставляется корректный IP-адрес.

RADIUS Protocol
. . .
        AVP: t=Vendor-Specific(26) l=51 vnd=ciscoSystems(9)

            Type: 26
            Length: 51
            Vendor ID: ciscoSystems (9)
            VSA: t=Cisco-AVPair(1) l=45 val=in-trunkgroup-label=xqc.test.trunk.autoname
        AVP: t=Vendor-Specific(26) l=49 vnd=ciscoSystems(9)
            Type: 26
            Length: 49
            Vendor ID: ciscoSystems (9)
            VSA: t=Cisco-AVPair(1) l=43 val=xpgk-origination-gateway-ip=192.168.62.14
        AVP: t=Vendor-Specific(26) l=36 vnd=ciscoSystems(9)
            Type: 26
            Length: 36
            Vendor ID: ciscoSystems (9)
            VSA: t=Cisco-AVPair(1) l=30 val=xpgk-request-type=check_call


Исправлена адаптация cgpn и cdpn в запросе accounting request на Antifraud сервер

Было: На RADIUS-сервер отсылается запрос accounting_req без выполнения адаптации номеров "A"(100) и "B"(101).

RADIUS Protocol
    Code: Access-Request (1)
    Packet identifier: 0x0 (0)
    Length: 251
    Authenticator: 284974f5c854f7e9c2cc64251f3e2f32
    [The response to this request is in frame 7]
    Attribute Value Pairs
        AVP: t=User-Password(2) l=18 val=Encrypted
        AVP: t=Acct-Session-Id(44) l=21 val=3558465141105375073
        AVP: t=Called-Station-Id(30) l=5 val=101
        AVP: t=Calling-Station-Id(31) l=5 val=100
        AVP: t=User-Name(1) l=5 val=env
        AVP: t=NAS-IP-Address(4) l=6 val=127.0.0.1
        AVP: t=Vendor-Specific(26) l=51 vnd=ciscoSystems(9)
        AVP: t=Vendor-Specific(26) l=50 vnd=ciscoSystems(9)
        AVP: t=Vendor-Specific(26) l=36 vnd=ciscoSystems(9)
        AVP: t=Vendor-Specific(26) l=34 vnd=ciscoSystems(9)

После исправления ошибки: Подставляется полный номер "A" и "В":

RADIUS Protocol
    Code: Access-Request (1)
    Packet identifier: 0x0 (0)
    Length: 267
    Authenticator: 284974f5c854f7e9c2cc64251f3e2f32
    [The response to this request is in frame 7]
    Attribute Value Pairs
        AVP: t=User-Password(2) l=18 val=Encrypted
        AVP: t=Acct-Session-Id(44) l=21 val=3558465141105375073
        AVP: t=Called-Station-Id(30) l=13 val=73832201101
        AVP: t=Calling-Station-Id(31) l=13 val=73832201100
        AVP: t=User-Name(1) l=5 val=env
        AVP: t=NAS-IP-Address(4) l=6 val=127.0.0.1
        AVP: t=Vendor-Specific(26) l=51 vnd=ciscoSystems(9)
        AVP: t=Vendor-Specific(26) l=50 vnd=ciscoSystems(9)
        AVP: t=Vendor-Specific(26) l=36 vnd=ciscoSystems(9)
        AVP: t=Vendor-Specific(26) l=34 vnd=ciscoSystems(9)


Исправлено прохождение UPDATE через транк при сборе конференции

Было: Услуга конференции подключена на абонента "A" или на абонента "B". При подключении абонента "С", находящимся за транком к конференции, не проходит UPDATE через транк. В случае, если абонент "С" является локальным, UPDATE проходит успешно. Если за транком находится абонент "А", а абоненты "B" и "C" локальные (услуга конференции подключена на абонента "B"), то UPDATE проходит успешно.

После исправления ошибки:  UPDATE в сторону абонента "С" проходит успешно, вне зависимости находится ли абонент локально или за транком.


Исправлено заполнение SIP URI при включенной опции non_telephone_number_allow на СОРМ-3

Было: SSW поддерживает функцию SIP non_telephone_number_allow. 
Но при работе с СОРМ-3 в ASN calledPn: SIP URI: вместо SIP URI абонента "В" передается "no" (SIP URI: .. . . . no). 

После исправления ошибки:  В сторону СОРМ-3 в поле calledPn: передается <SIP URI B>.

Исправлено заполнение relParty при неответе/занятости абонентом B

Было: При не успешном установлении соединения по причине неответа/занятости абонента "B", release в сторону sorm-приемника relParty: partyA.

    Basic message params:
                 body: . . . . . . . release
                 BASIC params:
                 callUID: .. . . . . 1941979922
                 relParty: . . . . . partyА
                 OPTIONAL params:
                 ReleaseCause:
                 |-Proto: .. . . . . Q.850
                 |-Cause: .. . . . . 18

    Basic message params:
                 body: . . . . . . . release
                 BASIC params:
                 callUID: .. . . . . 1943977942
                 relParty: . . . . . partyА
                 OPTIONAL params:
                 ReleaseCause:
                 |-Proto: .. . . . . Q.850
                 |-Cause: .. . . . . 17

 После исправления ошибки: release в сторону sorm-приемника relParty: partyВ.

    Basic message params:
                 body: . . . . . . . release
                 BASIC params:
                 callUID: .. . . . . 1948971982
                 relParty: . . . . . partyB
                 OPTIONAL params:
                 ReleaseCause:
                 |-Proto: .. . . . . Q.850
                 |-Cause: .. . . . . 18


    Basic message params:
                 body: . . . . . . . release
                 BASIC params:
                 callUID: .. . . . . 1948991913
                 relParty: . . . . . partyB
                 OPTIONAL params:
                 ReleaseCause:
                 |-Proto: .. . . . . Q.850
                 |-Cause: .. . . . . 17