Comment on page
Внешние запросы
Запуск процесса при поступлении внешнего HTTP-запроса на определенный адрес.
- В о тделе «Управление» в каталоге «Внешние запросы» добавьте новую запись (точку приема запросов, по которой будет запускаться процесс).
- Укажите название. Например, ту задачу, которую выполняет процесс.
- Укажите уникальный «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": "[email protected]",
"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
}
$headers
(объект) — коллекция HTTP-заголовков ответа на запрос. Ключи объекта — названия заголовков.$body
(объект/строка) — тело возвращаемого ответа.
Процессы запущенные асинхронно (с GET-параметром
async=true
) не ожидают результат. Если вы запускаете процесс AJAX-запросом с сайта, то браузер заблокирует такой запрос по политике безопасности кросс-доменных запросов (CORS). Чтобы решить эту проблему, процесс должен вернуть HTTP-заголовок «Access-Control-Allow-Origin».
Пример для разрешения принимать запросы с вашего сайта:
Выходные переменные
$headers = {
"Access-Control-Allow-Origin": "http://www.example.com"
}
Пример для разрешения принимать запросы со всех сайтов:
Выходные переменные
$headers = {
"Access-Control-Allow-Origin": "*"
}
Last modified 1yr ago