По умолчанию в Битрикс24 для взаимодействия с внешними системами часто используют исходящие вебхуки (webhooks). Однако они имеют важное ограничение: исходящие вебхуки в Битрикс24 отправляются GET-запросом. Это подходит для большинства простых сценариев, когда нужно лишь передать базовые параметры в запросе.
Но в некоторых проектах возникает требование передавать данные строго методом POST, причём зачастую в различных форматах (например, в формате JSON, XML и YAML). Если функционала стандартных инструментов вебхуков Битрикс24 недостаточно (или он ограничен одним методом запроса), возникает необходимость в кастомизации.
Возникла потребность отправлять данные в разные внешние системы именно POST-запросами, а также формировать тело запроса в определённых форматах (JSON, поля формы, и т. д.).
Таким образом, требовалось решение, позволяющее:
Указывать адрес (URL) получателя запроса;
Выбирать метод (POST/GET);
Задавать формат отправляемых данных (JSON, XML и YAML);
Формировать и передавать произвольный набор данных из бизнес-процесса.
Благодаря созданной PHP-вставке (активити) клиент получил возможность:
Отправлять POST-запросы из бизнес-процессов Битрикс24;
Гибко выбирать формат передаваемых данных (JSON, XML и YAML);
Управлять дополнительными настройками (заголовки, метод);
Реагировать на ответ внешнего сервиса непосредственно внутри бизнес-процесса.
Это позволило удовлетворить все требования по интеграции с внешними системами, которые не принимали GET-запросы или нуждались в конкретном формате данных.
Реализация данного решения возможна в коробочной версии Битрикс24, так как доступ к ряду внутренних настроек портала в облачной версии ограничен.
В ситуациях, когда стандартной функциональности исходящих вебхуков Битрикс24 (с их GET-запросами) недостаточно, разработка собственного активити на PHP становится удобным решением. Этот подход даёт гибкость: можно формировать разные типы запросов (POST, PUT и т. п.), указывать собственные заголовки и форматы данных. В результате бизнес-процесс в Битрикс24 более тесно и корректно интегрируется с внешними системами, не нарушая требования протоколов и спецификации сторонних API.