Действие «HTTP-запросы»
«Обмен данными (HTTP-запросы)» — действие в сценарии действий, которое позволяет боту общаться с внешним миром: получать данные с сайтов, отправлять заявки в CRM, обновлять записи в API, принимать вебхуки от платёжных систем.
Поддерживает оба направления:
- Исходящий запрос — бот сам обращается к внешнему сервису.
- Входящий вебхук — внешний сервис присылает данные в бот.
Как добавить
В сценарии действий → «Добавить действие» → «Обмен данными (HTTP-запросы)».
Скриншот 1. Выбор действия.
В поле «Выберите»:
- Отправить запрос — исходящий вызов API;
- Ожидание данных — входящий вебхук.
Часть 1. Исходящий запрос («Отправить запрос»)
Шаг 1. Метод запроса
Выберите HTTP-метод:
| Метод | Когда использовать |
|---|---|
| GET | Получить данные (каталог, курс, статус) |
| POST-json | Создать запись, отправить JSON (CRM, формы) |
| POST-data | Отправить form-data (старые формы, файлы) |
| PUT-json / PUT-data | Заменить существующую запись целиком |
| PATCH-json / PATCH-data | Частично обновить запись |
| DELETE | Удалить запись |
Шаг 2. URL запроса
Полный адрес: https://api.service.com/v1/leads. Можно подставить переменные: https://api.site.com/order/#{order_id}.
Шаг 3. Заголовки
Выберите формат:
- JSON — введите полный JSON заголовков в текстовом поле;
- DATA — добавляйте пары «Имя/Значение» по одной (удобно для коротких настроек).
Типичные заголовки:
Authorization: Bearer #{api_token}— авторизация;Content-Type: application/json— формат тела;X-API-Key: ...— ключ API.

