Что делает
Рецепт 7 (обработчик вебхуков) предполагает, что события уже привязаны. Этот рецепт замыкает круг:
list— печатает все привязанные сейчас события на порталеbind— регистрирует целевой URL как обработчик дляONCRMDEALADD,ONCRMDEALUPDATE,ONCRMDEALDELETE(идемпотентно — повторная привязка той же пары ничего не делает)unbind— удаляет эти привязки
Запустите один раз после деплоя обработчика; перезапускайте при каждом изменении конфигурации.
Стек
Node.js 18+. Без внешних зависимостей.
Переменные окружения
export B24_HOOK='https://your.bitrix24.com/rest/1/secret'
export HANDLER_URL='https://your-server.example.com/webhook' # требуется для bind/unbind
Запуск
npx tsx 11-event-registration.ts list
npx tsx 11-event-registration.ts bind
npx tsx 11-event-registration.ts unbind
Исходник
skills/b24jssdk-recipes/examples/11-event-registration.ts.
Примечания
event.bindвозвращает кодERROR_EVENT_BINDING_EXISTS, если та же пара (событие, обработчик) уже привязана — рецепт считает это успехом для идемпотентных запусков.event.unbindвыбрасывает исключение, если привязки нет; рецепт логирует и продолжает.- Вебхук, используемый для вызова
event.bind, должен иметь scopeevent(он есть у входящих вебхуков, созданных из админ-UI портала). - Для приложений, установленных по OAuth, эквивалент
event.bind— привязка событий на уровне приложения через dev-консоль илиevent.bindс авторизацией приложения.
Обработка ошибок
Демонстрирует четыре слоя ошибок (SdkError / AjaxError / сетевые / soft) и настройки hardErrorCodes / softErrorCodes / retryOnNetworkError у менеджера ограничений.
Установка OAuth
Express-сервер, который обрабатывает события ONAPPINSTALL / ONAPPUPDATE / ONAPPUNINSTALL для маркетплейс-приложения Bitrix24, сохраняет токены по порталам и создаёт клиент B24OAuth по требованию с callback обновления, подключённым к хранилищу.