call 26.1100.0 Ломающее

Call 26.1000.0–26.1100.0: реакции, история звонков и замена записей

7 мин чтения Устаревших API: 16
Узнавайте о ломающих изменениях Битрикса раньше, чем они доедут до прода: свежие разборы — в канале @bxmax_updates

Ломающее обновление

Удалены или изменены публичные API — прикладной код может перестать работать.

В звонках Битрикс24 за две версии появились реакции, размытие фона в браузере, индикатор качества связи и история звонков в Sync, а Follow-up научился повторять анализ и заменять запись. Тем, кто дорабатывал звонки, придётся поработать: удалены прежние Vue-расширения интерфейса звонка, два PHP-метода и контракт фильтра журнала. И проверьте гостевые звонки, потому что опция guest_outgoing_call_enabled больше ничего не запрещает.

Новое

Реакции, фон и качество связи

В 26.1000.0 участники звонка могут отправлять анимированные реакции, отметка видна у участника, а шесть быстрых реакций подстраиваются под историю использования. Отправку включает флаг ReactionsFlag или персональная настройка call_reactions_enabled, входящие реакции видны и без флага. Для своего интерфейса call.component.reactions экспортирует ReactionsService и ReactionsPicker, а AJAX-действия контроллера Reaction отдают быстрый список, аналитику и подсказку (через REST они недоступны).

Размытие и замена фона в браузере требуют WebBackgroundFlag, Chromium с WebGL2 и обработкой кадров, а ещё устройство должно пройти проверку производительности. Сервис — backgroundBlurService из call.lib.background-blur. Галерея call.Desktop.Background.getWeb отдаёт гостям конференции и анонимам поставляемые картинки, а темы портала — пользователям intranet и extranet.

Индикатор QoS показывает качество соединения и причину ухудшения. Его включает QosFlag или настройка call_qos_enabled, мобильному клиенту дополнительно нужен MobileQosFlag. После тайм-аута ответа медиатракт теперь восстанавливается.

История звонков в Sync

В 26.1100.0 у страницы /sync/calls/ есть поиск по участникам, фильтры входящих, исходящих и пропущенных, отметки Follow-up и подгрузка списка. Страница работает при Settings::isSyncPresetEnabled(), иначе пользователя отправит на /sync/. Строки пока не кликабельны. У сотрудника, который ушёл из чата, запись может остаться без участников.

Встроить список к себе можно через расширение call.application.sync-calls-page:

        BX.Runtime.loadExtension('call.application.sync-calls-page').then(({ SyncCallsPage }) => {
    const page = SyncCallsPage.mount(document.getElementById('calls'), { pageTitle: 'Звонки' });
    // page.unmount() убирает приложение
});

    

Повторный mount() в тот же контейнер заменяет уже смонтированное приложение. Для своей сборки есть SyncCallsPage.createApp().

На PHP Bitrix\Call\Service\FollowUpReader::listByChat() отдаёт завершённые звонки чата, в том числе без AI-результата, с курсором (startDate, id). Bitrix\Call\Public\Service\SyncChatService::createChat() создаёт чат и возвращает Result с chat, chatId и dialogId. Права пользователя оба сервиса не проверяют, это работа вызывающего кода.

Флаг SyncPrimaryCallFlag (по умолчанию выключен) переводит главную кнопку звонка в групповом чате на модуль syncconnector, без него флаг не работает. В личных чатах звонит по-прежнему call.

Follow-up без потерянных записей

С 26.1000.0 Follow-up восстанавливает анализ, который отключился после ошибки, и дозапрашивает у медиасервиса недостающие файлы. Проверка идёт раз в час, не больше 12 попыток и 12 часов после конца звонка. Если запись удалили намеренно, повтора и новых файлов звонка не будет, пока не появится новая запись. call.Call.isAutoStartRecordingAvailableInChat проверяет, можно ли включить автозапись: права на чат, настройки AI и число реальных участников.

В 26.1100.0 медиасервис может вызвать call.CallController.restartFollowUp с типами анализа, onlyFailed, force, purge (удаляет текстовые результаты) и источником stored или delivery. Это служебный callback для операторов, а не метод для интеграций. При замене записи Диск сохраняет ссылку и добавляет файлу новую версию. Пустая повторная транскрипция не затирает прежнюю, а итоговое сообщение не дублируется.

