v/1.8

v/1.8.0 (до 2024-07-20)

Платформа

  • Installer. Изменен способ запуска docker-контейнера. Обновление с более старых версий должно производиться через пересоздание контейнера.

  • Deservice. Реализован режим мягкого вывода серверов из обслуживания. Текущие процессы продолжают обслуживаться, новые не распределяются. Active-Passive группы перемещают постепенно лидеров в активную зону.

  • Shutdown. Реализована скоростная отстрелка подвисших TCP подключений после жесткого пропадания сервера. Исключена возможность временной блокировки сервера уведомлений вследствие потери веб-сервера, подписанного на события.

  • Mnesia. Повышена стабильность загрузки и восстановления mnesia после развала схемы.

  • Idle. Оптимизирована производительность idle-сервисов, активных при остутствии целевой нагрузки в системе.

  • DC ping. Добавлен периодический пустой запрос в БД для удержания подключения на файрволле при отсутствии активности.

  • /ws/token/v1. Добавлен Endpoint для работы под учетной записью токена с передачей токена в заголовке Authorization.

  • PwdHash. Реализовано автоматическое хеширование открытых паролей, указанных администратором в файле конфигурации (строки подключения, мастер-админ, контроллер репликаций PostgreSQL, менеджер бэкапов и т.д.).

  • Refresh Apps. Исправлена проблема долгого обновления пользовательских приложений после установки продуктового слоя.

  • Default domain. В мастер-домен добавлена возможность задавать домен по умолчанию, подставляемый в поле ввода окна авторизации (в дополнение к стандартному выбору домена по умолчанию).

  • /fs/targets/files. В REST-API добавлен новый endpoint для загрузки файлов, на которые можно ссылаться из настроек домена.

  • $USER. Функции security-фильтра динамической модели данных ROLES, GROUPS, SUBORDINATES получили дополнительную форму массива для использования результата в функциях hasAny и hasAll.

  • DomainTree. Исправлена функция построения кеша дерева доменов - после перезагрузки микросервиса DC был возможен сбой.

  • Email datetime. Время получения письма теперь проставляется из заголовков самого письма (ранее принималось за время создания сущности - теперь это значение в новом поле recvDateTime).

  • BREAKING CHANGE. Email messages. Изменен тип поля references. Это влечет пересоздание таблицы сообщений с переименованием предыдущей в backup. Способ восстановить предыдущие письма - либо переопросить сервер IMAP путем удаления каталогов email/Folders, к которым привязаны письма; либо вручную провести копирование данных в новую структуру таблицы БД в модельных базах всех доменов.

  • Iface. Реализована динамическая привяno 729зка сетевого интерфейса медиашлюза без необходимости вносить изменения в конфигурацию. Теперь не нужно заполнять поля 'aliases', 'termportranges', 'rtpiface' в конфигурационных параметрах mg, bgmg, sg, esg, а также в поле 'ifaces' серверов, если интерфейс не используется в других местах конфигурации. Достаточно указывать 'termportrange' для медиа-гейтов.

  • CPU usage. Глубокая оптимизация использования процессорного времени: в Idle режиме при большом количестве доменов, во время загрузки сервера. Отдельно в односерверных системах и системах без пассивных экземпляров микросервисов. Реализована квотированная загрузка доменов и некоторых других объектов. Реализована возможность задавать для некоторых микросервисов ограниченный перечень обслуживаемых доменов.

  • Ban. Правила пограничного фильтра, содержащие только указание адреса, влекут запрет внесения подпадающего адреса в динамический бан-лист.

  • Concurrent. Реализована поддержка конкурентной лицензии на устройства (как по конкретным регистрациям, так и по учетным записям).

  • Скорректировано поведение сервиса Leader/Follower, приводившее в некоторых случаях после потери связи к ненужной перезагрузке экземпляра-лидера.

  • WS exec. Устранена проблема выдачи результата методом /exec при использовании https.

  • Default log level. В конфигурационные настройки вынесена опция управления уровнем логирования по умолчанию ('logging_default_level'): в микросервисы, в сервер, в сайт, в общий раздел.

  • Msvc sections. Реализованы конфигурационая опция роли msvc и опция сущности mservice для выбора конкретной секции серверов, исполняющих конкретный продуктовый микросервис.

  • Disable plugins. В параметры мастер домена вынесена настройка для отключения части встроенных плагинов, например CTI.

  • Script limits. В параметры домена вынесена настройка ограничений для машины сценариев (число исполненных компонентов, время исполнения сценариев, пауза между компонентами, возможность использования глобальных переменных).

  • DMS/DC pools. Реализована возможность управлять размером пула подключений к хранилищам postgresql (опция 'max_connections' сущности Storage); в конфигурационные настройки роли DMS добавлена опция 'pg_max_connections_default' (=10).

  • Bulk events. Организована массовая отправка событий подписчикам в условиях высокой нагрузки.

  • Sections. В конфигурационные опции микросервисов msvc и dms добавлена опция sections, а в опции class и mservice добавлена опция section. Используется для разделения микросервиса на секции и привязывания конкретных сущностей к выбранным экземплярам.

  • %WEBSERVERS_EX%. Добавлен макрос в строку запуска продуктовых микросервисов, сообщающего расширенную информацию о размещении вебсерверов - локальные, по секциям, по тэгам.

  • Astra. Добавлен режим установки на Astra Linux в закрытом контуре без доступа в интернет.

  • Добавлена опция в раздел general конфигурации для полного отключения cdr.

  • Расширена пропускная способность в процессе рассылки cdr событий за счет мультиплексирования.

  • Кеши с данными доменного центра получили лимит времени хранения в целях оптимизации расходования оперативной памяти (решена проблема рандомных номеров, зависающих в кеше).

  • В конфигурационные настройки ролей WS добавлены параметры 'tag' и 'order'. Используются при формировании параметров командной строки продуктовых микросервисов - задается в mservices с помощью макроса %WEBSERVERS_EX%, влияет на выбор вебсервера для подключения из продуктового микросервиса.

  • Улучшен алгоритм валидатора конфигураций, реализован двойной проход для покрытия случаев, ранее строго считавшихся невалидными.

  • Исправлено поведение микросервиса msvc в ситуации, когда при обновлении сервисов вложенный архив еще не актуален.

  • Исправлено дублирование конфигураций микросервисом MC при старте системы.

  • Для IMAP каталога добавлены опции keep_unseen, store_raw_as_file, store_html_as_file.

  • Обновлен встроенный SSL-сертификат по умолчанию, используемый по умолчанию в частности при установке webrtc соединений. Поддержаны новые алгоритмы и версии.

  • Добавлена возможность управления режимом работы объектной БД mnesia - в конфигурационных параметрах ролей, связанных с ней (кроме DMS), добавлена опция 'mnesia_storage_mode': disc | ram | disc_only.

  • Исправлена проблема в работе эндпойнта /api/token/v1

  • Устранены препятствия для работы платформы в docker-контейнере не под root пользователем.

  • Реализована очистка папки /tmp в docker-контейнере при запуске.

  • SystemState. В запрос состояния системы добавлена проверка актуальности сертификатов meet: meet_cert_pem, meet_turn_cert_pem.

  • WS. Исправлена ошибка при отправке ответа на HTTPS запрос к токену с использованием TLS-сертификата.

  • Исправлена проблема при установке продуктового слоя в мастер-домен.

  • Roleapps. Добавлена поддержка мастер-домена в менеджер ролевых приложений продуктового слоя.

  • IM. В канале мессенджера telegram поддержаны новые типы сообщений: sticker, poll, contact, location.

  • Ослаблено намеренное притормаживание передачи файла обновления между серверами.

  • Микросервисы wssubscr и callstore значительно повысили пропускную способность модифицирующих операций, устранено узкое горло.

