СЛОТЫ

icon picker
Запросы во внешние системы | Слот External Request

Назначение и общая информация

@Слот
External Request предназначен для интеграции
@Агент
а c внешними ИТ системами по протоколу HTTP (REST API или GraphQL, например). При обработке данного
@Слот
а в
@Сценарий
происходит выполнения HTTP-запроса к API внешней системы, а также получение и обработка ответа на этот запрос.
image.png

Создание и настройки слота

Атрибуты слота

Слот External Request не содержит настроек HTTP-запроса, который он отправляет, он содержит
@Внешний запрос
из
@Ресурсы компании
, а
@Внешний запрос
уже в свою очередь содержит все необходимые настройки отправки запроса и обработки ответа.
image.png
NAME* название
@Слот
а, которое будет отображено в
@Дерево сценария
. Максимальная длина значения поля — 40 символов.
REQUEST*
@Внешний запрос
из
@Ресурс компании
. Работает инкрементальный регистронезависимый поиск запроса в списке.
Кнопка SHOW REQUEST IN A NEW TAB — по нажатию кнопки выбранный в поле
@Внешний запрос
открывается в соседней вкладке браузера.

Задержка при отправке запроса

Пользователь может сконфигурировать
@Внешний запрос
таким образом, чтобы он осуществлял
@Задержка отправки внешнего запроса
— некоторое ожидание до отправки данного запроса. Для этого необходимо в заголовках запроса в разделе указать специальный заголовок chatme-delay со значением
@Задержка отправки внешнего запроса
в секундах.
Требования к значению chatme-delay:
целые числа - от 0 до 60
числа больше 60 трактуются как 60
дробные числа, отрицательные числа и не числа трактуются как 0
image.png
Примеры:
заголовок chatme-delay отсутствует
соответствует ожиданию в 0 секунд
chatme-delay: 10
соответствует ожиданию в 10 секунд
chatme-delay: 0
соответствует ожиданию в 0 секунд
chatme-delay: 100500
соответствует ожиданию в 60 секунд
chatme-delay: -100500
соответствует ожиданию в 0 секунд
chatme-delay: non-integer-value
соответствует ожиданию в 0 секунд

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

@Внешний запрос
представляет собой объект
@Ресурс компании
, то есть доступен из всех
@Агент
ов данной компании. Добавить, изменить, посмотреть или удалить запрос можно на .

Работа слота

Процесс выполнения слота External Request:
Определение
@Внешний запрос
для выполнения;
Сборка итогового URL
@Внешний запрос
;
Сборка заголовков запроса;
Сборка тела запроса;
Отправка запроса;
Прием ответа и запись контекстных переменных:
Таймаут ожидания ответа на
@Внешний запрос
(Response) — 30 секунд
Если размер тела, получаемого в ответ на
@Внешний запрос
, больше 5 КБ, но меньше 100 КБ, в
записывается {”error”:”received body is larger than 5kb, you can parse it in External Request settings, but it will not be copied to raw_response”}
Если размер тела, получаемого в ответ на
@Внешний запрос
, превышает
@Лимит на размер получаемого тела в ответ на Внешний запрос
, то тело заменяется на пустое.
В
записывается: ​{”success”:false,”error”:”received body is too big, max 100kb allowed”}.
Если размер тела, получаемого в ответ на
@Внешний запрос
, не превышает
@Лимит на размер получаемого тела в ответ на Внешний запрос
, то будет произведена попытка парсинга ответа в соответствии с во вкладке
image.png
Если при попытке парсинга удалось найти значение по заданному пути, соответствующая
@Контекстная переменная
будет создана\обновлена
Если при попытке парсинга не удалось найти значение по заданному пути, соответствующая
@Контекстная переменная
не создается\не обновляется
Попытка парсинга ответа на запрос будет произведена при любом коде ответа на запрос, если указаны во вкладке
При обработке ответа на запрос в переменную
записывается код ответа на запрос:
При невозможности выполнить запрос будет записан код 400
При истечении таймаута в 30 секунд будет записан код 408
При отсутствии ответа от сервера будет записан код 499
По итогу выполнения
@Внешний запрос
создается переменная
, в которую записывается итог выполнения запроса — успех (True) или провал (False):
При невозможности выполнить запрос или отсутствии ответа от сервера в
будет записано False
При коде ответа >=400 в
будет записано False
При коде ответа 200, но отсутствии (в т.ч. при пустом {} BODY) или невалидном теле для данного типа ожидаемого response, в случае если ожидается парсинг ответа (есть записи во вкладке ) в
будет записано False
В остальных случаях в
будет записано True - запрос успешно выполнен
По итогу выполнения
@Внешний запрос
создается переменная
в формате {”результат выполнения запроса",”тело ответа”}, пример: {”success”:true,”temperature”:”-7.3”,”feels_like”:”-14.3”} .
Переменная складывается из двух частей:
Первая часть содержит результат выполнения запроса "success":true или "success":false, являющийся дублем переменной
(итог зависит от условий, описанных в
)
Вторая часть содержит тело ответа:
При успешном выполнении, тело ответа содержит результат парсинга, заданный на вкладке : ​
Agent Builder _ CHATME.ai — Dialog System Technolo.png
При неуспешном выполнении, тело ответа содержит текст ошибки, полученной от внешней системы ​
Agent Builder _ CHATME.ai — Dialog System Technoloпп.png
если запрос к внешней системе не удалось отправить, то в
записывается значение error
если запрос к внешней системе удалось отправить, но не был получен ответ, то в
записывается значение no response
При получении .xml от внешней системы - ответ записывается строкой
При получении от внешней системы пустого {} BODY - в тело ответа записывается пустая строка
Want to print your doc?
This is not the way.
Try clicking the ⋯ next to your doc name or using a keyboard shortcut (
CtrlP
) instead.