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

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

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

![image.png](https://codahosted.io/docs/_pM7PjYCmj/blobs/bl-4hdP7DTC54/9c46d3487ec186a856d856da5adc13af961b2741421153d947a9e793d93d82cb28dbf4bda27f2943ace1da6d36037a7fac5adf7994de250efeebc4d68e835d23aaf16000d51dd3c750c782ae70fdb4c5d29d00c3911b8207e816fa5889bd62da386c4d3d)<br>

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

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

Слот External Request не содержит настроек HTTP-запроса, который он отправляет, он содержит Внешний запрос из Ресурсы Компании, а Внешний запрос уже в свою очередь содержит все необходимые настройки отправки запроса и обработки ответа.![image.png](https://codahosted.io/docs/_pM7PjYCmj/blobs/bl-VvJa5OXAUp/25182a3dce15dd741559521a90c04adda206126b9725a0ca2160bedaf5bc0f8039b9c289c4101d34cfe849222bb3bfc57f7ad2b2f4d87386dabad464b006a70b771d9a84b04b52440faf63e9316fc4430298284f36f773d645ec80e6b67df03375f746d2)

1. NAME\* — название Слота, которое будет отображено в Дерево сценария. Максимальная длина значения поля — 40 символов.
2. REQUEST\* — Внешний запрос из Ресурсы Компании. Работает инкрементальный регистронезависимый поиск запроса в списке.
3. Кнопка SHOW REQUEST IN A NEW TAB — по нажатию кнопки выбранный в поле Внешний запрос открывается в соседней вкладке браузера.

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

Пользователь может сконфигурировать  Внешний запрос таким образом, чтобы он осуществлял Задержка отправки внешнего запроса — некоторое ожидание до отправки данного запроса. Для этого необходимо в заголовках запроса в разделе Headers указать специальный заголовок er-delayсо значением Задержка отправки внешнего запроса  в секундах.Требования к значению:

* целые числа - от 0 до 60
* числа больше 60 трактуются как 60
* дробные числа, отрицательные числа и не числа трактуются как 0

![image.png](https://codahosted.io/docs/_pM7PjYCmj/blobs/bl-s_HbuvQUdi/6fc81e41e91ddb697dcc84eae4c338f69eab42b1c873d71ff39984890b366925dddee62bb8ad2e73d735636bedaa05711f90aeba2265d993b59f35fea668f8da0563802adc9bc1daa5f53a1aacda541d8b1d7a7a7a41a7ae7e9bc3278ea368f5564c149c)Примеры:

1. заголовок er-delay отсутствует
2. соответствует ожиданию в 0 секунд
3. er-delay: 10
4. соответствует ожиданию в 10 секунд
5. er-delay: 0
6. соответствует ожиданию в 0 секунд
7. er-delay: 100500
8. соответствует ожиданию в 60 секунд
9. er-delay: -100500
10. соответствует ожиданию в 0 секунд
11. er-delay: non-integer-value
12. соответствует ожиданию в 0 секунд

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

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

## Работа слота

Процесс выполнения слота External Request:

1. Определение Внешний запрос для выполнения;
2. Сборка итогового URL Внешний запрос;
3. Сборка заголовков запроса;
4. Сборка тела запроса;
5. Отправка запроса;
6. Прием ответа и запись контекстных переменных:
7. 1. Таймаут ожидания ответа на Внешний запрос (Response) — 90 секунд
   2. Если размер тела, получаемого в ответ на Внешний запрос, больше 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”}
   3. Если размер тела, получаемого в ответ на Внешний запрос, превышает Лимит на размер получаемого тела в ответ на Внешний запрос , то тело заменяется на пустое.
   4. 1. В raw\_response записывается:\
         {”success”:false,”error”:”received body is too big, max 100kb allowed”}.
   5. Если размер тела, получаемого в ответ на Внешний запрос, не превышает Лимит на размер получаемого тела в ответ на Внешний запрос , то будет произведена попытка парсинга ответа в соответствии с настройками парсинга во вкладке Response\
      ![image.png](https://codahosted.io/docs/_pM7PjYCmj/blobs/bl-zQogP9uMcg/3fb342f6036feef05148ca759823b7eca8f575db5258920cb181f7a266737cb74b0152712fb822745ee39bcefc0b0ffcbd9deffbabf1308e1e6628b76cdc893bb408b1d829cabf85f3d0c0a45cbfb87bd68cb099405dcc986701aeb49b0a2cae9462f291)
   6. 1. Если при попытке парсинга удалось найти значение по заданному пути, соответствующая Контекстная переменная будет создана\обновлена
      2. Если при попытке парсинга не удалось найти значение по заданному пути, соответствующая Контекстная переменная не создается\не обновляется
   7. Попытка парсинга ответа на запрос будет произведена при любом коде ответа на запрос, если указаны настройки парсинга во вкладке Response
   8. При обработке ответа на запрос в переменную response\_status\_code записывается код ответа на запрос:
   9. 1. При невозможности выполнить запрос будет записан код 400
      2. При истечении таймаута в 30 секунд будет записан код 408
      3. При отсутствии ответа от сервера будет записан код 499
   10. По итогу выполнения Внешний запрос создается переменная request\_success, в которую записывается итог выполнения запроса — успех (True) или провал (False):
   11. 1. При невозможности выполнить запрос или отсутствии ответа от сервера в request\_success будет записано False
       2. При коде ответа >=400 в request\_success будет записано False
       3. При коде ответа 200, но отсутствии (в т.ч. при пустом {} BODY) или невалидном теле для данного типа ожидаемого response, в случае если ожидается парсинг ответа (есть записи во вкладке Response) в request\_success будет записано False
       4. В остальных случаях в request\_success будет записано True — запрос успешно выполнен
   12. По итогу выполнения Внешний запрос создается переменная raw\_response в формате {”результат выполнения запроса",”тело ответа”}, пример: {”success”:true,”temperature”:”-7.3”,”feels\_like”:”-14.3”} .
   13. 1. Переменная складывается из двух частей:
       2. 1. Первая часть содержит результат выполнения запроса "success":true или "success":false(итог зависит от условий, описанных в п.5)
          2. Вторая часть содержит тело ответа:
          3. 1. При успешном выполнении, тело ответа содержит результат парсинга, заданный настройками на вкладке Response:\
                ![Agent Builder \_ CHATME.ai — Dialog System Technolo.png](https://codahosted.io/docs/_pM7PjYCmj/blobs/bl-4sw4mWbNHg/6930e33fc8efbba038d77443e729d653f56443e022db0b8133935afffcad97a43fa4ec82f4979bd4db15b5de5766e9582b94430de91f36bb476cd86b38c6672118d5f42170db8be9154cb076b6e591ac8191edebb9b5b1053b744fcc68a6f48792f122bc)
             2. При неуспешном выполнении, тело ответа содержит текст ошибки, полученной от внешней системы\
                ![Agent Builder \_ CHATME.ai — Dialog System Technoloпп.png](https://codahosted.io/docs/_pM7PjYCmj/blobs/bl-fWu-odr8xb/3e3e770979283835eb2da49de6f7da91cb9534c2b6dc388d111a2909e1e95f014640cdf890d62c4a2766575cbe83ff684b41b75c8fcb233181a1bffa36d6b8f1f6b5f74f1163ecee95f317959a127f63e71e95fbdd3f679857738893dd07d8a0ae05fd3f)
       3. если запрос к внешней системе не удалось отправить, то в raw\_response записывается значение error
       4. если запрос к внешней системе удалось отправить, но не был получен ответ, то в raw\_response записывается значение no response
   14. При получении .xml от внешней системы - ответ записывается строкой
   15. При получении от внешней системы пустого {} BODY - в тело ответа записывается пустая строка


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://chatme-ai-4.gitbook.io/docs/proekty-na-platforme/proekt-i-ego-soderzhimoe/agenty-na-platforme/kak-postroit-scenarii-agenta/kak-sozdavat-i-nastraivat-sloty/zaprosy-vo-vneshnie-sistemy-or-slot-external-request.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
