Интеграция с Битрикс24: REST API, вебхуки, OAuth
↑ 5.5 Интеграции со сторонними API: 1С, Битрикс24, FHIR · ← Предыдущая · → Следующая
Зачем это на собесе
Пример интеграции с SaaS CRM: вебхуки, OAuth и лимиты запросов.
Объяснение
Битрикс24 предоставляет REST API для CRM (лиды, сделки, контакты), задач, пользователей и др.
| Способ доступа | Когда |
|---|---|
| Входящий вебхук | простой доступ от имени пользователя, токен в URL; для внутренних скриптов |
| Локальное приложение / OAuth 2.0 | приложение с правами, access/refresh токенами |
Исходящие вебхуки / события (onCrmDealAdd) | Битрикс уведомляет ваш сервис об изменении |
// Входящий вебхук: https://portal.bitrix24.ru/rest/1/<token>/
var resp = await http.PostAsJsonAsync("crm.deal.list", new
{
filter = new Dictionary<string, object> { [">DATE_MODIFY"] = since },
select = new[] { "ID", "TITLE", "STAGE_ID", "OPPORTUNITY" },
start = 0
}, ct);Особенности:
- Списки отдаются пачками по 50 записей, поле
nextдля продолжения; естьbatch(до 50 команд за вызов). - Лимиты запросов (примерно 2 запроса в секунду на портал): нужны очередь и backoff.
- Поля справочников — идентификаторы стадий и списков; кастомные поля
UF_CRM_*. - OAuth: access-токен живёт около часа, refresh нужно хранить и обновлять; при просроченном токене — 401.
- События Битрикса — уведомление без полных данных: за подробностями делается запрос.
Нюансы и подводные камни
- Токен вебхука — секрет: не логируйте URL целиком.
- Проверяйте
application_tokenв исходящих вебхуках. - Обрабатывайте повторные и потерянные события: периодическая сверка (reconciliation).
- Не используйте синхронный вызов Битрикса в пользовательском запросе: очередь + фон.
- Удаление и слияние записей в CRM меняют идентификаторы.
Практика
- Прочитайте сделки с пагинацией и сохраните в свою БД.
- Примите исходящий вебхук и проверьте токен приложения.
- Реализуйте лимитер запросов к API.
Вопросы с ответами
Вебхук или OAuth-приложение?
Вебхук — для простого внутреннего доступа; OAuth-приложение — для распространяемых интеграций с управляемыми правами и обновлением токенов.
Как справиться с лимитами API?
Очередь запросов, batch, экспоненциальный backoff на 429/503 и кэширование справочников.