Спросить ИИ
Русский RU
Перейти в Watbot

HTTP-запрос

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

Панель настроек блока «HTTP-запрос»Панель настроек блока «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». Подробнее — в разделе «Обработка ответа кодом».

Ниже в настройках идут обычные «Меню» и «Дополнительно» — такие же, как у блоков с сообщением.

Код ответа — в переменную «код_ответа», ответ JSON — по переменным: order.id → номер_заказа, order.status → статус_заказаКод ответа — в переменную «код_ответа», ответ JSON — по переменным: order.id → номер_заказа, order.status → статус_заказа

Подстановка данных

В адресе, значениях заголовков, теле запроса и в путях «Соотношения переменных» работают автоподстановки:

https://example.com/api/orders?phone={{ phone }}&city={{ $город }}

В теле формата JSON подстановка выполняется до разбора. Если после неё получился неправильный JSON — например, в значении переменной оказалась кавычка, — запрос уйдёт с пустым телом, а в «Логе выполнения» появится ошибка Invalid JSON.

Запрос POST с заголовком Authorization и телом JSON с автоподстановкамиЗапрос POST с заголовком Authorization и телом JSON с автоподстановками

Выходы

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

Важно

Ответ с кодом ошибки — например, 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». Если код завершился с ошибкой, её текст уйдёт в чат, а связь «Продолжить» не сработает.

Включено «Обработать ответ с помощью JavaScript»: код проверяет код ответа и отправляет сообщениеВключено «Обработать ответ с помощью JavaScript»: код проверяет код ответа и отправляет сообщение