Перейти к основному содержимому

Блок HTTP-запрос

Блок HTTP-запрос позволяет боту обмениваться данными со сторонними системами и сервисами, а также сохранять полученные данные в переменные.

Добавление блока

Чтобы добавить блок в сценарий, выберите HTTP-запрос в палитре блоков.

Настройте обязательные параметры запроса:

  • Выберите один из типов запроса:
    • GET (по умолчанию)
    • POST
    • DELETE
    • PUT
  • Укажите URL, на который будет отправляться запрос.

Дополнительно вы можете заполнить вкладки RESPONSE, BODY и HEADERS.

URL запроса

По указанному URL бот будет получать либо отправлять данные.

Вы можете добавлять переменные в URL запроса. Формат может быть разным, например:

  • https://example.com?query=${varname}
  • https://${varname}/endpoint
  • ${varname} (если в переменной хранится полный URL запроса)

Здесь varname — имя переменной.

предупреждение
Фигурные скобки необходимы при подставлении переменных в адрес. Если в вашем URL есть другие фигурные скобки, то их необходимо заменить на %7B и %7D соответственно для левой и правой скобки.

Чтобы передать в URL текст последнего ввода клиента, в качестве переменной в URL укажите queryText, например: https://example.com?query=${queryText}. Бот автоматически подставит его в URL перед выполнением запроса.

к сведению

$queryText — это переменная, в которой хранится текст последнего запроса клиента.

При помощи переменных в URL, например, можно читать данные из разных Google Таблиц, не создавая несколько HTTP-запросов.

Заголовки

На вкладке HEADERS вы можете добавить заголовки запроса, заполнив поля Заголовок и Значение.

В заголовках вы также можете использовать переменные.

предупреждение
При добавлении переменных в значение заголовка указывайте их без фигурных скобок и добавляйте $ перед именем переменной.

Тело запроса

Для всех методов вы можете передать тело запроса.

Тело запроса заполняется на вкладке BODY. Здесь можно указывать данные в любом формате (JSON, XML, произвольный текст), а также добавлять переменные.

Заполнение тела запроса

В примере тело запроса указано в формате JSON. Бот автоматически подставит в тело запроса значения переменных $age и $name.

предупреждение
При добавлении переменных в объект JSON необходимо учитывать, какой тип данных содержится в переменной.
В примере переменная $age указана без кавычек, потому что она содержит число, а переменная $name указана в кавычках, потому что содержит данные строкового типа.

Обработка ответа

В ответ на запрос сервер возвращает данные, которые можно обработать или вывести клиенту.

Для этого на вкладке RESPONSE вы можете указать, какие данные вы хотите получить из ответа на запрос, и сохранить их в новые переменные.

Например, по адресу https://api.forismatic.com/api/1.0/?method=getQuote&format=json&lang=ru сервер возвращает ответ в формате JSON:

{
"quoteText": "Текст цитаты",
"quoteAuthor": "Автор цитаты",
"senderName": "Кто опубликовал цитату",
"senderLink": "Ссылка на профиль",
"quoteLink": "Ссылка на саму цитату на сайте"
}

Этот объект JSON сохраняется в системную переменную $httpResponse.

Чтобы сохранить данные из определенного поля объекта, укажите:

  • Имя переменной, в которую сохранятся данные.
  • Значение переменной через переменную $httpResponse.

Если запрос будет выполнен успешно, бот создаст переменные $quoteText и $quoteAuthor и запишет в них значения из ответа сервера.

httpResponse

Aimylogic сохраняет ответ от сервера в системную переменную $httpResponse.

Если сервер вернул ответ в формате JSON или XML, то Aimylogic автоматически конвертирует его в JavaScript-объект, с которым можно производить различные операции с помощью JavaScript-функций.

подсказка
Из ответа можно получить нужные данные, обратившись к соответствующим полям объекта.

Например, чтобы сохранить в новую переменную значение из поля quoteText, укажите $httpResponse.quoteText в качестве ее значения.

примечание

Здесь quoteText — поле из ответа, которое необходимо получить.

Если сервер вернет ответ не в формате JSON или XML, то в переменную $httpResponse сохранится вся строка без какой-либо обработки.

JavaScript

При создании переменных вы можете использовать любые JavaScript-выражения и функции, а также функции библиотеки Underscore, которая позволяет упростить работу с объектами и массивами.

Предположим, в результате запроса сервер вернул следующий объект JSON:

{
"items": [
{
"name": "апельсины",
"price": 150
},
{
"name": "мандарины",
"price": 200
}
]
}

Также предположим, что до этого в сценарии бот спросил у клиента, какой фрукт ему нужен, и сохранил ответ в переменную $choice.

Чтобы записать в переменную объект из массива items, потребуется следующее JavaScript-выражение:

_.findWhere($httpResponse.items, {name: "$choice"})

Функция будет искать в ответе объект, у которого значение поля name совпадает со значением переменной $choice.

Переходы после запроса

Блок HTTP-запрос имеет два выхода:

  • Завершен успешно, если в ответ на запрос сервер вернул код ответа от 200 до 299 включительно.
  • Завершен с ошибкой, если сервер вернул любой другой ответ.
подсказка
Код ответа автоматически сохраняется в системную переменную $httpStatus.