Динамическая модель данных

  • Model. Реализована функция изменения столбцов таблицы в БД postgres при модификации свойств класса, позволяющих провести операцию автоматически. Ранее изменение свойства приводило к пересозданию таблицы. Сейчас пересоздание будет только если изменение кофликтное (например попытка сделать числовым поле, в котором у существующих объектов находятся неприводимые к числу строки).

  • DMS reload. Устранена лишняя самопроизвольная перезагрузка некоторой части классов после изменения метаданных любого из них.

  • DMS required. Устранена проблема непроставления атрибута NOT NULL таблице postgres при модификациях значения опции required поля.

  • DMS notify. Значительно оптимизирована модель уведомлений об изменениях в модели данных. Индексирование подписок. Мультиплексирование подписок в платформе. Массовая отправка на вебсерверы. Фильтр по операциям и содержанию событий. Suspend/Resume процесса уведомлений для класса.

  • DMS stat_mode. Для классов добавлена возможность указания уровня логирования статистики: high | medium | low | disabled | default. В конфигурационные параметры роли DMS добавлена дефолтная настройка уровня статистического логирования.

  • DMS RAM expires. Реализована возможность настройки автоматического удаления сущностей коллекций в хранилищах типа 'ram'.

  • DMS pools. Разделен пул для системных обращений, включая запросы микросервисов продуктового слоя, и прочих запросов.

  • Suspend Notify. Добавлен websocket-api метод для приостановки/возобновления отправки уведомлений об изменениях коллекций.

  • Модифицирована привязка режимов storage_mode классов динамической модели данных к типам хранилищ: ram теперь mnesia ram only, runtime как и раньше mnesia ram+disc, ets → локальная оперативная хеш-таблица.

  • Реализован запрос dmsbatch в REST API динамической модели данных для исполнения серии запросов к одному классу.

  • Реализована операция SETUP в REST-API динамической модели данных. Доступны методы: suspend_notification, resume_notification, read_partitions, drop_partition, optimize.

  • Добавлена опция skip_response_entity в REST-запросы create, update, delete, исключающие выдачу в ответе полного тела сущности.

  • Запросы Rest-API динамической модели данных получили опцию 'hrkey', позволяющую управлять выбором процесса-обработчика при параллельном обслуживании.

  • Реализована привязка классов к секциям DMS. В конфигурации для экземпляров DMS может задаваться список секций, для классов может задаваться конкретная секция. Обслуживание класса производится только на экземплярах, содержащих указанную секцию, а если таких несколько, то на том где номер группы меньше. Вебсервер получил endpoint /rest/v1/design/classes/sections, возвращающий секции DMS из конфигурации.

  • Реализована поддержка актуальной версии clickhouse.

  • В свойства класса динамической модели данных добавлены 'worker_r_count' и 'worker_w_count' для тонкого тюнинга производительности.

  • API-запрос dmsquery получил возможность указания classpath вместо storageInstance для определения хранилища, в котором предстоит исполнять запрос. Преимущественно ищется хранилище с постфиксом "_readonly", а если такого нет, то как раньше проверяется и создается readonly-пользователь.

  • В целях ускорения добавлен кеш на ответы по запросам агрегации в классы динамической модели данных. Время жизни определяется свойством класса 'opts.aggr_cache_ttl_ms'.

  • Значительно ускорены запросы на постраничный вывод из clickhouse.

  • Операции в clickhouse теперь не используют модификатор FINAL в целях значительного увеличения скорости выполнения запросов к таблицам типа ReplacingMergedTree.

  • В свойства хранилищ типа kafka и clickhouse добавлена опция 'domain', позволяющая установить подключение с базой данных другого домена, отличающегося от текущего.

  • Существенно увеличена пропускная способность сервиса отправки уведомлений об изменениях в модели данных.

  • Для классов, имеющих storagemode: ram и runtime, в DMS добавлена хеш таблица для индексирования lookup полей.

  • Для классов добавлена опция 'ext.dirty_write_enabled', позволяющая отключить транзакцию для операций модификации. Работа классов ускоряется. Проблем с целостностью не возникает в связи с принципиальным последовательным однопоточным обслуживанием каждого объекта. Однако запись на резервный сервер производится асинхронно и данные могут быть потеряны при резком прекращении работы ноды.

  • Добавлен тип поля increment для свойств классов динамической модели данных. Реализуется в микросервисе DMS, при загрузке рассчитывается как максимум среди всех сущностей класса, а дальше каждая операция create и replace увеличивает. Поэтому не гарантируется отсутствие пропусков (кейс замены сущности на нее саму), а также не гарантируется тотальная уникальность в течение времени жизни коллекции (кейс добавленной и удаленной записи с последующим переинициализацией класса или перезапуском микросервиса DMS).

  • Добавлен конфигурационный параметр роли dms query_worker_count (по умолчанию 4), позволяющий ограничить количество одновременных процессов построения выборок методом API dmsquery. Также ограничена выдача результата - максимально 1000 строк, иное необходимо реализовывать с помощью постраничных обращений.

  • Динамические коллекции архивного типа, создаваемые платформой автоматически (такие как сообщения email, im) теперь приоритетно привязываются к хранилищам kafka+clickhouse, если они создани в домене с именем 'model_ch', с меньшим приоритетом к хранилищу 'model_pg', по умолчанию 'auto'. Достаточно создать хранилище, чтобы произошла перепривязка.

  • Динамические коллекции категорий, создаваемые платформой автоматически (такие как аккаунты email, im) теперь приоритетно привязываются к хранилищу postgresql, если оно создано в домене с именем 'model_pg', по умолчанию 'auto'. Достаточно создать хранилище, чтобы произошла перепривязка.

  • Динамические коллекции имеющие поля для вложений и создаваемые платформой автоматически (такие как сообщения email, im) теперь приоритетно привязываются к файловому хранилищу с именем 'model_files', если оно создано, а по умолчанию 'auto'. Конкретно вложения email и im с еще большим приоритетом привязываются к существующим хранилищам с именами 'email_files' и 'im_files' соответственно. Достаточно создать хранилище, чтобы произошла перепривязка.