Что сломается

Удалённые PHP-методы

GuestCallPolicy::canStartCall() удалён в 26.1000.0. Остались проверки с контекстом canStartCallInChat() и canStartCallInEntity(), но общего запрета, который давал старый метод, они не заменяют.

TrackService::doNeedDownloadTrack() тоже удалён, условие собирается из двух методов:

        use Bitrix\Call\Track\TrackService;

$service = TrackService::getInstance();
$needDownload = !$service->isDownloaded($track) && $service->hasDownloadSource($track);

    

Гостевые исходящие звонки

С 26.1000.0 опция guest_outgoing_call_enabled не запрещает гостям исходящие звонки, а Settings::isGuestOutgoingCallEnabled() всегда возвращает true. Гость по-прежнему звонит только участникам своего чата. Если вы закрывали гостям звонки этой опцией, проверьте права через GuestCallPolicy.

Старый интерфейс звонка

В 26.1100.0 удалены расширения call.application.call, call.component.view.call, call.component.view.conference, call.component.view.picture-in-picture, call.lib.media-registry и блоки прежнего Vue-интерфейса call.component.block.* и call.component.ui.*. Пропали экспорты MediaStreamRegistry из call.core и CallReactionsFeed из call.component.reactions. В call.store остался только useCallIncomingStore, а useCallStore, useUsersStore, useMediaStore, useUiStore и useRecordingStore удалены. Штатный интерфейс теперь подключает LegacyCallViewAdapter из call.view. Свой код, собранный на удалённых расширениях, придётся переписать.

Журнал звонков и REST

  • CallLogService::buildQueryFilter() возвращает ?JournalQueryFilter, а не массив ORM-фильтра. Условия накладываются через applyTo(Query $query), null значит «совпадений нет», запрос можно не выполнять.
  • AJAX call.CallLog.list на неизвестный статус или неверный тип фильтра отвечает INVALID_FILTER_VALUE, PHP-сервис бросает InvalidFilterValueException. Для стабильной пагинации передавайте lastStatusTime вместе с lastId.
  • REST call.channel.public.list требует членства в CALL_CHAT_ID, иначе NO_ACCESS. В USERS можно передать только участников чата.
  • Собственный TURN с неверным адресом или пустыми реквизитами теперь считается выключенным, и клиент уходит на стандартный. Адрес — hostname или IP с необязательным портом, без префикса turn: или stun:.

Deprecated

Settings::isGuestOutgoingCallEnabled() устарел в 26.1000.0. В 26.1100.0 JS-класс Call из call_api.js получил @deprecated: обычные звонки исполняет CallLegacy из call-api-legacy.js, но Call пока на месте.

БД

В 26.1000.0 b_call_session получила RECORD_DESTROYED CHAR(1) со значением N по умолчанию. Прежние включённые опции переехали в feature flags без перезаписи уже заданных значений, посайтовые настройки реакций в перенос не попали.

В 26.1100.0 появились b_call_userlog.DIRECTION VARCHAR(16) и b_call_userlog_index.USER_ID INT. Индексы журнала (DIRECTION, USER_ID, STATUS_TIME, ID) и (STATUS, USER_ID, STATUS_TIME, ID) заменили (USER_ID, STATUS), поисковый индекс получил (USER_ID, USERLOG_ID), b_call_user — (USER_ID, CALL_ID). Старые строки дозаполняются в фоне, и пока заполнение идёт, журнал читается корректно.

Мелочи и находки

  • Push о пропущенном групповом звонке с 26.1000.0 открывает чат. В 26.1100.0 пересчёт и публикация счётчика объединены.
  • Из CLI доставка результатов и очистка временных файлов выполняются сразу. Ошибки сохранения записи и привязки к Диску теперь возвращаются вызывающему коду, расширение файла определяется по MIME.
  • Кнопка продолжения Follow-up проверяет доступ к звонку. В 26.1100.0 исправлена ошибочная привязка бота к обычному пользователю, учётная запись при этом не удаляется.
  • Браузер отличает системное отключение микрофона от отсутствия звука. call.lib.media-log экспортирует MediaLog для диагностики, идентификаторы устройств в нём хешируются. В годовых итогах call.parsed_calls считает звонки участника с AI-обзором OVERVIEW.
  • Перечень сторонних библиотек и лицензий появился в 26.1000.0, в 26.1100.0 он подключён к /bitrix/admin/copyright.php.

