HTTP-запросы

Интеграция "HTTP-запрос" позволяет отправлять произвольные HTTP-запросы на сторонние сервера. Это позволяет интегрировать Smartbot с вашим сайтом, CRM или интернет-магазином.

Примеры использования

  • Получение информации:

    • Чат-бот может отправлять запросы на внешние API (интерфейсы программирования приложений), чтобы получить актуальную информацию. Например, бот может запрашивать погоду, курсы валют или данные о товарах из интернет-магазина.

  • Отправка данных:

    • Если пользователь вводит данные (например, заполняет форму или оформляет заказ), бот может отправить эти данные на сервер для обработки. Это может быть полезно, например, для регистрации пользователей или оформления заказов.

  • Интеграция с другими сервисами:

    • HTTP-запросы позволяют вашему боту взаимодействовать с различными внешними сервисами, такими как CRM-системы, базы данных или платежные системы. Это расширяет функциональность бота и позволяет ему выполнять более сложные задачи.

Как создавать HTTP-запросы

Чтобы настроить HTTP-запрос, создадим соответствующий блок на экране сценария. Сделать это можно через правое дополнительное меню (раздел "Интеграции"), или щелчком правой кнопкой мыши на свободном участке.

Выбор блока из панели слева (на широких экранах - сверху)
При нажатии правой кнопкой мыши на свободном участке конструктора

Новый блок появится на экране, и справа автоматически откроется его меню.

Меню блока

Если вы интегрируетесь с существующим сервисом, то всю необходимую информацию для настройки этого шага вы можете найти в официальной документации к API этого сервиса, либо свяжитесь с разработчиками вашего сайта.

Краткая справка по полям блока

  • Тип запроса (http-метод): GET/POST/...

  • URL-адрес: страница (endpoint), к которой должен обратиться Smartbot, тут же можно указать query-параметры запроса, например: https://some.site/some_endpoint?key1=value1&key2=value2

  • Тело запроса: полезная нагрузка, может быть задана в трёх разных форматах:

    • Форма: тело запроса представляет собой форму (список пар ключ-значение), запрос будет отправляться с заголовком Content-Type: application/x-www-form-urlencoded (если явно не задано другое значение этого заголовка)

    • JSON: тело запроса является JSON-документом. Запрос будет отправляться с заголовком

      Content-Type: application/json(если явно не задано другое значение этого заголовка)

    • Текст: данные отправляются as-is, никаких дополнительных заголовков не добавляется

  • Заголовки: дополнительная информация, например, авторизационные данные: Authorization: Bearer [token]

Ниже, после настройки параметров запроса, задаются переменные, в которые будет сохранён ответ сервера:

  • Тело ответа: данные, которые прислал сервер в ответ. Если Content-Type равенapplication/json, то типом этой переменной будет Словарь, иначе Строка

  • Статус ответа: число, например 200, 400 или 500 вы можете проверять статус ответа, чтобы узнать завершился ли запрос успешно

  • Заголовки ответа: сервер также может прислать какую-то дополнительную информацию в виде заголовков, они сохранятся в переменную типа Словарь

Справка по методам

Метод GET

Описание:

Метод GET используется для получения данных с сервера. Запросы, отправленные с помощью GET, обычно не изменяют состояние сервера и могут быть кэшированы.

Применение:

  • Получение информации о пользователе или чате.

  • Запрос данных для отображения в интерфейсе бота.

  • Пример использования: запрос на получение информации о пользователе через API Telegram.

Синтаксис:

Параметры передаются в строке URL, например:

https://api.telegram.org/bot><token>/getMe

Функция to_json

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

Cannot convert request body body="{'a':'b'}" to JSON.

Это происходит чаще всего, когда тело запроса достаточно сложное, имеет сложные и/или вложенные структуры, например:

{
	"user_id": %user_id%,
	"products": %products% # массив продуктов, где каждый продукт - словарь
	"extra": {
		"email": "[email protected]",
		"phone": "+79998887766",
		"social": [
			"telegram": "@another_user",
			"facebook": "facebook.com/another_user"
		]
	}
}

Чтобы проблем не возникало, можно использовать вариант передачи тела запроса при помощи функции to_json.

Для этого нужно:

  1. Создать блоки “Выполнить SmartQuery” и “Отправить HTTP-запрос”

  1. В блоке “Выполнить SmartQuery” записать все тело запроса в переменную (например, %request_body%). Она может быть как временной, так и пользовательской/глобальной.

  1. В блоке “Отправить HTTP-запрос” выбрать тип тела запроса “Текст” и в теле написать выражение SmartQuery (обязательно в двойных фигурных скобках):

# В нашем примере, %переменная% - %request_body%, вы можете называть ее как вам угодно
{{ %переменная% | to_json }}
  1. В блоке “Отправить HTTP-запрос” переключиться на “Заголовки” и добавить заголовок “Content-Type” со значением “application/json” (это нужно, чтобы сервер понимал, что бот отправляет HTTP-запрос с телом в формате JSON):

Желаем вам удачи в создании мощных и многофункциональных чат-ботов с помощью HTTP-запросов!

Last updated