vibecodeconnector 26.1000.0 Заметное

Vibecodeconnector 26.1000.0: «Доступы» и «Публичная ссылка» в каталоге, чат в настройках приложения и доступ по живой оргструктуре

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

В меню приложения в каталоге Вайбкода пункт «Поделиться» разделён на «Доступы к приложению» и «Публичную ссылку», переключатель чата переехал в «Настройки приложения», а доступ по отделам проверяется по текущей оргструктуре. Баланс Вайбкода для виджета тарифа уже лежит в модуле, но выключен флагом. Версия пришла вместе с intranet 26.2000.0 (разбор) и humanresources 26.700.0 (разбор), прошлый разбор модуля — Vibecodeconnector 26.300.0–26.450.0.

Новое

Ищите доступы и ссылку в разных пунктах меню

«Доступы к приложению» открывает выбор аудитории, «Публичная ссылка» открывает тот же диалог сразу на экране ссылки, а если ссылки ещё нет, там будет кнопка «Создать ссылку». Переключатель «Разрешить участникам писать в чат» теперь стоит в «Настройках приложения» рядом с названием и описанием. Если остальные поля не сохранились, модуль откатывает и настройку чата, а когда не удаётся и откат, пишет «Настройка чата сохранена, остальные изменения — нет».

Пункт «Редактировать в Вайбкод» переименован в «Открыть в Вайбкод», порядок пунктов теперь постоянный: закрепить, настройки, доступы, ссылка, Вайбкод, чат, создать чат, скрыть, удалить. Открыть приложение всем, у кого есть Битрикс24, или всем без авторизации нельзя, пока портал не узнал состояние публичной ссылки и пока владелец не подтвердил удаление действующей ссылки.

Боты пропали из окна каталога и из Public\Provider\CatalogProvider::listAccessibleToUser() во всех состояниях (active, hidden, all, favorite), isEmptyForUser() их тоже не учитывает. Вкладка «Новые» показывала только приложения и раньше.

Выдавайте доступ отделу без пересчёта прав

К кодам доступа из b_user_access модуль добавляет коды отделов D<n> и DR<n>, подтверждённые через humanresources по текущей оргструктуре, для DR проверяются вышестоящие отделы сотрудника. Приложение, открытое отделу, сотрудник видит сразу, без ожидания пересчёта b_user_access. При открытии, запуске, превью, избранном, скрытии и закреплении модуль проверяет только отделы из ACL этого приложения. Список отделов из доступов приложений кешируется на 300 секунд, изменение доступа кеш сбрасывает. Если запрос к оргструктуре падает на ошибке SQL или соединения, модуль проверяет доступ по сохранённым кодам и не чистит отметки «скрыто». Отделы ищет новый NodeService::getNodeIdsGroupedByAccessCode() из humanresources 26.700.0.

Точка VibecodePort\Structure::match, через которую сервер Вайбкода сопоставляет отделы, теперь разворачивает DR<n> в отдел со всеми подотделами, раньше такой код попадал в unresolved. Отделы при шаринге модуль передаёт серверу кодами доступа (D7, DR7), в JS портала они по-прежнему приходят ID из диалога.

Различайте ошибки по data-error-code

Для ACCESS_DENIED и ITEM_NOT_FOUND слайдер приложения показывает один экран: «Нет доступа к приложению» и «Чтобы получить доступ, обратитесь к владельцу приложения». Шапка скрыта, кнопки помечены inert. Удалённое приложение от закрытого отличает только атрибут data-error-code с настоящим кодом.

Встройки модуля открываются общим слайдером BX.Vibecodeconnector.Embed.openEmbedSlider() из расширения vibecodeconnector.embed, на него переехала и встройка создания приложения. Пустой html в ответе vibecodeconnector.Embed.openLayout теперь даёт экран ошибки вместо пустого окна, в ответ добавлен ключ origin.

Включите баланс Вайбкода флагом

Баланс закрыт флагом Bitrix\Vibecodeconnector\Internal\Config\Feature\VibeBalance, по умолчанию выключенным. Галки для него в настройках модуля нет, включается он через Main\Config\Feature:

        <?php declare(strict_types=1);