Устаревшие и удалённые API в этой версии

Символ Статус Чем заменять
Bitrix\Call\Settings::isGuestOutgoingCallEnabled() Deprecated —
Call (call.core/call_api.js) Deprecated CallLegacy (call.core/call-api-legacy.js)
Bitrix\Call\Service\GuestCallPolicy::canStartCall() Удалено —
Bitrix\Call\Track\TrackService::doNeedDownloadTrack() Удалено !Bitrix\Call\Track\TrackService::isDownloaded($track) && Bitrix\Call\Track\TrackService::hasDownloadSource($track)
call.application.call Удалено —
call.component.view.call Удалено —
call.component.view.conference Удалено —
call.component.view.picture-in-picture Удалено —
call.lib.media-registry Удалено —
call.core: MediaStreamRegistry Удалено —
call.component.reactions: CallReactionsFeed Удалено —
call.store: useCallStore Удалено —
call.store: useUsersStore Удалено —
call.store: useMediaStore Удалено —
call.store: useUiStore Удалено —
call.store: useRecordingStore Удалено —

Новая версия вышла — разбор уже в Telegram

В канале @bxmax_updates публикуем каждый свежий разбор: что сломается, что устарело и что появилось в API. Узнаете до того, как обновите прод.

Подписаться

Читайте дальше

call 26.975.0 Рутинное Свежее

Call 26.975.0: исправлено приглашение в звонок из iOS-приложения

Call 26.975.0 исправляет приглашение участников в звонок из мобильного приложения на iOS, публичный API модуля не менялся. Приглашение блокировал фильтр `Bitrix\Call\Controller\ActionFilter\SameOrigin` из 26.900.0 ([разбор](/bitrix-updates/call/call-26-950-0)), потому что iOS-клиент шлёт Origin голы…

1 мин
call 26.950.0 Ломающее Свежее

Call 26.900.0–26.950.0: новое ядро звонков, REST чатов и мобильное меню

Call 26.900.0, 26.925.0 и 26.950.0 меняют подключение интерфейса звонков и добавляют проверку участия во встречах. В том же пакете идут im 26.1300.0, immobile 26.1400.0, mobile 26.1300.0, intranetmobile 26.800.0, stafftrackmobile 26.500.0, timemanmobile 26.500.0 и vibecodeconnector 26.900.0: новые м…

5 мин
call 26.800.0 Безопасность

Call 26.800.0 + callmobile 26.800.0: гость больше не попадёт в чужой чат через конференцию, у CallAIError новые константы

call 26.800.0 и callmobile 26.800.0 пришли одним пакетом с [im 26.1100.0](/bitrix-updates/im/im-26-1100-0), [immobile 26.1200.0](/bitrix-updates/immobile/immobile-26-1200-0) и [intranet 26.1500.0](/bitrix-updates/intranet/intranet-26-1700-0), у них свои разборы. В call закрыли несколько дыр в гостев…

3 мин
timemanmobile 26.600.0 Заметное Свежее

Timemanmobile 26.550.0–26.600.0: отдельная карточка отчёта и диагностика начала дня

В timemanmobile 26.550.0 и 26.600.0 рабочий отчёт открывается в приложении отдельной карточкой, а не страницей портала. Отчёт, отправленный после полуночи, больше не считает отметки за чужой день. А если форма начала дня не показалась, теперь видно почему: причину пишет диагностический журнал.

4 мин
Мы используем файлы cookie для улучшения работы сайта. Продолжая использовать сайт, вы соглашаетесь с нашей политикой конфиденциальности.
AI Домовой

AI Домовой История

на связи

пишет…

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

Нет истории чатов
AI Домовой

Нужна авторизация

Войдите, чтобы задавать вопросы AI Домовому.

Войти