Скриншот 2. Заголовки HTTP-запроса.
Шаг 4. Тело запроса (для POST/PUT/PATCH/DELETE)
Формат тела (тот же выбор JSON / DATA):
- JSON — произвольный JSON в одно поле. Можно подставлять переменные:
{"name": "[Name]", "phone": "#{client_phone}", "amount": #{order_sum}} - DATA — пары ключ/значение для
application/x-www-form-urlencoded.
GET-запросы тело не передают — этот раздел появится только для POST/PUT/PATCH/DELETE.
Шаг 5. Тестовая отправка
Кнопка «Отправить запрос сейчас» — выполнит реальный вызов и покажет ответ сервера прямо в интерфейсе. Используйте для проверки настроек до подключения к боту.

Скриншот 3. Тест запроса и отображение ответа.
Шаг 6. Сохранение ответа
После выполнения запроса бот получает ответ. Его можно сохранить двумя способами:
Целиком (JSON-строка)
Поле «Имя переменной» в разделе «Сохранить JSON строку ответа». В переменную попадёт весь ответ в виде JSON-строки.
Подходит для логирования: Лог HTTP: #{api_response}.
Разобрать по полям
Раздел «Сохранить значения»:
- Имя параметра — путь к полю в JSON;
- Переменная — куда сохранить.
Синтаксис пути:
name— поле верхнего уровня;user.email— вложенное поле через точку;items.0.title— первый элемент массива;data.results.2.id— третий элемент по индексу.
Нажмите «Сохранить пару» → пара появится в списке. Можно собрать сразу 10-15 разных полей.

Скриншот 4. Извлечение значений из JSON-ответа.
В список
Если ответ — массив записей (например, список товаров), его можно сохранить сразу в список: выберите список и сопоставьте поля.
Опция «Сохранить массив в одну запись» — массив уйдёт в одну ячейку, без разбиения построчно.
Часть 2. Входящий вебхук («Ожидание данных»)
Когда нужно получать данные в бот от внешнего сервиса (платёжный шлюз, CRM, своя CRM, форма с сайта) — выберите «Ожидание данных».
Шаг 1. Получить ссылку вебхука
Нажмите «Получить ссылку вебхука» — Квесча сгенерирует уникальный URL вида:
https://api.quescha.com/webhook/{уникальный_id}
Скопируйте его и вставьте в настройки внешнего сервиса как «webhook URL» или «callback URL».

Скриншот 5. Ссылка вебхука для внешнего сервиса.
Шаг 2. Принять тестовый запрос
После того как внешний сервис отправит первый запрос, нажмите «Получить последний запрос» — Квесча покажет JSON последнего полученного запроса. Это позволяет:
- увидеть структуру данных, которые присылает сервис;
- настроить парсинг полей.
Шаг 3. Сохранение принятых данных
Точно так же, как для исходящего запроса:
- «Имя переменной» — сохранить весь JSON одной строкой;
- «Сохранить значения» — извлечь конкретные поля через точечную нотацию;
- Сохранить в список — для массовой загрузки.
Шаг 4. Ответ внешнему сервису (опционально)
Если внешний сервис ожидает ответа на свой запрос — присвойте значение в специальную переменную #{_response} в этом же сценарии действий. То, что в ней окажется, Квесча вернёт сервису. Сформировать ответ сервису можно с помощью действия «JS-код»
Пример: на запрос Telegram-вебхука вернуть {"ok": true}.
Часть 3. Подстановки в запросах
В URL, заголовках и теле работают все шаблоны замен:
[Name],[ClientID],[Messenger],[BotID]— системные шаблоны;[Answer1],[DataN]— ответы и параметры сценария;#{varname}— переменные;#{items|1},#{items|last}— элементы массива;{{ #{x} + #{y} }}— вычисления;[CurrentDate],[CurrentTime]— текущие дата/время.
Часть 4. Архитектура
Принцип 1. Отдельный сценарий действий на каждый внешний сервис
Не складывайте в один сценарий «получить курс + создать лид + обновить CRM». Разбейте на три — проще отлаживать и переиспользовать.
Принцип 2. Тестируйте через «Отправить запрос сейчас»
Не запускайте сценарий через бота, не убедившись, что запрос работает. Кнопка теста в редакторе экономит часы отладки.
Принцип 3. Обрабатывайте ошибки
Внешний сервис может вернуть 500, 401, 429. После запроса проверяйте статус — например, парсите поле status или error ответа в переменную и сравнивайте в условиях блока.
Принцип 4. Сначала разберите по полям, потом используйте
Не подставляйте сырой JSON #{api_response} в сообщение клиенту. Сначала разбейте на #{name}, #{price}, #{date} через «Сохранить значения».
Принцип 5. Чувствительные данные — в глобальные переменные
API-ключи, токены — храните в глобальных переменных (например, g_api_token), а в заголовок подставляйте #{g_api_token}. При смене ключа меняете в одном месте.
Принцип 6. Долгие запросы — после отправки сообщения
Если внешний сервис медленный (более 1-2 сек), запускайте HTTP-запрос в сценарии После отправки сообщения в бот, где сообщите об ожидании — клиент уже увидит сообщение, а ответ покажется позже.
Часть 5. Типовые сценарии
Сценарий 1. Получение курса валюты
- Метод: GET
- URL:
https://api.cbr-xml-daily.ru/daily_json.js - Сохранить значение:
Valute.USD.Value→g_usd_rate(глобальная). - В блоке:
Курс USD: #{g_usd_rate} ₽.
Сценарий 2. Отправка лида в Bitrix24
- Метод: POST-json
- URL:
https://your.bitrix24.ru/rest/.../crm.lead.add.json - Тело JSON:
{"fields": {"TITLE": "Лид от [Name]", "PHONE": [{"VALUE": "#{phone}", "VALUE_TYPE": "WORK"}]}} - Сохранить:
result→bitrix_lead_id.
Сценарий 3. Приём вебхука от YooKassa
- Тип: Ожидание данных
- URL вебхука вставлен в личный кабинет YooKassa.
- Сохранить значения:
object.id→payment_id,object.status→payment_status,object.amount.value→paid_sum. - В условиях следующего блока: если
#{payment_status} = succeeded→ сценарий «Оплачено».
Сценарий 4. Получение данных из своего API
- Метод: GET
- URL:
https://my-api.com/orders/#{order_id} - Заголовок:
Authorization: Bearer #{g_api_token} - Сохранить значения:
status→order_status,delivery_date→delivery.
Частые ошибки
- 401/403 — неверный или просроченный токен. Проверьте заголовок
Authorization. - 404 — опечатка в URL или удалённая запись.
- 400 — неправильный формат тела. Сверьте JSON с документацией сервиса.
- CORS / SSL — Квесча обходит ограничения CORS, но самоподписанные сертификаты могут не работать.
- Тело уходит пустым — для GET тело недоступно, нужны параметры в URL.
#{api_response}равно пустоте — запрос не выполнился. Используйте «Отправить запрос сейчас» для диагностики.- Парсинг не работает — проверьте точечный путь, особенно для массивов:
items.0.name, а неitems[0].name. - Вебхук не приходит — внешний сервис не дотягивается. Проверьте через
Webhook.site, что Quescha-URL вообще получает запросы.
Что дальше
- Операции с данными — обработать ответ.
- Списки — сохранить результаты массово.
- JS код — для сложной обработки JSON.
- Платежи — типовая интеграция платёжных шлюзов через вебхуки.
- CRM — готовые интеграции с amoCRM/Bitrix24 без ручного HTTP.