JSON — формат, в котором внешние системы обмениваются данными: так отвечают API служб доставки, платёжных сервисов и учётных систем. Бизнес-процесс Битрикс24 видит JSON как обычную строку: штатных действий, чтобы достать из неё значение или собрать структуру для отправки, нет. Разбираем связку из трёх роботов: первый отправляет HTTP-запрос и получает ответ, второй извлекает из JSON нужное значение по пути, третий собирает JSON из полей сделки для отправки наружу.
Где бизнес-процесс сталкивается с JSON?
Три типовые точки. Первая — ответы внешних API: процесс запрашивает статус доставки, остаток на складе или курс валюты и получает JSON. Вторая — вебхуки: внешняя система присылает данные, и они ложатся в поле или переменную одной строкой вида {"order":{"id":518,"status":"paid"}} — дальше с ней нужно что-то делать. Третья — отправка данных наружу: внешняя система ждёт JSON определённой структуры, и его приходится собирать из полей сделки. Во всех трёх случаях штатный дизайнер бизнес-процессов предлагает работать со строкой целиком, и обычно на этом месте зовут программиста. Три робота ниже закрывают цикл без кода.
Как отправить запрос во внешнюю систему?
Робот «HTTP-запрос GET/POST» обращается к любому внешнему API. Вход: URL, метод — GET, POST, PUT, PATCH, DELETE или HEAD, по умолчанию GET, — тело запроса для POST и PUT, заголовки JSON-объектом вида {"Authorization":"Bearer …"} и таймаут в секундах, по умолчанию 10. Выход: тело ответа, HTTP статус-код и признак «Успешно» (Y/N — код 2xx). Тело ответа записывают в переменную и передают на разбор следующему роботу. Так процесс сам узнаёт статус заказа в учётной системе по расписанию стадий, не дожидаясь, пока менеджер проверит вручную. Робот доступен на платных тарифах Битрикс24.
Как достать значение из JSON-ответа?
Робот «Извлечь значение из JSON по пути» разбирает JSON-строку и возвращает значение по пути через точку: ключи объектов и числовые индексы массивов. Для ответа {"data":{"user":{"email":"a@b.ru"}}} путь data.user.email вернёт a@b.ru; первый элемент списка достаётся путём вида items.0.name. Выход: значение строкой и признак «Путь найден» (Y/N); если по пути лежит объект или массив, он возвращается отдельным значением в виде JSON — его разбирают тем же роботом ещё раз, уже по внутреннему пути. Некорректный JSON или отсутствующий путь дают признак N, а не остановку процесса. Найденное значение следующим действием записывают в поле сделки или контакта.
Как собрать JSON из полей сделки?
Обратная задача: внешняя система ждёт JSON, а данные лежат в полях и переменных. Робот «Сформировать JSON из полей» принимает два множественных списка — ключи и значения; порядок должен совпадать: первый ключ получает первое значение. В значения подставляют поля сделки и переменные процесса. Числа и значения true/false распознаются автоматически и попадают в JSON без кавычек, остальное — строками; есть опция форматирования с отступами для читаемости. Выход — готовый JSON-объект: его подставляют в тело POST-запроса робота «HTTP-запрос GET/POST» или передают внешней системе любым другим способом.
Как обработать ошибки интеграции?
Внешние системы отвечают ошибками, и процесс должен это переживать. Оба робота возвращают признаки вместо остановки. «Успешно = N» у HTTP-запроса означает ответ вне кодов 2xx: статус-код подскажет причину — 401 о проблеме с авторизацией, 404 о неверном адресе, 5xx о сбое на той стороне. «Путь найден = N» у разбора JSON — ответ пришёл не той структуры либо JSON некорректен. По этим признакам в дизайнере бизнес-процессов строят отдельную ветку: задача ответственному с телом ответа внутри, сделка остаётся на текущей стадии до выяснения. Без такой ветки процесс молча запишет пустое значение, и ошибка всплывёт позже — уже у клиента.
Итог
Связка «запрос → разбор → сборка» закрывает типовую интеграцию без кода: «HTTP-запрос GET/POST» обменивается данными с внешней системой, «Извлечь значение из JSON по пути» разбирает ответ, «Сформировать JSON из полей» готовит данные к отправке. Все три — в каталоге Роботеки, ставятся из Битрикс24.Маркет. Нет робота под вашу интеграцию — опишите задачу, сделаем бесплатно и добавим в общую библиотеку.