pull · Push and Pull 25.400.0 Заметное

pull 25.400.0: массовое удаление каналов и эмодзи, которые ломали очередь пушей

3 мин чтения

Небольшой релиз с двумя очень прикладными вещами: bulk-удаление каналов и push-токенов пачкой и кодирование эмодзи в очереди пушей. Ломающих изменений нет — единственная правка сигнатуры совместима со старыми вызовами.

Удаление каналов пачкой

Появились два публичных метода:

        \CPullChannel::DeleteByUsers(array $userIds, string $channelType = self::TYPE_PRIVATE): void;
\Bitrix\Pull\Model\PushTable::deleteByUsers(array $userIds): void;

    

Оба чистят b_pull_channel и b_pull_push чанками по 500 id, USER_ID = 0 пропускается, статический кэш CPullChannel сбрасывается. PushTable::deleteByUsers пишет прямой DELETE и не поднимает ORM-события удаления — если вы вешали хендлеры на удаление push-токенов, они здесь не сработают.

Сценарий очевиден: увольнение отдела, чистка неактивных, миграция портала. Раньше это был цикл с удалением по одному пользователю — на нескольких тысячах записей заметно.

Важная деталь, прямо прописанная комментарием в коде: уведомление клиентам нужно отправлять до вызова, а не после. После удаления канала слать пуш уже некуда — соединение, которому вы хотели сказать «переподключись», больше не адресуемо.

Порядок в вашем коде должен быть такой: сначала рассылка события клиентам (разлогин, переподключение — что уместно сценарию), затем DeleteByUsers(). Перепутаете — часть клиентов останется висеть на мёртвом канале до собственного таймаута.

Эмодзи в очереди пушей

В CPushManager поля MESSAGE, PARAMS и ADVANCED_PARAMS теперь прогоняются через Emoji::encode() при вставке в b_pull_push_queue и через Emoji::decode() при чтении агентом. Комментарий в коде объясняет причину: таблица может быть в utf8mb3.

Это старая боль MySQL: utf8 в его исторической версии — трёхбайтовый, а эмодзи требует четырёх. Сообщение со смайлом в такой таблице либо обрезается на первом эмодзи, либо валит INSERT ошибкой. Порталы, поднятые давно и не переведённые на utf8mb4, ловили ровно это — пуш с эмодзи не доезжал. Теперь символ хранится в закодированном виде и разворачивается при отправке.

Там же: проверка VoIP переписана с $message["ADVANCED_PARAMS"]["isVoip"] на !empty(...) — чтобы отсутствующий ключ не давал notice.

Сигнатуры

CPullChannel::getMany(array $userIds, ?string $channelType = self::TYPE_PRIVATE) — второй параметр стал nullable. Старые вызовы работают как раньше.

Что делать

  • Замените свои циклы удаления каналов на DeleteByUsers — но не забудьте про порядок: сначала уведомление, потом удаление.
  • Если у вас есть обработчики ORM-событий на PushTable — учтите, что bulk-метод их не вызывает.
  • Если портал на utf8mb3 — обновление лечит пропадающие пуши с эмодзи, но перевести базу на utf8mb4 всё равно стоит.

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

pull 26.100.0 Ломающее Свежее

Pull 26.0.0 и 26.100.0: sendBadges() удалён, protobuf.js в браузере стал minimal

Pull приехал двумя версиями подряд: 26.0.0 (сборка от 22 июля) и 26.100.0 (от 7 августа). Первая удалила `CPushManager::sendBadges()` и превратила `MobileCounter::send()` в заглушку, вторая заменила встроенный protobuf.js 2018 года на 7.6.5 в урезанной minimal-сборке. Читать стоит тем, кто сам шлёт...

2 мин
voximplant 26.700.0 Ломающее Свежее

Voximplant 26.700.0: оценку качества связи убрали, у notifyAdmins() появился тип

Модуль телефонии voximplant 26.700.0 вышел в коробочный Битрикс24 11 сентября 2026 года, по данным официального канала «Битрикс24 changelog». Из карточки звонка убрали оценку качества связи вместе с её JS-событиями, у `Im::notifyAdmins()` появился тип параметра, а публичные константы `SipStatusInfor...

3 мин
ui 26.687.0 Рутинное Свежее

UI 26.687.0: триал VibePlus в облаке и дизайн чипа TintedBitrixGpt

`Bitrix\UI\Controller\InfoHelper` при активации демо сначала спрашивает у модуля bitrix24, включён ли старт VibePlus, и если да, запускает триал VibePlus вместо обычного демо тарифа. Ветка срабатывает только при подключённом модуле bitrix24 и определённой константе `BX24_HOST_NAME`. В `ui.system.chi...

1 мин
ui 26.675.0 Ломающее Свежее

UI 26.675.0: ui.actionpanel переехал в бандл, а rich_text по-новому обходится с квадратными скобками

Модуль ui 26.675.0 собран 26 августа 2026. Из PHP поменялись `Converter` и `Whitelist` в `Bitrix\UI\Format\BBCode`, и пользовательские поля типа `rich_text` теперь иначе сохраняют и индексируют текст с квадратными скобками. На фронтенде старую панель групповых действий `ui.actionpanel` перевели на б...

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

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

на связи

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

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

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

Войти