Что делает
Поднимает Express-endpoint на POST /webhook, который сопоставляет события ONCRMDEALADD, ONCRMDEALUPDATE, ONCRMDEALDELETE обработчикам. Каждый обработчик вызывает crm.item.get, чтобы обогатить payload (Bitrix24 присылает только id сущности), и выполняет вашу логику. Предоставляет endpoint GET /health для проб оркестрации.
Стек
Node.js 18+, express.
Установка
pnpm add express
Переменные окружения
export B24_HOOK='https://your.bitrix24.com/rest/1/secret'
export PORT=3001 # по умолчанию
Запуск
npx tsx 07-webhook-handler.ts
# пробросить локально для тестов:
npx ngrok http 3001
Исходник
skills/b24jssdk-recipes/examples/07-webhook-handler.ts.
Примечания
- Исходящие события Bitrix24 шлют POST
application/x-www-form-urlencoded— парсер Expressurlencoded({ extended: true })разворачиваетdata[FIELDS][ID]вpayload.data.FIELDS.ID. - Всегда возвращайте
200независимо от исхода обработчика. Не-2xx запускает повторы Bitrix24 на срок до 24 часов. - Регистрация событий — разовая настройка; про
event.bind/event.unbindиз SDK см. рецепт 11 (Регистрация исходящих событий). - Проверяйте источник запроса в production. Задайте
B24_APPLICATION_TOKENравным значению из dev-консоли Bitrix24 (Локальное приложение → application_token); рецепт сверяет с нимpayload.auth?.application_tokenи молча отбрасывает несовпадающие запросы. Без этой защиты любой, кто знает ваш URL, может повторять произвольные события.