Внешние запросы

Внешние запросы — это способ запустить процесс из другой системы через HTTP. Это точка входа в Bpium «снаружи».

Внешние запросы — это способ запустить процесс из другой системы через HTTP. Это точка входа в Bpium «снаружи».

Создание адреса для приема внешних запросов

  • В отделе «Управление» в каталоге «Внешние запросы» добавьте новую запись (точку приема запросов, по которой будет запускаться процесс).

  • Укажите название. Например, ту задачу, которую выполняет процесс.

  • Укажите уникальный «URL-идентификатор». Он определяет адрес приема запросов. Полный адрес, по которому Бипиум будет слушать запросы, формируется из этого идентификатора по правилу:

    { Адрес сервера Bpium }/api/webrequest/{ URL-идентификатор }

  • В поле «Выполнить» выберите или создайте новый сценарий.

Синхронный и асинхронный запуск процесса

С ответом внешней системе. Если некая внешняя система или сайт отправит любой HTTP-запрос на указанный адрес, то Бипиум запустит процесс по назначенному сценарию, передав ему параметры запроса через переменные. Выходные переменные процесса будут возвращены в качестве ответа внешней системе. Пока выполняется процесс, Бипиум будет держать HTTP-соединение с внешней системой, чтобы вернуть ей ответ. Ограничение на длительность исполнения процесса — 60 секунд. По истечению таймаута Бипиум разрывает HTTP-соединение с инициатором запроса и принудительно прекращает сценарий.

Без ответа внешней системе. Для запуска долгих процессов, ответ от которых не требуется возвращать внешней системе, процессы можно запускать асинхронно. В этом случае внешней системе будет сразу передан пустой ответ и соединение будет закрыто, а запущенный процесс будет выполнятся до его завершения. Результаты процесса не будут возвращены внешней системе, но будут сохранены в каталоге «Процессы». Для асинхронного запуска процессов укажите параметрasync=trueв GET-параметрах запроса внешней системы к Бипиуму. Пример:

{ Адрес сервера Bpium }/api/webrequest/{ URL-идентификатор }/?async=true

Параметры события

Процесс запускается с передачей всех параметров внешнего HTTP-запроса**.**

event: { id: "1", type: "$webRequest", async: true }, script: { id: "7" }, user: { id: "2" }, url: "https://test.bpium.ru/api/webrequest/testurl?async=true", method: "GET", headers: { "Content-type": "text/html;", "Host": "youdomain.bpium.ru" } cookies: { "Content-type": "text/html;", "Host": "youdomain.bpium.ru" } query: { "sort": "id", "limit": "10" } body: { "paramname": "client", "email": "client@domain.com", "fio": "Андрей Иванович Широков" }

Общие параметры событий

  • event(объект) — параметры внешнего запроса. Доступно с версии 1.5.2.

    • id(строка) — идентификатор внешнего запроса в каталоге Внешние запросы.

    • type(строка) — название типа события — $webRequest.

    • async(булево) — признак запуска: true — асинхронно, false — синхронно.

  • script(объект) — параметры запущенного сценария. Доступно с версии 1.5.2.

    • id(строка) — идентификатор сценария в каталоге Сценарии.

  • user(объект) — сотрудник вызвавший событие.

    • id(строка) — идентификатор сотрудника или null, если сотрудник не определен (событие вызвано системой).

Дополнительные параметры события

Процесс запускается с передачей всех параметров внешнего HTTP-запроса**:**

  • url(строка) — Полный URL-адрес внешнего запроса и всех параметров.

  • method(строка) — HTTP-метод запроса, например: GET, POST, PATCH, PUT, HEAD.

  • headers(объект) — коллекция HTTP-заголовков запроса. Ключи объекта — названия заголовков.

  • cookies(объект) — коллекция куков запроса. Ключи объекта — идентификаторы куки-переменных.

  • query(объект) — коллекция GET-параметров запроса (параметры, переданные в URL после знака «?»). Пример {адрес приема внешнего запроса}?sort=id&limit=10.

    Ключи объекта — названия параметров.

  • body(объект) — содержимое тела запроса, например POST-параметры. Пример обращения к POST-параметрам внутри сценария: body.paramname, body.email, ...

Синхронный запрос

Процессы запущенные синхронно (по умолчанию) возвращают ответ запрашивающей системе в том же соединении. Таймаут на исполнение синхронных процессов 60 секунд.

Чтобы вернуть значения как результат процесса, нужно задать переменные в сценарии до компонента «Конец процесса», например с помощью компонента «Назначение переменных». Бипиум ожидает возврата от сценария следующих переменных:

$status: 200 $headers = { "Content-type": "text/html;" } $body: { // JSON or binary data }
  • $status(число) — код http-ответа. Например, 200 — успех.

  • $headers(объект) — коллекция HTTP-заголовков ответа на запрос. Ключи объекта — названия заголовков.

  • $body(объект/строка) — тело возвращаемого ответа.

Асинхронный запрос

Процессы запущенные асинхронно (с GET-параметром async=true) не ожидают результат.

Кроссдоменные запросы (CORS)

Если вы запускаете процесс AJAX-запросом с сайта, то браузер заблокирует такой запрос по политике безопасности кросс-доменных запросов (CORS). Чтобы решить эту проблему, процесс должен вернуть HTTP-заголовок «Access-Control-Allow-Origin».

Пример для разрешения принимать запросы с вашего сайта:

$headers = { "Access-Control-Allow-Origin": "http://www.example.com" }

Пример для разрешения принимать запросы со всех сайтов:

$headers = { "Access-Control-Allow-Origin": "*" }