Телефония

  • IVR migration. Реализована миграция сценария IVR на другой медиашлюз при падении текущего - активный медиа-компонент начинает исполняться заново.

  • NoSDP. Реализована поддержка и обработка INVITE-запросов без SDP (offer в ответе 2хх, answer в ACK-запросе).

  • Bindings. Реализовано наследование меток звонка в подменяющий вызов (Invite+Replaces).

  • Record. Реализована возможность задавать аудио-форматы для использования в режимах внешней записи SipRec, SipFork.

  • PARENT:acallid:CALLID. Реализована функция привязки нового (консультационного) вызова к основному вызову через установку метки. Применяется двухшаговым переводом из IVR, а также в API колл-менеджера.

  • CSeq. Исправлена проблема применения повторного ответа 2XX на следующий запрос - если в сети потерялся пакет ACK в случаях осуществления переводных вызовов был возможен сбой.

  • Freeze. Обнаружена и устранена блокировка в работе ESG на время транзакции - в массовой кампании были возможны несколько неудачных звонков по причине технического внутреннего таймаута.

  • Credentials. Учетная запись абонента sipuser получила возможность применять одновременно и независимо различные пары {login, pwd} для регистрации.

  • MG. Исправлена подмена адреса через re-Invite.

  • Pending. Значительно повышена стабильность обработки встречных инвайтов - провоцируется при одновременной миграции медиа-контекстов b2b и ivr на новый медиашлюз.

  • Diagram. Исправлен алгоритм построения диаграмма последовательности для телефонного вызова.

  • SendNotify. Повышена стабильность работы функций отправки NOTIFY и OPTIONS с сервера на устройства.

  • SDP. Исправлена функция парсинга форматов SDP - при указании форматов в нестандартном виде был возможен сбой.

  • Self-register. Исправлена проблема ложной привязки внешних вызовов к внутренним абонентам при регистрации системы на самой себе.

  • Unregister. Исправлена проблема неудаления регистрации при поступлении запроса через другой пир, например с другого TCP-порта.

  • Правила маршрутизации - проверка и применение следующих правил при отсутствии регистрации и соответствующих переадресаций учетной записи внутреннего абонента. Возможность отключить переход к следующим правилам с помощью opts.fallback_next (по умолчанию true).

  • Возможность настройки прослушивания конкретных сетевых интерфейсов сервисами SIP-сигнализации. В частности возможность использования 5060 на разных интерфейсах микросервисами sg и esg.

  • Добавлено поле действия для правил featurerule, позволяющее устанавливать как запрет, так и разрешение (ранее только разрешение).

  • Hotdesking. Добавлен фичакод hotdesking для динамического связывания учетной записи пользователя и SIP-устройства; возможность задания пользователю номера телефона и пинкода.

  • Diversion. Реализована поддержка RFC-5806. Учетная запись провайдера получила соответствующую опцию; при ее активации маршрутизируемый наружу внешний же вызов сохраняет в качестве инициатора вызова номер исходного внешнего абонента.

  • Billing RADIUS. Реализована поддержка RFC-2865, RFC-2866, RFC-2869, RFC-6929 для взаимодействия с системой биллинга по протоколу RADIUS в рамках учета вызовов, совершаемых через учетную запись провайдера с включенной опцией биллинга.

  • Provider reinvite mode. Добавлен режим учетной записи, не подвергающий изменению номер абонента при отправке re-invite провайдеру телефонии; выставлен по умолчанию.

  • STAT. В общие настройки конфигурации вынесены параметры для настройки времени хранения статистической информации о вызовах для нужд построения замыканий и диаграмм (sip_stat_timeout_closure, sip_stat_timeout_callinfo).

  • Log closure. В конфигурационные опции вынесена возможность отключения лог-журналов замыканий (log_closure).

  • Normalization svcscript. Правила нормализации номеров получили возможность модифицировать to_username, from_username, from_displayname с помощью служебного сценария.

  • BGMG и Sip-Alg. Исправлена логика определения неободимости активации пограничного медиа-шлюза на SG в условиях, когда на сервере только один интерфейс с серым адресом и активированным sip-alg.

  • Username. Запрещены вызовы абонентов по их username (login) для всех случаев, кроме подменяющих переводов.

  • Forward refer. Добавлена опция учетной записи провайдера 'refer_mode', позволяющая обеспечить сквозной проброс REFER наряду с локальным обслуживанием (инициацией вызова в сторону того же самого номерного плана).

  • Route account. Реализована возможность указывать аккаунт провайдера с помощью маски '/mod/…​', поддерживаются {tab:a:*}, {F}, {T}, {B}.

  • CDR disable. Добавлена опция конфигурации, отключающая генерацию CDR событий. Применяется для нужд организации нагрузочных эмуляторов.

  • local_mg_lower_priority. Добавлена конфигурационная опция в микросервисы b2b и mgc, отключающая понижение приоритета локально расположенных медиашлюзов.

  • Исправлена проблема ESG при обработке нескольких подмен плеча подряд.

  • Для нужд создания на базе платформы нагрузочных стендов добавлена возможность совершать вызовы непосредственно на порт IVR сервера, если у него задан конфигурационный параметр default_ivrscriptcode. Сразу запускается указанный сценарий IVR. Сокращается нагрузка на систему за счет исключения цепочки из ESG, B2B, MGC, MG и требуемых им других сервисов.

  • Правила нормализации получили возможность использовать служебный сценарий для назначения разом всех полей: from username, from displayname, to username.

  • RADIUS. Реализована поддержка биллинга по протоколу RADIUS для внешних звонков c PSTN. Учетные записи провайдеров включают биллинг опцией 'opts.use_billing'.

  • В конфигурационные настройки ролей MGC, B2B, IVR добавлен параметр 'local_mg_lower_priority', позволяющий отключить преимущественный фильтр медиагейтов, работающих на этом же сервере - для конфигураций, не требующих резервирования разговоров.

  • SIP-INFO. Реализована отправка DTMF в другое плечо посредством SIP-INFO, если в SDP отсутствует формат Telephone-event/8000.

  • Поддержаны SIP телефоны Flat.

  • Autoprovision. В шаблоны для автопровижена добавлены макросы 'sg.addr' и 'sg.port'.

  • Rec. Для экономии ресурсов запись на MG теперь включается только после установления диалога в случае, если хотя бы в одном из доменов участников включено правило записи.

  • NumbersDomains. Для упрощения настройки многодоменных систем с единым PSTN подключением в мастер домен добавлена коллекция telephony/NumbersDomains, а в масках фильтраов и модификаторах различных правил появилась возможность при маршрутизации ссылаться на эту коллекцию через /nd/…​ и {nd} соответственно.

  • pre_modifier. Добавлена опция правила нормализации 'opts.pre_modifier', позволяющая исполнить правило перед отправкой запроса в биллинг. Также добавлена опция 'substitute_diversion' для учета заголовка Diversion (кейс 8800) и подстановки в качестве номера назначения.

  • Добавлена поддержка масок, задающих диапазон, вида "/dia/1234567+10".

  • Pending. Исправлена проблема в ESG при получении ответа 491 Pending в ответ на referred Invite, теперь вызов повторяется.

  • Diversion Добавлена поддержка SIP-заголовка Diversion. Каждая переадресация добавляет заголовок. Звонок от провайдера добавляет заголовок. Учетные записи провайдера получили настройку для включения режима переводов и переадресаций из PSTN в PSTN с подстановкой в заголовок From номера самого абонента-инициатора с добавлением заголовка Diversion (opts.use_diversion).

  • Параметр API-запроса invitebyivr к коллменеджеру передает в сценарий вторым параметром (startparam(2)) значение свойства 'param' из запроса.

  • Переработана настройка хранилищ для записей. Теперь в правилах записи можно указать код хранилища, а в хранилищах создать элемент файлового хранилища для размещения записей: fs, nfs, s3, а также задать префикс (подпапку). Способ размещения записей остается прежним. По умолчанию место размещения записей не изменилось. Ранее записанные разговоры также доступны к прослушиванию. Таким образом в одной системе можно разные записи хранить в разных местах, на разных разделах и хранилищах по типу или по времени проведения разговора.

  • SpeechAnalytics. Реализован простая аналитика записи разговора: владение временем, количество перебиваний. Включается в правилах записи, попадает в callevents.call_rec_links, ccsevents.connection_set_record_info и при установленном продуктовом слое в коллекцию разговоров callcenter/connections/ArchiveConnections.

  • Скорректирована работа с дескрипторами стримов для более строгого соответствия RFC. Теперь при видео-звонке в IVR видео стрим с портом 0 будет присутствовать во всех ответах и реинвайтах.

  • ссsevents. Добавлено событие connection_failure по вызовам, завершившимся неудачей на этапе маршрутизации.

  • CPD. В алгоритм CPD (детектор автоответчика) наряду с анализом спектра и длины голоса добавлена поддержка шаблонов на основании fingerprint.

  • CPD. Реализовано управление настройками CPD, добавлены инструменты управления шаблонами CPD и тестами CPD (Детектор автоответчиков для исходящих кампаний). Сервис CPD работает в рамках роли mware. В модель данных добавлены классы cpd/Templates, cpd/Tests, cpd/Records. Все переданные на анализ отрезки записи сохраняются в коллекцию cpd/Records.

  • MG. В медиагейте исправлена проблема, при которой холд анхолд в веб-софтфоне мог приводить к отсутствию звука в одну из сторон.

  • Intercom. Реализована поддержка интерком-вызовов из коллменеджера (API команды invite и invitebyivr) без необходимости создавать фичакод типа интерком, правило разрешения, правило маршрутизации.

  • MGC deservice. Уменьшено время между выводом из обслуживания медиашлюза до перезагрузки.

  • Callmanager. В ответ методов invite, invitebyivr, refer, referreplaces, referconf добавлено поле sipcode.

  • Redirectrule. Исправлена ошибка при удалении sipuser когда существует правила переадресации связанные с ним, но имеющие произвольные идентификаторы.

  • Rfc2833. Отправка DTMF в другое плечо микросервисом B2B осуществляется преимущественно по протоколу rfc2833.

  • CTI. Исправлена проблема, в следствие которой в CTI канал не отправлялся cleared_event при отмене переведенного вызова до получения SIP-ответа 18х и 2хх.

