Запуск процесса при поступлении произвольного внешнего HTTP-запроса на определенный адрес.
В отделе «Управление» в каталоге «Внешние запросы» добавьте новую запись (точку приема запросов, по которой будет запускаться процесс).
Укажите название. Например, ту задачу, которую выполняет процесс.
Укажите уникальный «URL-идентификатор». Он определяет адрес приема запросов. Полный адрес, по которому Бипиум будет слушать запросы, формируется из этого идентификатора по правилу:
{ Адрес сервера Bpium }/api/webrequest/{ URL-идентификатор }
В поле «Выполнить» выберите или создайте новый сценарий.
С ответом внешней системе. Если некая внешняя система или сайт отправит любой HTTP-запрос на указанный адрес, то Бипиум запустит процесс по назначенному сценарию, передав ему параметры запроса через переменные. Выходные переменные процесса будут возвращены в качестве ответа внешней системе. Пока выполняется процесс, Бипиум будет держать HTTP-соединение с внешней системой, чтобы вернуть ей ответ. Ограничение на длительность исполнения процесса — 60 секунд.
Без ответа внешней системе. Для запуска долгих процессов, ответ от которых не требуется возвращать внешней системе, процессы можно запускать асинхронно. В этом случае внешней системе будет сразу передан пустой ответ и соединение будет закрыто, а запущенный процесс будет выполнятся до его завершения. Результаты процесса не будут возвращены внешней системе, но будут сохранены в каталоге «Процессы». Для асинхронного запуска процессов укажите параметрasync=true
в GET-параметрах запроса внешней системы к Бипиуму. Пример:
{ Адрес сервера Bpium }/api/webrequest/{ URL-идентификатор }/?async=true
Процесс запускается с передачей всех параметров внешнего HTTP-запроса
Входные переменные:
method
(строка) — HTTP-метод запроса, например: GET, POST, PATCH, PUT, HEAD.
query
(объект) — коллекция GET-параметров запроса (параметры, переданные в URL после знака «?»). Ключи объекта — названия параметров.
Пример для запроса {адрес приема внешнего запроса}?sort=id&limit=10
:
query: {"sort": "id","limit": "10"}
headers
(объект) — коллекция HTTP-заголовков запроса. Ключи объекта — названия заголовков. Пример:
headers: {"Content-type": "text/html;","Host": "youdomain.bpium.ru"}
cookie
(объект) — коллекция куков запроса. Ключи объекта — идентификаторы куки-переменных. Пример:
cookie: {"Content-type": "text/html;","Host": "youdomain.bpium.ru"}
body
(объект) — содержимое тела запроса, например POST-параметры. Пример обращения к POST-параметрам внутри сценария: body.paramname
, body.email
, body.fio
.
body: {"paramname": "client","email": "client@domain.com","fio": "Андрей Иванович Широков"}
Названия всех служебных выходных переменных начинается с знака доллара ($).
Процессы запущенные синхронно (по умолчанию) возвращают ответ запрашивающей системе в том же соединении. Бипиум ожидает возврата от процесса следующих переменных:
$status
(строка) — код http-ответа. Например, 200 — успех.
$headers
(объект) — коллекция HTTP-заголовков ответа на запрос. Ключи объекта — названия заголовков. Пример:
$headers: {"Content-type": "application/json"}
$body
(строка) — тело возвращаемого ответа
Чтобы вернуть эти значения как результат процесса, должны быть созданы переменные с такими названиями в сценарии до компонента «Конец процесса», например с помощью компонента «Назначение переменных».
Процессы запущенные синхронно (с GET-параметром async=true
) не возвращают результат.
Если вы запускаете процесс AJAX-запросом с сайта, то браузер заблокирует такой запрос по политике безопасности кросс-доменных запросов (CORS). Чтобы решить эту проблему, процесс должен вернуть HTTP-заголовок «Access-Control-Allow-Origin».
Пример для разрешения принимать запросы с вашего сайта:
Access-Control-Allow-Origin: http://www.example.com
Пример для разрешения принимать запросы со всех сайтов:
Access-Control-Allow-Origin: *
HTTP-заголовки процесс передается через переменную $headers (тип объект). Её можно задать с помощью компонента «Назначение переменных». Для передачи только этого заголовка, значение переменной должно быть:
{"Access-Control-Allow-Origin": "*"}