use Bitrix\Main\Config\Feature;
use Bitrix\Main\Loader;
use Bitrix\Vibecodeconnector\Internal\Config\Feature\VibeBalance;

if (Loader::includeModule('vibecodeconnector')) {
    Feature::enable(VibeBalance::class);
}

    

Из консоли то же делает php bitrix/bitrix.php main:feature:enable 'Bitrix\Vibecodeconnector\Internal\Config\Feature\VibeBalance'. Флаг работает только вместе с «Видимостью на портале» в настройках модуля (опция is_ready). В коробке она по умолчанию N, и пока её не отметить, каталог и баланс скрыты. Баланс видят только сотрудники интранета.

Сервер Вайбкода сообщает о новой версии баланса через VibecodePort\Balance::changed, портал ставит сообщение в очередь Messenger vibecodeconnector.balance_pull, забирает баланс методом balance.get и хранит его в опции vibe_balance_state. Первый запрос уходит при регистрации подключения. С выключенным флагом changed отвечает успехом и в очередь ничего не ставит.

Для своего виджета данные берите у Public\Provider\VibeBalanceProvider:

        <?php declare(strict_types=1);

namespace Vendor\Portal\Vibecode;

use Bitrix\Main\Loader;
use Bitrix\Vibecodeconnector\Public\Provider\VibeBalanceProvider;

final class BalanceBadge
{
    /** @return array{balance: string, alert: string}|null */
    public function forCurrentUser(): ?array
    {
        if (!Loader::includeModule('vibecodeconnector')) {
            return null;
        }

        $data = (new VibeBalanceProvider())->getForCurrentUser()->toArray();
        if (!$data['isAvailable'] || $data['balanceState'] !== 'available') {
            return null;
        }

        return ['balance' => $data['balance'], 'alert' => $data['balanceAlert']];
    }
}

    

balance приходит десятичной строкой, модуль сравнивает и форматирует её без float. balanceAlert равен negative при минусе и low при нуле или балансе ниже порога: 500 для лицензий ru, by, kz, uz и 5 для остальных. Кнопку выбирайте по action (purchase, request, requested или none), рядом лежат purchaseUrl, dashboardUrl и lastFetchedAt. Если баланс ни разу не запрашивали, первый вызов провайдера сам поставит запрос в очередь.

purchase получает тот, кто может купить сам. В коробке это администратор (Bitrix\Intranet\CurrentUser::isAdmin()), в облаке администратор портала или любой сотрудник, кроме интегратора, если покупать лицензию разрешено всем. Коробочная ссылка покупки ведёт на сайт 1С-Битрикс для ru, by, kz, uz и в store.bitrix24.com для остальных, с публичным хешем лицензии в параметре. Остальным виджет предлагает попросить пополнение у администраторов:

        BX.ajax.runAction('vibecodeconnector.VibeBalance.requestTopUp')
    .then(({ data }) => {
        // data.requestState: 'created' или 'already_requested'
    })
    .catch(({ errors }) => {
        // VIBECODE_UNAVAILABLE, TOP_UP_REQUEST_NOT_ALLOWED, BALANCE_UNAVAILABLE, TOP_UP_REQUEST_FAILED
    });

    

Действие принимает только POST, runAction так и отправляет.

Запрос рассылает всем администраторам уведомление от имени сотрудника (CIMNotify::Add, тег VIBECODE_TOP_UP_REQUEST_<userId>), и если хоть одно не ушло, ответом будет TOP_UP_REQUEST_FAILED. TOP_UP_REQUEST_NOT_ALLOWED получит тот, кто может купить сам, BALANCE_UNAVAILABLE вернётся, пока портал не получил баланс. Закрывает запрос только рост баланса.

Повторяемые ошибки balance_pull (сеть, HTTP не 200, RATE_LIMITED, занятая блокировка) приёмник откладывает сам, max_retries они не расходуют. Пауза растёт до 6 часов, при RATE_LIMITED её задаёт сервер. Десять попыток из .settings.php тратят только прочие исключения.

Учтите, что сервер Вайбкода получает список администраторов