Сценарии

  • ExecScript. Компонент запуска сценариев получил возможность выполнять дочерний сценарий в режиме разделения переменных - без передачи состава значений переменных туда и обратно.

  • ExecScript. Расширен перечень передаваемых параметров (до 10 независимо, и еще один - JSON-массивом). Также добавлена возможность передавать значения переменным дочернего сценария через указание в таблице в привязке к их именам.

  • ExecScript. Для вложенных сценариев появилась возможность возвращать значение в точку вызова. Одновременно с этим происходит присвоение используемой в системных сценариев переменной "result".

  • Interaction. В компоненте сценариев "Взаимодействие" добавлен режим ожидания сообщений от конкретного отправителя. Также исправлена функция генерации идентификатора отправителя - было случайное значение, стал идентификатор обработчика сценария.

  • Params. Компоненты "Исходящий вызов", "Двухшаговый перевод" при указании IVR обслуживающего сценария получили возможность задавать неограниченное число параметров, а также прямо с помощью таблицы задавать значения переменным дочернего сценария IVR.

  • Component(). Функция выражений component, позволяющая исполнять в выражении любые стандартные компоненты, получила возможность указывать ключ возвращаемого значения, например поля для выходного значения, обычно сохраняемого в переменную.

  • SBER Salute Speech. Реализованы компоненты ASR и TTS для взаимодействия с системой распознования и синтеза речи от Сбер Салют.

  • Sipheaders(). В функции выражений сценариев IVR добавлена функция sipheaders для доступа к заголовкам запроса или ответа (в привязке к конфигурационному параметру fwd_headers).

  • IVR feature. Вызов IVR через featurecode применяет в качестве номера именно номер фичакода, а не extension (для обеспечения возможности настраивать запись при вызове направления). Последний же остается доступен через функции внутри сценария IVR.

  • ScriptMachine. Оптимизирована производительность сценарной машины. Значительно сокращен объем данных состояния и повышена скорость работы с ним. При падении сценария в лог-журнал не выводится весь сценарий.

  • LDAPS. Компонент сценариев по работе с LDAP получил возможность подключаться по LDAPS с указанием сертификата.

  • Parser. Компонент сценариев Парсер дополнен свойством, позволяющим проводить несколько дополнительных запросов и присваивать результаты разным переменным.

  • JS. Добавлен компонент "Код JS" для исполнения произвольной подпрограммы на языке JS в среде продуктового слоя с передачей аргументов или значений всех переменных на вход и множественного присвоения результата переменным сценария. Выполняется сервисом platform.HolderService продуктового слоя. Накладные расходы на каждый вызов порядка 5 мсек.

  • Operation. Обнаружена и исправлена проблема, приводящая в некоторых случаях к сбою нескольких подряд идущих компонентов Операция.

  • Invocation. Добавлен компонент для выполнения методов в сервисах продуктового слоя.

  • CallerId, CalledId. В перечень функций IVR-сценариев добавлены callerid и calledid, преимущественно возвращающие исходные значения, поступившие в INVITE-запросе от провайдера.

  • HOLD. Добавлен компонент для реализации тестовых сценариев в эмуляторах.

  • Notify. Реализована возможность сохранять уведомления для последующего просмотра в кабинете.

  • Detect DTMF. Добавлена возможность включать и выключать детектор Inband-DTMF.

  • Send DTMF. Добавлена возможность генерировать Inband-DTMF.

  • Play. Для режима синхронного воспроизведения списка файлов добавлена возможность задавать дополнительное время ожидания ввода DTMF после завершения воспроизведения.

  • SSML. Компонент сценариев TTS Sber Salute получил возможность задавать текст в формате SSML.

  • Inband. В компонент 'Ввод DTMF' сценария IVR добавлено управление режимом детекции Inband - использовать, включить, выключить.

  • Inband. New. В компонент 'Генерация DTMF' сценария IVR добавлен режим отправки Inband.

  • Play. В компонент 'Воспроизведение' сценария IVR добавлен режим "Список файлов".

  • KeepUnseen. В компонент сценариев "Получение Email" добавлено свойство "Оставлять непрочитанным" (keepUnseen).

  • В функции выражений сценариев добавлены тривиальные scriptcode() и domain().

  • SBER cloud. Добавлена поддержка работы компонентов распознавания и синтеза речи Sber Salute через облачный сервис.

  • SQL. Исправлена ошибка в работе компонента "SQL-запрос" в сценариях, не позволявшая исполнять модифицирующие запросы.

  • Outgoing. Функция callid() выражений в IVR-сценариях поддержана для исходящих звонков.

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

  • growingRaw. В компонент IVR сценария "Запись" добавлен режим "Потоковая запись" (growingRaw), позволяющий активировать режим оперативного сброса получаемого трафика в файл, имеющий заголовок с указанием заведомо большего количества сэмплов, по завершении заголовок обновляется в соответствии с полученным размером.

  • stopPlayerIdOnVad В компонент IVR сценария "Запись" добавлен параметр "Прерывать фон при обнаружении голоса" (stopPlayerIdOnVad) с указанием слоя фонового воспроизведения.

  • AZURE TTS ASR. Добавлены IVR компоненты синтеза и распознавания речи через облако Microsoft Azure. В настройки домена добавлен параметр azure_cloud.

  • CC. Компонент IVR сценария "Колл-центр" при подготовке параметра преимущественно рассматривает заданные значения как JSON-объекты.

  • LANG. Реализована поддержка языковой модели редактором сценариев. Встроена поддержка ru/en.

  • Background silence. IVR сценарий теперь всегда воспроизводит фоновый белый шум амплитуды 0.001, чтобы в медиастрим постоянно отпралялись пакеты.

