Запросы во внешние системы | Слот External Request
Last updated
Last updated
Слот External Request предназначен для интеграции Агента c внешними ИТ системами по протоколу HTTP (REST API или GraphQL, например). При обработке данного Слота в Сценарий агента происходит выполнения HTTP-запроса к API внешней системы, а также получение и обработка ответа на этот запрос.
Слот External Request не содержит настроек HTTP-запроса, который он отправляет, он содержит Внешний запрос из Ресурсы Компании, а Внешний запрос уже в свою очередь содержит все необходимые настройки отправки запроса и обработки ответа.
NAME* — название Слота, которое будет отображено в Дерево сценария. Максимальная длина значения поля — 40 символов.
REQUEST* — Внешний запрос из Ресурсы Компании. Работает инкрементальный регистронезависимый поиск запроса в списке.
Кнопка SHOW REQUEST IN A NEW TAB — по нажатию кнопки выбранный в поле Внешний запрос открывается в соседней вкладке браузера.
Пользователь может сконфигурировать Внешний запрос таким образом, чтобы он осуществлял Задержка отправки внешнего запроса — некоторое ожидание до отправки данного запроса. Для этого необходимо в заголовках запроса в разделе Headers указать специальный заголовок er-delayсо значением Задержка отправки внешнего запроса в секундах.Требования к значению:
целые числа - от 0 до 60
числа больше 60 трактуются как 60
дробные числа, отрицательные числа и не числа трактуются как 0
заголовок er-delay отсутствует
соответствует ожиданию в 0 секунд
er-delay: 10
соответствует ожиданию в 10 секунд
er-delay: 0
соответствует ожиданию в 0 секунд
er-delay: 100500
соответствует ожиданию в 60 секунд
er-delay: -100500
соответствует ожиданию в 0 секунд
er-delay: non-integer-value
соответствует ожиданию в 0 секунд
Внешний запрос представляет собой объект Ресурсы Компании, то есть доступен из всех Агентов данной компании. Добавить, изменить, посмотреть или удалить запрос можно на Вкладка внешних запросов — External Requests.
Процесс выполнения слота External Request:
Определение Внешний запрос для выполнения;
Сборка итогового URL Внешний запрос;
Сборка заголовков запроса;
Сборка тела запроса;
Отправка запроса;
Прием ответа и запись контекстных переменных:
Таймаут ожидания ответа на Внешний запрос (Response) — 90 секунд
Если размер тела, получаемого в ответ на Внешний запрос, больше 5 КБ, но меньше 100 КБ, в raw_response записывается {”error”:”received body is larger than 5kb, you can parse it in External Request settings, but it will not be copied to raw_response”}
Если размер тела, получаемого в ответ на Внешний запрос, превышает Лимит на размер получаемого тела в ответ на Внешний запрос , то тело заменяется на пустое.
В raw_response записывается: {”success”:false,”error”:”received body is too big, max 100kb allowed”}.
Если при попытке парсинга удалось найти значение по заданному пути, соответствующая Контекстная переменная будет создана\обновлена
Если при попытке парсинга не удалось найти значение по заданному пути, соответствующая Контекстная переменная не создается\не обновляется
Попытка парсинга ответа на запрос будет произведена при любом коде ответа на запрос, если указаны настройки парсинга во вкладке Response
При обработке ответа на запрос в переменную response_status_code записывается код ответа на запрос:
При невозможности выполнить запрос будет записан код 400
При истечении таймаута в 30 секунд будет записан код 408
При отсутствии ответа от сервера будет записан код 499
По итогу выполнения Внешний запрос создается переменная request_success, в которую записывается итог выполнения запроса — успех (True) или провал (False):
При невозможности выполнить запрос или отсутствии ответа от сервера в request_success будет записано False
При коде ответа >=400 в request_success будет записано False
При коде ответа 200, но отсутствии (в т.ч. при пустом {} BODY) или невалидном теле для данного типа ожидаемого response, в случае если ожидается парсинг ответа (есть записи во вкладке Response) в request_success будет записано False
В остальных случаях в request_success будет записано True — запрос успешно выполнен
По итогу выполнения Внешний запрос создается переменная raw_response в формате {”результат выполнения запроса",”тело ответа”}, пример: {”success”:true,”temperature”:”-7.3”,”feels_like”:”-14.3”} .
Переменная складывается из двух частей:
Первая часть содержит результат выполнения запроса "success":true или "success":false(итог зависит от условий, описанных в п.5)
Вторая часть содержит тело ответа:
если запрос к внешней системе не удалось отправить, то в raw_response записывается значение error
если запрос к внешней системе удалось отправить, но не был получен ответ, то в raw_response записывается значение no response
При получении .xml от внешней системы - ответ записывается строкой
При получении от внешней системы пустого {} BODY - в тело ответа записывается пустая строка
Примеры:
Если размер тела, получаемого в ответ на Внешний запрос, не превышает Лимит на размер получаемого тела в ответ на Внешний запрос , то будет произведена попытка парсинга ответа в соответствии с настройками парсинга во вкладке Response
При успешном выполнении, тело ответа содержит результат парсинга, заданный настройками на вкладке Response:
При неуспешном выполнении, тело ответа содержит текст ошибки, полученной от внешней системы