С помощью этого блока ваш бот может получать данные от внешнего ресурса и сохранять их в переменные.

Параметры



Нужно обязательно указать URL запроса и метод (по умолчанию GET).

Подробнее об HTTP и поддерживаемых методах можно узнать здесь

Переменные в URL

В адресе запроса вы можете использовать переменные. Для этого используйте запись вида

https://yandex.ru/search/?text=${queryText}

Здесь queryText - это переменная, в которой хранится запрос пользователя. Бот автоматически подставит его в URL перед выполнением запроса.

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

Заголовки

На вкладке Headers вы можете указать заголовки запроса, если это необходимо. Там вы тоже можете использовать переменные, но в обычном формате, без фигурных скобок.



Тело запроса

Для всех методов, кроме GET, вы можете заполнить тело запроса на вкладке Body. В теле запроса можно указать данные в любом формате (JSON, XML, произвольный текст) и тоже можно подставлять переменные.



В примере на скриншоте выше мы передадим на сервер JSON, в который бот автоматически подставит значения из переменных age и Name.

Обратите внимание, что $age мы подставили без кавычек, в то время как $Name - в кавычках. Потому что age (возраст) в нашем сценарии содержит целое число, а Name (имя пользователя) - строку, поэтому, чтобы JSON был валидным, нужно заключить Name в кавычки.

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

В ответ на запрос сервер как правило возвращает какие-то данные, которые вам захочется проанализировать или вывести на экран пользователю. Для этого на вкладке Response вы можете указать боту, как нужно "вытаскивать" из результата запроса те или иные переменные.



Здесь мы говорим боту, что в случае успешного запроса он должен создать две переменные - quoteText и quoteAuthor и записать в них соответственно значения из JSON ответа сервера.

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

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


httpResponse

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

Таким образом из ответа можно вытащить какие-то данные, просто обратившись к нужным полям объекта. Например, чтобы получить переменную quoteText нужно написать $httpResponse.quoteText (не забудьте указать знак $ перед httpResponse).

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

Javascript

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

Например, если в результате запроса сервер возвращает примерно такой результат

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


то выражение вида

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

запишет в указанную переменную объект из массива items, где поле name совпадает со значением ранее полученной переменной Item (например если ранее мы спросили у пользователя, какой товар он ищет).

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

Запрос может завершиться удачно (если сервер вернул код ответа от 200 до 300) или неудачно (любой другой код). Блок HTTP запрос имеет два перехода на следующий экран - для удачного и неудачного результата запроса.

Сам код ответа бот запишет в системную переменную httpStatus.
Была ли эта статья полезна?
отменить
Спасибо!