Веб-конференции meet

  • Исправлен индикатор отображения звука в режиме MCU.

  • Добавлено отображение уведомления о неподдерживаемом браузере.

  • Отработана ситуация отсутствия звука и видео в некоторых случаях (добавлено пересоздание консьюмера при обнаружении ошибки).

  • Добавлены настройки mcu в конфигурацию сервера.

  • Обновлен образ системы (docker 11, старт сервера при старте контейнера).

  • Модификации для поддержки существующего функционала в декстопном приложении.

  • Возможность открывать ссылки в десктопном приложении, скачать десктопное приложение.

  • изменено поведение десктопного приложения - при запуске подключается по последней ссылке (по которой подключались в последний раз)

  • в клиентском приложении на главную страницу добавлена ссылка - Отключиться от сервера - для десктопного приложения

  • Добавлено. Настройка. Парное переключение устройств ввода/вывода.

  • Добавлено. Действие. Возможность отключать модератора от комнаты.

  • Добавлено. Действие. Возможность отключать модераторам микрофон, камеру и демонстрацию экрана.

  • Добавлено. Действие. Возможность отключать всем участникам микрофон, камеру и демонстрацию экрана.

  • Добавлено. UI. Страница настройки перед подключением к комнате (микрофон, камера, динамики, имя участника).

  • Добавлено. Конфигурация. Возможность включения/отключения mcu (микширование звука на сервере).

  • Состояние (вкл/выкл) устройств (камера, микрофон, динамик), которое было установлено в проверке настроек, теперь сохраняется после подключения к комнате.

  • Исправлено поведение из-за которого могло возникать окно "нажмите ок для продолжения", теперь это окно должно быть реже.

  • Страница входа в комнату. Исправлено отображение "Комната не найдена", в случае если не введен код комнаты.

  • Изменено сохранение последних прочитанных сообщений в чате. Теперь сохранение происходит в браузере.

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

  • Исправлено отображение панели отключения медиа (микрофон, камера, презентация) всем участникам.

  • Добавлена проверка работы turn (перезагрузка turn при ошибке).

  • Изменено отображение тестирование звука на странице выбора устройств.

  • Добавлено. Конфигурация. Сервер теперь может открывать http порт для ускорения взаимодействия при проксировании от era к серверу вкс. Настраивается в конфигурации сервера вкс.

  • Исправлено. Закрытые сети. Частое зависание turnserver (обслуживает подключение из закрытых сетей).

  • Исправлено. UI. Проблема с отображением фонового изображения для камеры (не всегда переключалось на другое изображение, долгая загрузка при включении).

  • Добавлено. Сеть. Обработка ситуации когда один из участников генерирует избыточный трафик (будут изменены настройки участника на лету).

  • Добавлено. UI. Добавлено отображение процесса включения камеры/микрофона/демонстрации экрана (появляется круглый спиннер на кнопке).

  • Исправлено. UI. Теперь нельзя войти в комнату которая не найдена (статус не найдена отображается на этапе экрана с вводом кода комнаты).

  • Исправлено. Настройка. Изменение настроек turn через domain.settings.meet_config не применялись.

  • Добавлено. UI. Добавлено отображение текста о процессе включении микрофона участником.

  • Исправлено. При проблемах в сети отключалось видео участников (отображался серое окно участника) и не восстанавливалось (до перезахода в комнату или перевключения камеры участниками).

  • Исправлено. Падение качества видео участников (при проблемах в сети) без восстановления при пропадании проблем.

  • Добавлено. UI. Отображение даты/времени и продолжительности записи вкс при публикации в чате.

  • Добавлено. UI. Возможность удаления сообщения из чата.

  • Добавлено. UI. Отображение ошибки при использовании старых версий браузера сафари.

  • Исправлено. UI. Исправлена ситуация с серым экраном если используется яндекс браузера в win с включенным виртуальным фоном.

  • Исправлено. Сервер. Исправлена ошибка приводящая к невозможности подключения к комнате, ошибка возникала с малой вероятностью при одновременном подключении к нескольким разным комнатам.

  • Исправлено. UI. Исправлен виртуальны фон в браузере Яндекс в windows.

  • Исправлено. UI. Улучшена проверка не поддерживаемых браузеров для работы в вкс.

  • Исправлено. UI. Исправлено скачивание записи вкс опубликованной в чате (открывается в новом окне).

  • Исправлено. UI. Отключение некоторых функций (микрофон в режиме рации и демонстрации экрана) при подключении к вкс с планшета.

  • Исправлено. Сервер. Исправлена ошибка сохранения аватара пользователя.

  • Добавлено. Сервер. Добавлена возможность установки уровня логирования в конфигурации. При интеграции с эрой применяется "на лету".

  • Исправлено. Сервер. Пользователи комнаты вынесены из класса meet/Rooms в meet/RoomUsers. Т.к. при большом количестве пользователей когда-либо входивших в комнату запросы в бд выполнялись продолжительное время, проблема частично решена через вынос пользователей в отдельный класс.

  • Изменено. Сервер. Добавлено очищение пользователей с ролью гость из участников комнаты в БД, удаление происходит если не было активности участника в комнате более 30 дней.

  • Исправлено. Клиент. Исправлена ошибка - отключение пользователя от комнаты при назначения ему прав модератора.

  • Добавлено. Сервер. Добавлена поддержка подключения к Era по wss.

  • Добавлено. Реализован выбор целевого экземпляра вебсервера платформы для подключения микросервиса meet.

