calendar 25.197.0: тип события call_sync и чат, который создаётся сам

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

У события календаря появился собственный тип, и первый его пользователь — синхронизированные созвоны: при создании такого события автоматически поднимается чат с гостевой ссылкой. Ломающих изменений нет, все правки сигнатур совместимы.

EVENT_TYPE: событие теперь знает, откуда оно

CreateEventCommand::__construct получил необязательный последний аргумент ?string $eventType = null и геттер getEventType(); обработчик пишет значение в поле EVENT_TYPE. В словаре Dictionary::EVENT_TYPE добавлен 'call_sync' => '#call_sync#'.

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

Важно, как тип попадает в систему: в формах compacteventform и eventeditform появилось скрытое поле event_type, а CalendarEntryAjax принимает его только из белого списка Dictionary::EVENT_TYPE. Произвольную строку с клиента не проставить — правильный подход, учитывая, что тип управляет автоматикой.

Чат для созвона создаётся сам

Новый подписчик CreateCallSyncChat (__invoke, getEventClasses) подписан на AfterCalendarEventCreated и AfterCalendarEventEdited. Срабатывает он только при getSpecialLabel() === Dictionary::EVENT_TYPE['call_sync'] — то есть на обычные встречи не реагирует.

Зависимости: im (GuestLinkService, GuestChatLink) и intranet (Secretary). Константа GUEST_LINK_URL_MARKER = '#cal-sync-guest'.

Складывается общая картина: событие типа call_sync → чат → гостевая ссылка, по которой внешний участник заходит без учётной записи. Гостевые ссылки в этом же батче переделали в im 26.700.0 — там как раз завезли отдельную область авторизации гостя и очистку неактивных. Стоит смотреть на эти два релиза вместе.

Ещё два новых экшена

  • CalendarAjax::getStandaloneCompactFormDataAction() — данные компактной формы, только для личного календаря текущего пользователя (type=user). Ограничение зашито в экшен, чужой календарь через него не открыть.
  • SharingAjax::enableAndGetSharingConfigAction() — включает sharing, если он был выключен, и сразу возвращает ссылку, настройки календаря и пользователя. Экономит шаг «сначала включите шаринг в настройках»: раньше это были два действия пользователя, теперь одно.

Под первый экшен сделано JS-расширение calendar.compacteventform-launcher (CompactFormLauncher) — компактную форму создания события теперь можно поднять из любого места интерфейса, не таща за собой весь календарь. Плюс контролы user-sharing.js и user-sharing-controller.js.

Что делать

  • Если делаете свою интеграцию созвонов — используйте EVENT_TYPE вместо распознавания событий по названию.
  • Собственные типы событий добавлять придётся через Dictionary::EVENT_TYPE: белый список в CalendarEntryAjax отсечёт всё остальное.
  • Планируете встраивать быстрое создание события — посмотрите на CompactFormLauncher прежде чем писать свою форму.

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

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

Подписаться

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

calendar 26.300.0 Безопасность Свежее

Calendar 26.300.0: закрыты дыры в правах на календари и переговорки, дельта в REST

Calendar 26.300.0 закрывает три дыры в правах: перенос события в чужой календарь без права на добавление, подмену чужой брони переговорки через `LOCATION[’OLD’]` или `room_event_id` и добавление в участники проектов, где пользователь не состоит. Для интеграций в `calendar.event.get` появилось инкрем…

2 мин
calendar 26.200.0 Ломающее Свежее

Calendar 26.150.0–26.200.0: двойная бронь переговорки стала ошибкой, а форма бронирования больше не отдаёт чужую занятость

Календарь вышел двумя версиями, 26.150.0 и 26.200.0. В 26.150.0 закрыли утечку в анонимном экшене бронирования CRM-формы, через который любой посетитель мог узнать занятость и имена сотрудников и ресурсов портала. В 26.200.0 занятость переговорок проверяется по умолчанию в `CCalendar::SaveEvent`, RE…

1 мин
calendar 26.125.100 Безопасность

Calendar 26.125.100: карточка события без полного доступа больше не выдаёт хоста, участников и раздел

В Calendar 26.125.100 карточка события и планировщик перестали отдавать пользователю без полного доступа хоста, автора, участников, данные раздела, ссылки и пользовательские поля. Режет данные новый класс `Bitrix\Calendar\View\EventViewData`, а ответы экшенов `getViewEventSlider`, `getCalendarViewSl…

5 мин
calendar 26.100.0 Безопасность

Calendar 26.100.0: почтовые приглашения и calendar.section.update берут хоста, тип и владельца из базы

В Calendar 26.100.0 REST-метод `calendar.section.update` берёт тип и владельца секции из базы, а обработчик входящих iCal-приглашений ищет событие только среди встреч получателя и при обновлении встречи читает её хоста из базы. В участники встречи теперь можно звать команды из модуля `humanresources…

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

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

на связи

пишет…

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

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

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

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

Войти