Vibecodeconnector 26.300.0–26.450.0: ссылки на приложения, правка карточки и каталог только для сотрудников
Модуль «Интеграция с Битрикс24 Вайбкод» связывает портал с платформой Битрикс24 Вайбкод и ведёт в мессенджере каталог вайбкод-приложений и ботов. В коробочный Битрикс24 одним днём пришли три его версии: 26.300.0, 26.400.0 и 26.450.0. Последняя правит только облачное лицензирование Vibe+ и в коробке ничего не меняет. Своим приложением теперь можно поделиться и отредактировать его прямо из каталога, сам каталог видят только сотрудники, а на новой коробочной установке он выключен.
Новое
Делитесь приложением и выдавайте ссылку (26.300.0)
В меню своего приложения появились пункты «Поделиться» и «Удалить», а из меню всех карточек убрали «Открыть в Вайбкод» и «Открыть в чате». В диалоге «Поделиться» владелец выбирает, кто получит доступ: только он сам, указанные сотрудники и отделы (до 200 сотрудников и до 200 отделов), все сотрудники портала, все, у кого есть Битрикс24, или все без авторизации. Для людей вне компании есть публичная ссылка со сроком от 5 минут до 10 лет и галкой «Требовать вход через Битрикс24».
Менять доступ может владелец или администратор портала, и только у приложений, не у ботов. Настройки хранит платформа, портал пересылает ей запросы. «Удалить» тоже ведёт на платформу. На портале приложение не удаляется, диалог отправляет на его страницу редактирования.
Ещё владелец теперь может скрыть из каталога собственное приложение, раньше не мог.
Правьте название, описание и иконку (26.400.0)
Пункт «Настройки приложения» в меню своей карточки открывает редактирование. Название от 2 до 100 символов, описание до 500. Иконку можно загрузить или удалить. Файл до 5 МБ и 4 Мп, PNG, JPEG, GIF, WEBP или BMP; формат модуль определяет по содержимому, а картинку ужимает до 256 px. Правка сразу уходит на платформу, и если синхронизация не удалась, портал откатывает изменения и удаляет загруженную иконку.
Экшен для своего интерфейса называется vibecodeconnector.Catalog.update: POST, параметры catalogItemId, title, description, iconAction (replace или delete, без него иконка не меняется), файл в поле icon. Запрос больше post_max_size PHP отбрасывает целиком, экшен это распознаёт и отвечает ошибкой ICON_TOO_LARGE.
У DTO CatalogItem, которые отдаёт Public\Provider\CatalogProvider, появился флаг isDescriptionDefault. Он равен true, когда владелец описание не писал и в description лежит текст по умолчанию.
Проверяйте, положен ли пользователю каталог (26.300.0, 26.400.0)
Экстранет-пользователи каталог не откроют. В 26.300.0 модуль перестал подключать им кнопку каталога, а с 26.400.0 вместо каталога им открывается заглушка «Просмотр каталога недоступен». Все экшены контроллера Catalog с 26.400.0 закрывает префильтр CheckCatalogAvailability. Если каталог на портале выключен или пользователь не интранетный, экшен вернёт ошибку CATALOG_NOT_AVAILABLE.
На сервере ту же проверку делает Public\Service\AvailabilityService. В нём два новых метода. isAvailableForUser() проверяет, что каталог включён и пользователь интранетный, а isAllowedForUser() смотрит только на тип пользователя. Сервис зарегистрирован в ServiceLocator, так что ссылку на каталог в своём меню можно прятать так:
<?php declare(strict_types=1);
namespace Vendor\Portal\Integration\Vibecode;
use Bitrix\Main\DI\ServiceLocator;
use Bitrix\Main\Loader;
use Bitrix\Vibecodeconnector\Public\Service\AvailabilityService;
final class CatalogMenuVisibility
{
public function isVisibleFor(int $userId): bool
{
if (!Loader::includeModule('vibecodeconnector')) {
return false;
}
return ServiceLocator::getInstance()
->get(AvailabilityService::class)
->isAvailableForUser($userId);
}
}
Включите каталог на новой коробке вручную (26.400.0)
Установщик теперь включает каталог, только если подключается модуль bitrix24 и зона портала ru. В коробке модуля bitrix24 нет, поэтому после свежей установки каталог выключен, пока администратор не отметит «Видимость на портале» в настройках модуля. Там же стоит вторая галка, «Открывать приложения внутри Битрикс24», и на новой коробке она тоже снята. Без неё страница открытия приложения после проверки доступа перенаправляет на адрес самого приложения, а до 26.300.0 отдавала ошибку OPEN_APP_DISABLED. На порталах, где модуль уже стоял, обе галки остаются как были.
Галка «Видимость на портале» вызывает AvailabilityService::setEnabled(). С 26.300.0 метод заодно включает и выключает кнопку вайбкода в мобильном мессенджере (опция immobile is_vibecode_button_available). Если раскатываете порталы миграциями, видимость включает такой шаг:
<?php declare(strict_types=1);
use Bitrix\Main\DI\ServiceLocator;
use Bitrix\Main\Loader;
use Bitrix\Vibecodeconnector\Public\Service\AvailabilityService;
if (Loader::includeModule('vibecodeconnector')) {
ServiceLocator::getInstance()->get(AvailabilityService::class)->setEnabled(true);
}
Не снимайте метку «новое» за пользователя (26.300.0)
Приложение перестаёт быть новым, как только пользователь увидел его в списке каталога. Раньше для этого его нужно было открыть. Веб-каталог открывается на вкладке «Новые», если там что-то есть, а на пустой возвращается к «Активным».
CatalogProvider::listAccessibleToUser() получил необязательный параметр markViewing и ещё два для постраничного вывода. Отметку просмотра ставит только вызов с markViewing: true. Если показываете приложения каталога в своём виджете, оставьте флаг выключенным, иначе виджет будет гасить метку «новое» раньше, чем пользователь откроет каталог.
Мелочи и находки
Public\Command\Catalog\Item\UpdateCatalogItemCommandHandler::__invoke()раньше возвращал элемент каталогаInternal\Entity\Catalog\CatalogItem, а с 26.400.0 возвращаетUpdateCatalogItemCommandResultс полямиitemиdisplacedIconFileId. Ядро вызывает обработчик только изUpdateCatalogItemCommand, и в результатеrun()ключitemостался на месте. Если вы вызывали обработчик напрямую, берите элемент из->item.- Синхронизация пользователей с платформой приехала (26.300.0) выключенной за флагом
Internal\Config\Feature\UserEvents. ОбработчикиOnBeforeUserUpdate,OnAfterUserUpdate,OnAfterSetUserGroupиOnAfterUserDeleteмодуль регистрирует уже сейчас. Когда флаг включат,OnBeforeUserUpdateначнёт дописывать ключPREV_ACTIVEв поляCUser::Update(), где естьACTIVE, и ваши обработчики этих событий его тоже увидят. - В настройках модуля адрес активного подключения теперь вводится вручную и проверяется при сохранении, список известных адресов только подставляет значение в поле (26.400.0).