Мониторинг и логирование

  • Events. Обновлен состав событий. Добавлены новые типы, удалены устаревшие, состав событий callevents причёсан.

  • CTI GRPC. Реализована отправка CTI событий через GRPC для поддержки внешней записи на ЦРТ SmartLogger.

  • SNMP-MIB. Системе выдан IANA enterprise number: 60663.

  • SNMP-traps. Значительно расширен состав событий, отправляемых в SNMP трапы. Настройка фильтров в параметрах мастер-домена.

  • Ws-Health-Check. В API добавлен публичный endpoint для проверки состояния текущего веб-сервера.

  • Websock_debug_level. Добавлена конфигурационная опция микросервиса WS для включения/выключения привязки режима логирования вебсокет-подключений к общему режиму логирования ноды.

  • WssReg. Реализован сервис мониторинга экземпляров SG и очистки регистраций (ws, wss, tls) при их потере для обеспечения возможности оперативной перерегистрации через другой экземпляр при наличии ограничения на количество регистраций (в дополнение к режиму проверки доступности через отправку OPTIONS).

  • Logs. Стала доступна сборка логов по внутри-доменным процессам (сценариям и продуктовым микросервисам) теперь доступна в рабочих доменах и из приложения администратора.

  • Logstore. Исправлена ошибка, приводившая к сборке журнала erlang.log с ноды logstore вне зависимости от того, с какой ноды запрошен.

  • Logstore. Исправлена ошибка, приводившая к неудалению архивов с собранными лог-журналами по запросу из приложения.

