HTTP-запрос
Блок отправляет запрос на сторонний сервер и разбирает ответ: показывает его в чате, записывает в переменные или передаёт вашему коду.


Настройки
-
«URL» — адрес запроса, до 2048 символов. Адрес должен начинаться с
http://илиhttps://. -
«Метод» —
GET,POST,PUT,DELETEилиPATCH. -
«Заголовки» — пары «имя = значение», до десяти. Кнопка «Добавить заголовок» добавляет строку. Если заголовок
Acceptне задан, блок отправитAccept: application/json. -
«Body» — тело запроса. Поле появляется у всех методов, кроме
GET. Формат выбирается из списка:JSON— тело пишется в редакторе целиком;x-www-form-urlencoded— пары «ключ = значение», строки добавляет кнопка «Добавить строку»;multipart/form-data— те же пары и файлы. Кнопка «Добавить файл» предлагает два способа: «Ссылка на файл или переменная» — бот скачает файл по ссылке и приложит к запросу, «Локальный файл» — файл загружается с компьютера. В одном запросе уходит не больше 20 файлов.
-
«Timeout» — время ожидания ответа от сервера в секундах, от 1 до 60. По умолчанию — 5.
-
«Отправлять в запросе данные контакта» — добавляет к запросу три поля:
bot_id(ID бота),contact(данные контакта) иvariables(его переменные). У запросов с телом поля попадают в тело. УGET— в строку запроса, и только если в адресе уже есть хотя бы один параметр. -
«Выводить тело ответа в чат» — бот отправит контакту ответ сервера как есть. Переключатель включён по умолчанию; выключите его, если ответ служебный.
-
«Записать код ответа в переменную» — код ответа (
200,404и так далее) сохранится в переменную контакта с именем из поля «Переменная». -
«Записать ответ json в переменные» — раскладывает ответ в формате JSON по переменным контакта. В блоке «Соотношение переменных» слева укажите путь к значению через точку, справа — имя переменной. Например,
data.product.name→товар. Элемент массива берётся по номеру:items.0.price. Если значения по такому пути нет, в переменную запишется пустая строка. -
«Сервер запроса» — откуда уйдёт запрос: «По умолчанию», «Европа» или «SOCKS5-прокси». Для своего прокси заполните «Хост» и «Порт», а если прокси требует входа — «Пользователь» и «Пароль».
-
«Обработать ответ с помощью JavaScript» — открывает редактор кода. Код получает ответ сервера в объекте
responseи может всё то же, что код блока «Интерпретатор JavaScript». Подробнее — в разделе «Обработка ответа кодом».
Ниже в настройках идут обычные «Меню» и «Дополнительно» — такие же, как у блоков с сообщением.


Подстановка данных
В адресе, значениях заголовков, теле запроса и в путях «Соотношения переменных» работают автоподстановки:
https://example.com/api/orders?phone={{ phone }}&city={{ $город }}
В теле формата JSON подстановка выполняется до разбора. Если после неё получился неправильный JSON — например, в значении переменной оказалась кавычка, — запрос уйдёт с пустым телом, а в «Логе выполнения» появится ошибка Invalid JSON.


Выходы
- Пункты меню — если вы добавили их в «Меню», бот ждёт ответа человека, как в обычном блоке с кнопками.
- «Любая другая фраза» — человек написал то, чего нет в меню.
- «Нет ответа от сервера» — сервер не ответил за время из поля «Timeout», соединение не установилось или запрос завершился сбоем.
- «Продолжить» — сценарий идёт дальше сразу после запроса, не дожидаясь ответа человека.


Важно
Ответ с кодом ошибки — например,
404или500— для блока обычный ответ: выход «Нет ответа от сервера» не сработает. Запишите код ответа в переменную и проверьте его следующим блоком.
Ограничения
- Запросы на внутренние адреса и на адреса самой платформы запрещены: такой запрос не отправляется, в «Логе выполнения» остаётся ошибка
URL is not valid. - Переадресаций блок проходит не больше пяти подряд.
- На один домен уходит не больше 10 запросов в секунду со всей платформы. Лишние запросы ждут своей очереди.
- В «Соотношении переменных» — до 300 строк.
Обработка ответа кодом
Код из поля «Обработать ответ с помощью JavaScript» выполняется после остальных настроек блока. Ответ сервера лежит в объекте response:
| Поле | Что в нём |
|---|---|
response.status |
Код ответа, число |
response.body |
Тело ответа строкой |
response.data |
Разобранное тело, если сервер ответил в формате JSON |
Подробнее — в разделе «Встроенные переменные».
if (response.status === 200 && response.data.paid) {
setContactVariable('оплачено', 'да');
} else {
sendMessage('Оплата пока не поступила.');
disableContinue();
}
Функции и ограничения — те же, что у блока «Интерпретатор JavaScript». Если код завершился с ошибкой, её текст уйдёт в чат, а связь «Продолжить» не сработает.

