Call 26.900.0–26.950.0: новое ядро звонков, REST чатов и мобильное меню
Ломающее обновление
Удалены или изменены публичные API — прикладной код может перестать работать.
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: новые методы чатов, управляемое меню и приложения с собственными чатами. REST 26.1100.0 уже разобран отдельно.
Новое
Узнайте, участвовал ли сотрудник во встрече
В call 26.925.0 появился публичный MeetingCallParticipationProvider::getForMeetings(). Передайте чаты и временные окна встреч; ответ содержит participated, notParticipated или unknown для каждого ключа:
use Bitrix\Call\Public\Provider\MeetingCallParticipationProvider;
use Bitrix\Main\Loader;
Loader::requireModule('call');
$from = new DateTimeImmutable('2026-11-02 10:00:00+03:00');
$to = $from->modify('+1 hour');
$statuses = (new MeetingCallParticipationProvider())->getForMeetings(
['planning' => ['chatId' => $chatId, 'windowFrom' => $from, 'windowTo' => $to]],
$userId,
$from,
$to,
);
Провайдер обрабатывает до 500 валидных встреч, остальные остаются unknown. Если найдено больше 2000 звонков, unknown вернётся для всех. «Не участвовал» требует завершённых звонков, записи участника без первого входа и однозначного соответствия звонка встрече. Превращать unknown в прогул нельзя.
В call 26.950.0 появились кнопка «Звонок Синк» и список активных звонков Синк. Нужен syncconnector; опции call/sync_call_enabled и call/sync_active_calls_enabled по умолчанию выключены.
Скачивайте файлы и связывайте чаты с отделами
В im 26.1300.0 im.v2.File.directDownload отдаёт тело файла внешнему клиенту без cookie портала; типы — full и preview, REST batch запрещён. im.v2.Chat.Structure.link связывает чат максимум с десятью отделами за запрос и требует права LinkStructureNode.
im.v2.Chat.Message.unread отмечает чат непрочитанным с выбранного сообщения, а Folder.getSources/updateSources управляют источниками папки. В immobile 26.1400.0 появились интерфейсы пересылки нескольким получателям, карточек контактов и перехода по дате. Папка «Все» зависит от флага im; карточки контактов — от выключенной по умолчанию опции contact_card_available.
Назначайте мобильное меню сотрудникам
Mobile 26.1300.0 включает управляемые пресеты нижней панели по умолчанию. Администратор и руководители отделов создают до 20 своих пресетов и назначают их сотрудникам или отделам; общий пресет портала задаёт администратор. QR-вход на другом устройстве выключен по умолчанию, одноразовая ссылка живёт 60 секунд, максимум 300.
В intranetmobile 26.800.0 администратор нового или тестового портала выбирает сценарий работы в анкете квалификации; сохранять её ответы теперь может только администратор. Stafftrackmobile 26.500.0 передаёт сигнал присутствия в офисе и добавляет выбор сотрудников на карте за флагом. Timemanmobile 26.500.0 поддерживает отправку и оценку рабочих отчётов по старой схеме и новый экран начала дня.
Vibecodeconnector 26.900.0 добавляет прямые ссылки /vibecode/app/{id}, превью приложений в чатах, избранное и встройки через скрытые методы REST v3. Собственные чаты приложений синхронизируются с доступом к приложению; флаги этих чатов по умолчанию выключены.
Что сломается
Переподключите интерфейс звонков (26.900.0)
Виджеты call.component.*, перечисленные в реестре удалений, переехали в call.widget.*, их пространство имён — BX.Call.Widget. Старые компоненты списков участников и конференций теперь подключаются как call.legacy.component.*. Проверьте копии шаблонов call.ai и call.conference.edit. Вместо call.vue загружайте call.application.call; из call.core удалены IncomingNotificationContent, NotificationConferenceContent и PromoService.
Settings::isVueEnabled() заменён на isNewCoreEnabled(), опция call_vue_enabled — на call_new_core_enabled со значением 'Y'. CallFactory::searchActiveByUuid() теперь принимает только UUID: из старого вызова уберите первый аргумент-провайдер. Для изменения состояния звонка используйте updateState() и commitFinish(): save() существующего звонка больше не сохраняет STATE и END_DATE.
Учтите отказы и новые ответы
Гости по умолчанию больше не начинают звонки (call 26.900.0). Это включает опция guest_outgoing_call_enabled=Y, но звонить и приглашать можно только в свой чат. Для звонка 1-1 также нужна новая схема plain-звонков. call.Call.invite принимает POST и проверяет Origin. Исправлена подмена трека в call.Track.get/drop, а call.user.update проверяет членство в чате.
В im 26.1300.0 пересылка через im.v2.Chat.Message.send с недоступным forwardIds завершается NOT_FOUND; проверяйте также failureMap для частичных отказов. im.disk.file.commit без чтения файла отвечает ACCESS_ERROR и HTTP 403. Наследникам Chat::sendPushUpdateMessage() нужен новый параметр bool $compositionUpdated; методы RecentConfigManager, принимающие тип чата, теперь требуют enum Chat\Type.
DateNavigationService::createForClientOffset() заменён на createForClient($chat, $timezoneId, $offset). Удалён Features::isTaskChatAutoUnmuteAvailable(). В mobile удалён ThemeProvider::isSvgTheme(), а Menu\AhaMoment::getMenuAhaMoment() требует раздел MyCompanyProvider и флаг canInvite.
Mobile 26.1300.0 также закрывает изменение чужого дела через старый mobile.crm.activity.edit/ajax.php: право обновления проверяется по самому делу, вместо переданных клиентом владельца и его типа. В mobile.webdav.file.list десериализация теперь запрещает создание PHP-объектов.
Замените сброс мобильного меню
Mobile 26.1300.0 больше не регистрирует общий тег mobile_custom_menu. После изменения своих пунктов вызывайте (new MobileMenuCacheInvalidator())->clearUser($userId) из Bitrix\Mobile\Tab\Preset\Service; для массива есть clearUsers(). Удалены JN-расширения layout/ui/checkbox и layout/ui/file/icon. У GuestCheckout обязателен язык портала, в конструктор CommonUserDto вставлен isSystemUser: проверьте позиционные вызовы.
Deprecated
В mobile 26.1300.0 Mobile\Config\Feature и FeatureFlag уступают место Main\Config\Feature и Main\Config\Feature\AbstractFlag. У Mobile\Dto\Dto исправлена опечатка в @deprecated; рекомендация прежняя: обычные readonly-классы.
Устаревшие и удалённые API в этой версии
| Символ | Статус | Чем заменять |
|---|---|---|
BX.Call.PromoService
|
Удалено | — |
BX.Call.NotificationConferenceContent
|
Удалено | — |
Bitrix\Mobile\Config\Feature
|
Deprecated |
Bitrix\Main\Config\Feature
|
Bitrix\Mobile\Config\FeatureFlag
|
Deprecated |
Bitrix\Main\Config\Feature\AbstractFlag
|
Bitrix\Mobile\Dto\Dto
|
Deprecated |
readonly PHP-классы
|
Bitrix\Call\Settings::isVueEnabled()
|
Удалено |
Bitrix\Call\Settings::isNewCoreEnabled()
|
Bitrix\Im\V2\Message\DateNavigation\DateNavigationService::createForClientOffset()
|
Удалено |
Bitrix\Im\V2\Message\DateNavigation\DateNavigationService::createForClient()
|
Bitrix\Im\V2\Application\Features::isTaskChatAutoUnmuteAvailable()
|
Удалено | — |
Bitrix\Mobile\Provider\ThemeProvider::isSvgTheme()
|
Удалено | — |
Bitrix\IntranetMobile\Invitation\InvitationAhaMoment::getFirstInviteAhaMoment()
|
Удалено | — |
Bitrix\IntranetMobile\Invitation\InvitationAhaMoment::FIRST_INVITE_TOURIST_EVENT
|
Удалено | — |
call.component.active-call
|
Удалено |
call.widget.active-call
|
call.component.active-call-list
|
Удалено |
call.widget.active-call-list
|
call.component.call-button
|
Удалено |
call.widget.call-button
|
call.component.call-invite
|
Удалено |
call.widget.call-invite
|
call.component.call-message
|
Удалено |
call.widget.call-message
|
call.component.compact-active-call
|
Удалено |
call.widget.compact-active-call
|
call.component.compact-active-call-list
|
Удалено |
call.widget.compact-active-call-list
|
call.component.call-background
|
Удалено |
call.legacy.component.call-background
|
call.component.v2.call-background
|
Удалено |
call.legacy.component.v2.call-background
|
call.component.call-feedback
|
Удалено |
call.legacy.component.call-feedback
|
call.component.conference.conference-create
|
Удалено |
call.legacy.component.conference.conference-create
|
call.component.conference.conference-edit
|
Удалено |
call.legacy.component.conference.conference-edit
|
call.component.conference.conference-public
|
Удалено |
call.legacy.component.conference.conference-public
|
call.component.elements
|
Удалено |
call.legacy.component.elements
|
call.component.user-list
|
Удалено |
call.legacy.component.user-list
|
call.component.user-list-popup
|
Удалено |
call.legacy.component.user-list-popup
|
call.component.video-quality-range
|
Удалено |
call.legacy.component.video-quality-range
|
call.vue
|
Удалено |
call.application.call
|
BX.Call.IncomingNotificationContent
|
Удалено | — |
layout/ui/checkbox::CheckBox
|
Удалено | — |
layout/ui/file/icon::FileIcon
|
Удалено | — |
layout/ui/file/icon::MediaType
|
Удалено | — |