Продуктовый слой

v/1.8.1 (2024-07-24)

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

  • Исправлена работа компонента сценариев IVR "Воспроизведение" в режиме потокового файла - опцию невозможно было включить.

  • В состояние системы выведена информация о перезапусках продуктовых микросервисов.

  • Исправлена работа компонента сценариев "Запуск процесса" в части проверки разрешений в файле permissions.json. Добавлена возможность исполнять bash сценарии, файл permissions.json перемещен в каталог :SYNC/domains/:MASTERDOMAIN/cmd/

v/1.8.3 (2024-07-31)

  • Обеспечена эквивалентность обращений от имени пользователей без роли администратора к REST API статических коллекций доменного центра через http и websocket. Налажена работа масок. Для пользователей без роли администратора из выдачи скрыты поля с паролями.

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

  • Исправлена проблема сохранения писем Email, реальная дата отправки которых находится в прошлом месяце или ранее относительно времени получения.

  • Компонент сценария IVR Запись стал устанавливать топологию для исключения записи воспроизводимого параллельно фона, а также в режиме потоковой записи исключен начальный фрагмент тишины, возникающий до прерывания голосом фонового воспроизведения.

  • В скрипты инсталлятора добавлен параметр --sshkey для возможности указания ssh ключа. Исправлена ошибка отсутствия прав при генерации строки создания контейнера.

v/1.8.4 (2024-08-02)

  • WARNING. При постоении INVITE для второй стороны применен фильтр по кодекам, задаваемый в конфигурационной настройке 'payloads_audio_offer'. Таким образом, если провайдер преимущественно предлагает G729, появляется возможность исключить его, используя этот параметр. Однако широкополосный G722 и другие, применяемые аппаратами в локальной сети, теперь, чтобы быть использованными в коммуникации между двумя поддерживающими их устройствами, требуют явного указания в этом параметре конфигурации SIP-ролей.

  • Исправлена внесенная в 1.8.3 проблема при обработке websocket rest запросов от пользователей.

v/1.8.5 (2024-08-09)

  • Исправлена проблема кэширования воспроизводимых файлов в медиашлюзе. Теперь перед переиспользованием файла из кеша проверяется его дата модификации и размер.

  • Исправлена проблема медиашлюза, не позволявшая изменять буфер потоковой записи - всегда применялся буфер 250 мс.

  • Исправлена проблема компонента сценариев IVR Запись в режиме потоковой записи, блокирующего завершение сценария при отбое от абонента.

v/1.8.8 (2024-09-17)

Платформа

  • System state. Исправлена проверка сертификатов, ранее поддерживались только ключи сертификатов с шифрованием RSA, теперь допустим любой вид шифрования.

  • Исправлена ошибка в im-адаптере telegram-канала. Также поддержаны ответы и пересылаемые сообщения.

  • В сервис управления лидерством active-passive ролей добавлена опция ожидания фолловером нескольких неудачных пингов лидера прежде, чем принудительно отсоединяться от него с дальнейшим запуском failover-лидера. Это полезно для случая, где периодически на короткое время до 2-3 секунд пропадает пинг между серверами с сохранением подключений, с целью исключения точечных переездов лидера, а также спровоцированного разбиения точки целостности на острова с последующим вынужденным перезапуском для восстановления.

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

  • Исправлена утечка памяти, способная возникнуть в сервисе модели данных при настройке прав доступа для классов - незначительный прирост на каждом изменении метаданных такого класса.

Телефония

  • Устранена возможная проблема таймаута в обработке SIP-запросов из-за узкого горла в процессе мониторинга.

  • Заблокирован запуск сценария Post-Call-Survey для сценариев IVR.

  • Ошибка связанная с отсутствием файла при воспроизведении в IVR ранее влекла вывод медиашлюза из обслуживания. Теперь она внесена в исключения.

  • Исправлена ошибка при запуске вложенного сценария IVR из ветки пост-обработки.

  • Исправлена проблема медиашлюзов, связанная со скачками номеров пакетов в исходящем rtp-потоке при смене входящего трафика с CN на аудио или с аудио на CN.

  • Изменена обработка медиашлюзом ошибки аллокации udp-порта в ситуации, когда именно сетевой интерфейс оказывается недоступным. Теперь медиашлюз не продолжает в этом случае перебирать другие порты, не помечает их временно недоступными, сообщает контроллеру иной код ошибки.

  • Улучшена работа VAD-детектора в медиашлюзе.

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

  • Обработана ситуация ошибочного поведения внешнего юзер-агента, когда в ответе 100 Trying он не присылает полный список Via из запроса.

  • Исправлена проблема при подготовке CTI событий, влекущая отсутствие события cleared по переведенному вызову, одновременно получившему отказ инициатора и ответ вызываемого абонента.

