imbot 26.600.0 Ломающее

Imbot 26.600.0: частичный успех пересылки в REST v2 и стикеры между порталами

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

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

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

Imbot 26.600.0 меняет результат imbot.v2.Chat.Message.send при пересылке сообщений. Успешный REST-вызов теперь может содержать ошибки отдельных пересылок, поэтому одного общего статуса ответа боту мало. Заодно сетевой бот научился передавать стикеры между порталами.

Новое

Пересылка возвращает результат по сообщениям

В ответе imbot.v2.Chat.Message.send теперь есть id, uuidMap и failureMap. Поле legacyFailureMap добавляется, когда оно непустое. Это нужно ботам, которые отправляют текст вместе с пачкой пересылок: успешно отправленный текст больше не превращает весь вызов в ошибку из-за одной неудачной пересылки.

Обработчик успешного ответа должен просмотреть карту неудач. Например, этот собственный фрагмент клиента оставляет диагностику, даже если REST-вызов завершился успешно:

        function inspectSendResult(result) {
    const failures = result.failureMap ?? {};
    if (Object.keys(failures).length > 0) {
        console.warn('Часть сообщений не переслана', failures);
    }
    return result.uuidMap ?? {};
}

    

Пересылка работает и без отдельного текста. Если после подготовки нет полей нового сообщения, контроллер не вызывает CIMMessenger::Add(), а отправляет только пересланные сообщения. В таком ответе id может быть null: смотрите также результат пересылки.

Стикер проходит через сетевого бота

При обмене сообщениями между порталами сетевой бот добавляет параметр IMOL_STICKER. В нём передаются ID стикера и набора, тип набора, абсолютный адрес изображения, ширина и высота. На принимающей стороне из параметра собирается компонент NetworkStickerMessage. Для сообщения из одного стикера текстом становится placeholder стикера.

У Bitrix\ImBot\Bot\Network появилась константа MESSAGE_PARAM_NETWORK_STICKER и protected static-метод buildNetworkStickerCarrier(array $messageParams): ?array. Если расширяете сетевого бота, это точка сборки параметров стикера.

Действие БП принимает блоки сообщения

У действия «Сообщение от бота» появилось скрытое свойство messageBlocksJson. JSON проходит через Im\V2\Message\BlocksBuilder\BuilderService и попадает в параметры сообщения как блоки. Обычного поля в карте свойств дизайнера нет, но при ручном сохранении дизайнер сохраняет это значение вместе с buttons.

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

Проверьте все ID до отправки

Контроллер загружает forwardIds в ForwardMessageCollection и сравнивает число найденных сообщений с числом уникальных переданных ID. Если хотя бы одно сообщение не найдено, весь вызов отклоняется с MessageError::NOT_FOUND. Текст из того же запроса тоже не отправляется: ошибка проверяется до его отправки. Раньше такой проверки не было.

Обычный список числовых ID теперь обрабатывается без передачи числового индекса как UUID. UUID назначается пересылке только при строковом ключе forwardIds.

Разберите успех отдельно от полной неудачи

После проверки входных данных контроллер возвращает ошибку, только если не отправил ни текст, ни одну пересылку. Раньше ошибка сервиса пересылки делала ошибочным весь вызов, хотя текст к тому времени уже мог уйти. Старый обработчик, который реагирует только на общую REST-ошибку, теперь пропустит частичную неудачу. Проверяйте failureMap в успешном ответе и не повторяйте всю пачку без разбора результата: в ней уже могут быть отправленные сообщения.

CopilotChatBot заодно перестал отвечать на сообщения с SCHEDULED_TASK_RUN_ID: запланированная задача сама отправляет запрос в сервис, и второй ответ бота больше не дублирует её работу.

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

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

Подписаться

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

imbot 26.500.0 Заметное Свежее

Imbot 26.500.0: REST-боты получают событие отправки формы, Bot.update перестал стирать непереданные поля

В imbot 26.500.0 ботам v2 пришло событие `OnImBotV2FormSubmit`, `imbot.v2.Bot.update` больше не затирает поля профиля, которые вы не передали, а к действию «Отправить сообщение от чат-бота» можно прикрепить кнопки.

2 мин
voximplant 26.900.0 Заметное Свежее

Voximplant 26.900.0: подписанные параметры экспорта статистики

Voximplant 26.900.0 подписывает имя компонента при экспорте детализации статистики. Обновление также исправляет REST-сценарии, отметку пропущенного переадресованного звонка и чтение настроек прокси.

1 мин
superset 26.700.0 Заметное Свежее

Superset 26.700.0: пользовательский контекст и проверяемый act-as

Версия 26.700.0 добавляет пользовательский контекст Superset в публичные провайдеры и команды. Проверяемый act-as для SQL Lab включается явно, поэтому существующие вызовы продолжают работать по-прежнему. Все новые параметры необязательны, прежние значения по умолчанию сохранены.

2 мин
sign 26.1200.0 Ломающее Свежее

Sign 26.1200.0: автоопределение бланков и удаление CRM API

Sign 26.1200.0 упрощает загрузку документов КЭДО, добавляет списки сотрудников в робот и обновляет «Мой сейф» без перезагрузки страницы. Перед обновлением проверьте интеграции с CRM и сервисом бланков: четыре публичные точки API удалены, а `CRM::saveCompanyStamp()` сменил тип результата.

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

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

на связи

пишет…

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

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

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

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

Войти