Запитати ШІ
Українська UK
Перейти до 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»: код перевіряє код відповіді й надсилає повідомлення