Сценарии

  • Исправлена проблема компонента Уведомление, в связи с которой отсутствие подключения пользователя влекло переход по ветке ошибки.

  • В редакторе сценариев добавлена возможность копирования компонентов между сценариями в рамках одного браузера.

  • В редакторе сценариев добавлена возможность поиска по значениям свойств компонентов сценария.

  • Исправлена ошибка в работе компонентов синтеза речи в режиме воспроизведением потока данных.

  • В компонентах IVR с VAD-детектором конца речи изменен формат возможного значения на интервал тишины в секундах. Разрешено устанавливать дробные значения, например '1.4'.

  • В компоненте воспроизведения потокового файла появилась возможность устанавливать таймаут на появление новых данных в мс.

  • Исправлена ошибка медиашлюза, связанная с зависанием компонента воспроизведения потокового файла, в котором кроме заголовка нет ни одной порции данных.

Веб-конференции meet

  • Устранена проблема в сервере веб-конференций, в результате которой не возможно подключиться к комнате, если она была создана через Администратор ВКС.

  • Исправлена ошибка в сервере веб-конференций, приводящая в некоторых случаях к зависаниям видео-потока.

v/1.8.9 (2024-09-28)

  • Исправлено содержание вновь созданных сценариев - язык и содержание базовых компонентов. Проблема зафиксирована в IVR - отсутствовала привычная пауза в компоненте ответа 200 OK, снижающая вероятность асинхронных конфликтов при запаздывании ACK.

  • Добавлена базовая поддержка мессенджера vk.

v/1.8.10 (2024-10-09)

  • Восстановлена работоспособность подключения к провайдерам по TLS с использованием SRTP. В учетную запись провайдера добавлено поле certificate_pem (тело или макро-путь к файлу). Подробнее.

  • Опция классов 'ext.dirty_write_enabled' перенесена в 'opts.dirty_write_enabled'.

  • Скорректировано поведение при переключение на сценарий PCS (Post Call Survey), добавлена пауза перед отправкой BYE, чтобы UA успел обработать отправленный REFER.

  • Исправлена проблема компонента потокового воспроизведения из растущего файла - добавление порции данных не кратной 4000 сэмплам приводил к прекращению ожидания новых данных.

  • Компонент сценариев "Вызов сервиса" при множественном задании параметров в виде ключ-значение теперь делает попытку преобразовать строковое значение в JSON структуру.

  • Исправлена проблема сервиса управления лидерством, применяемого для микросервисов продуктового слоя. При распадании сайта на части и восстановлении связи два активных экземпляра не могут договориться, и в итоге не остается никого. Проблема появилась в версии 1.8.8.

  • Исправлена проблема пограничного фильтра, исключавшая возможность настройки белого списка для конкретного значения user-agent (либо не пропускает целевого, либо пропускает всех). Теперь проверка правил по адресам отправителей до парсинга происходит не только на основе правил, где в фильтрах установлена исключительно маска ip адресов, но и по другим правилам, разрешая их пропуск на парсинг и в обработку, где уже проверяются остальные фильтры. Однако следует пользоваться опцией block_response_malware.

v/1.8.11 (2024-10-16)

  • Скорректирован алгоритм обработки REST-запросов к динамическим коллекциям через websocket-подключения. При недоступности микросервиса DMS или отказе с ошибкой 5хх в течение минуты делается несколько попыток повторить запрос, чтобы по возможности избежать перезапуска продуктовых микросервисов. Управляется параметром конфигурации микросервиса ws 'rest_reattempts_sec'.

  • Оптимизирована выдача статических ресурсов вебсервера (с целью ускорения загрузки приложений и справки). Кеш для определенных видов ресурсов, преимущественно большого размера и со сменяемыми при обновлениях случайными именами, выставляется на 30 - 360 дней.

  • Изменено поведение сервиса управления лидерством при обнаружении конфликтных ситуаций с двумя активными экземплярами. Проявляется после разделения сайта на острова. Для продуктовых микросервисов следует остановка фолловера, для микросервисов коммуникационного слоя - перезапуск ноды фолловера.

  • Управление пингами, нацеленными на разрыв замирающих TCP-соединений между нодами, вынесено в конфигурацию в раздел глобальных параметров 'pang_to_disconnect_sec'.

  • Параметром 'xsrv_perfmon_enabled' мастер-домена активируется режим проверки пинга между серверами с логированием превышения 10 мс, а также таймера и его превышения 10 мс.

Продуктовый слой - История изменений продуктового слоя: 2024_10_16_PL_history.txt

v/1.8.12 (…​)

  • Исправлена ошибка в SIP-ALG при отправке сообщения INVITE, содержащего одновременно SDP и заголовок "Authorization".

  • Исправлена ошибка сборщика логов, возникающая при выборе файлов сценариев в доменах.

  • Исправлена ошибка логирования, приводившая в некоторых случаях к кратной записи в лог журналы с нарастанием со временем.

  • При создании баз данных в Postgres добавлен параметр STANDARD_CONFORMING_STRINGS=ON.

  • В SIP-B2BUA исправлена проблема в обработке запросов UPDATE, не содержащих без SDP - не отправлялся ответ.

  • Исправлена ошибка, приводившая к порче Authentication-Tag при формировании пакетов SRTP после обработки re-INVITE.

  • Налажена работа PCS в кросс-доменных звонках. Вызов номера PCS происходит в домене, инициировавшим отбой.

  • Исправлена ошибка - отсутствие ответа 200 в ответ на SIP INFO при отправке в другое плечо в формате RFC 2833.