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». Якщо код завершився з помилкою, її текст піде в чат, а зв'язок «Продовжити» не спрацює.

