HttpRequest
Действие HttpRequest
позволяет боту выполнять HTTP-запросы,
чтобы получать данные от внешних ресурсов и сохранять их в переменные.
подсказка
Если вы хотите выполнять HTTP-запросы без тегов действий, но из вставок JavaScript-кода,
используйте встроенный сервис
$http
.Параметры
Параметр | Тип | Описание | Обязательный |
---|---|---|---|
url | Строка | URL запроса. | Да |
method | Строка | Метод запроса. Возможные значения: • GET • POST • PUT • DELETE | Да |
dataType | Строка | Тип передаваемых данных. Значение этого параметра определяет значение HTTP-заголовка Content-Type : • json (значение по умолчанию) — application/json . • xml — application/xml . • text — text/plain . Вы также можете напрямую указать заголовок Content-Type в параметре headers : он будет иметь приоритет над dataType . | Нет |
body | С трока | Тело запроса. Можно указать данные в любом формате (JSON, XML, произвольный текст), а также использовать переменные. | Нет |
timeout | Число | Время ожидания ответа в миллисекундах. Если время ожидания будет превышено, диалог перейдет в стейт, указанный в параметре errorState , а если errorState не указан — в корень сценария / . | Нет |
headers | Массив объектов | Заголовки запроса. Укажите значение в формате:
| Нет |
vars | Массив объектов | Переменные, в которые будут сохранены данные из ответа. | Нет |
okState | Строка | Стейт, в который перейдет диалог, если сервер вернет код успешного ответа (в промежутке 200–300). Код ответа сохраняется в переменную $session.httpStatus . | Нет |
errorState | Строка | Стейт, в который перейдет диалог, если сервер вернет код неудачного ответа (не в промежутке 200–300). | Нет |
Сохранение данных в переменные
С помощью параметра vars
вы можете сохранить данные из ответа на успешный HTTP-запрос.
- JAICP сохраняет ответ от сервера в локальную переменную
$httpResponse
. К этой переменной можно обращаться только внутри тегаHttpRequest
.
подсказка
Ответ также сохраняется в сессионные данные как
$session.httpResponse
.
Обращайтесь к этому полю, если хотите использовать данные из ответа в другом стейте.
При каждом вызове тега HttpRequest
значение поля перезаписывается.-
В значении параметра
vars
укажите массив объектов с полямиname
иvalue
, где:name
— имя переменной. Вычисленное значениеvalue
будет сохранено в$session.<name>
.value
— выражение с использованием переменной$httpResponse
для доступа к нужным полям ответа.
предупреждениеВ значенииname
используйте символы Aa–Zz, _, 0–9. Первым символом в имени должна быть буква. Нельзя использовать зарезервированные слова JavaScript.
- Пример копирования данных из ответа
- Пример с предобработкой ответа
Сервер возвращает в ответе текст случайной цитаты и имя ее автора:
{
"quoteText": "И все-таки она вертится!",
"quoteAuthor": "Галилео Галилей"
}
Чтобы сохранить их в переменные $session.quoteText
и $session.quoteAuthor
, укажите такое значение параметра vars
:
vars =
[
{
"name": "quoteText",
"value": "$httpResponse.quoteText"
},
{
"name": "quoteAuthor",
"value": "$httpResponse.quoteAuthor"
}
]
Сервер возвращает в ответе набор продуктов:
[
{
"name": "апельсины",
"price": 150
},
{
"name": "мандарины",
"price": 200
}
]