VibecodePort\Portal::adminList и VibecodePort\Balance::changed принимают только POST с Bearer JWT сервера Вайбкода, сессия пользователя им не нужна. adminList отдаёт создателя портала и активных администраторов с ID на портале, ID в Битрикс24.Network, логином, именем и фамилией. Отвечает он на любой валидный JWT, флаг VibeBalance и is_ready не проверяет. В коробке без модуля bitrix24 creator равен null. Тот же список в своём коде даёт Public\Provider\PortalAdminListProvider::get().

Найдите в настройках экран «Коворк/Код»

В настройках модуля появилась галка «Экран „Коворк/Код“ в Битрикс24» (embed_cowork_admin_enabled, по умолчанию Y). Судя по подсказке, на этом экране подписки распределяют между сотрудниками, а кнопка должна стоять в виджете «Мой тариф» у администраторов. Открывается экран только администратору при включённой «Видимости на портале», со снятой галкой ответ будет SCREEN_DISABLED. Расширение vibecodeconnector.cowork-admin с BX.Vibecodeconnector.openCoworkAdmin() и проверка Public\Service\EmbedScreenAvailability::isCoworkAdminAvailable($userId) уже есть, но в этом обновлении их никто не подключает.

openVibecodeCabinet() из vibecodeconnector.app-creation открывает кабинет Вайбкода в новой вкладке с opener = null, а cabinetUrl получает каждый, кому доступен каталог, даже без права создавать приложения. Название и ссылку для пункта Вайбкода в левом меню intranet отдают VibecodeBrandProvider::getDisplayName() и VibecodeUrlProvider::getDashboardUrl().

БД

Таблица b_vibecodeconnector_top_up_request хранит запросы пополнения, по строке на сотрудника: ID, USER_ID и STATUS (active или closed).

Мелочи и находки

  • Ссылка покупки тарифа в коробке берётся из Main\License\UrlProvider::getPriceTableUrl(). Для ru, by, kz это /buy/products/b24.php, для остальных /prices/self-hosted.php, а раньше для СНГ ссылка вела на key_update.php магазина.
  • Public\Service\ProvisioningService::issueApplicationKey() бросает HandlerUrlSchemeForbiddenException, если схема handlerUrl не http и не https.
  • Слайдеры встроек принимают postMessage только от своего iframe, кроме event.origin проверяется и event.source.

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

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

Подписаться

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

vibecodeconnector 26.450.0 Заметное

Vibecodeconnector 26.300.0–26.450.0: ссылки на приложения, правка карточки и каталог только для сотрудников

Модуль «Интеграция с Битрикс24 Вайбкод» связывает портал с платформой Битрикс24 Вайбкод и ведёт в мессенджере каталог вайбкод-приложений и ботов. В коробочный Битрикс24 одним днём пришли три его версии: 26.300.0, 26.400.0 и 26.450.0. Последняя правит только облачное лицензирование Vibe+ и в коробке…

3 мин
sign 26.1100.0 Ломающее Свежее

Sign 26.1100.0: ручное напоминание подписантам, скачивание шаблонов и REST провайдеров только для администратора

В sign 26.1100.0 подписантам можно напомнить из грида документа, подписание запускается из списка подписантов, а шаблоны и комплекты скачиваются незаполненными. REST провайдеров подписи теперь только для администратора, у сервисов списка символьных кодов новые сигнатуры. Версия требует main и humanr…

7 мин
meeting 26.100.0 Безопасность Свежее

Meeting 26.100.0: чужой пункт повестки больше не привязать к своей планёрке

Meeting 26.100.0 закрывает дыру, через которую сотрудник мог добавить в повестку своей планёрки пункт из чужой и получить к нему доступ как владелец. Обновите модуль на всех порталах, где работают планёрки. Для установки нужен main 26.700.0, сигнатуры существующих методов не менялись.

3 мин
intranet 26.2000.0 Безопасность Свежее

Intranet 26.2000.0: журнал соглашений только администраторам, проверка стартовой страницы и «MCP-подключения» в меню коробки

Intranet 26.2000.0 закрывает журнал принятых соглашений от всех, кроме администраторов, и принимает стартовой страницей левого меню только адреса внутри портала. В левом меню коробки с модулем `aiassistant` появился пункт «MCP-подключения», а панель чатов сменила `arResult`, так что переделанные коп…

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

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

на связи

пишет…

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

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

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

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

Войти