Як отримати дані з API за допомогою send_request
Action send_request дозволяє отримувати дані з зовнішніх API та обробляти відповідь в сценарії. Це корисно для отримання курсу валют, погоди, інформації про замовлення з CRM та інших даних.
Як працює отримання даних?
- Action
send_requestвідправляє HTTP запит на вказаний URL - Отримує відповідь у форматі JSON
- Обробляє відповідь через
response_mappingабо зберігає в state - Дані стають доступними в сценарії через плейсхолдери
Обробка JSON-об'єкту у відповідь
Приклад 1: Отримання дня тижня
Конфігурація:
{
"url": "http://worldclockapi.com/api/json/est/now",
"method": "GET",
"response_mapping": {
"dayOfTheWeek": "today"
}
}
Пояснення:
response_mappingвказує, в який плейсхолдер записати параметр відповіді- Параметр з API
dayOfTheWeekбуде доступний в конструкторі як{{today}}
Використання в сценарії:
Після виконання action send_request з такою конфігурацією, ви можете використовувати {{today}} в наступних блоках сценарію для відображення дня тижня.
Обробка масиву об'єктів у відповідь
Приклад 2: Отримання курсу валют
Конфігурація:
{
"url": "https://api.privatbank.ua/p24api/pubinfo?json&exchange&coursid=5",
"method": "GET",
"response_mapping": {
"list_obj": {
"text": "{{ccy}}/{{base_ccy}}",
"value": "{{buy}}"
}
},
"save_mapped_list_obj": "currency_mapped_obj"
}
Пояснення конфігурації:
list_obj— вказує, що ми обробляємо масив об'єктівtext— текст, який буде відображатися (може містити плейсхолдери з відповіді API)value— значення, яке буде збережено при виборі (може містити плейсхолдери з відповіді API)save_mapped_list_obj— назва змінної, в яку буде збережено оброблений масив
Приклад відповіді API:
[
{
"ccy": "USD",
"base_ccy": "UAH",
"buy": "36.56860"
},
{
"ccy": "EUR",
"base_ccy": "UAH",
"buy": "40.20000"
}
]
Результат обробки:
Після обробки currency_mapped_obj буде містити:
[
{
"text": "USD/UAH",
"value": "36.56860"
},
{
"text": "EUR/UAH",
"value": "40.20000"
}
]
Використання в блоці "Список":
В блоці "Список" вкажіть змінну {{currency_mapped_obj}} як джерело даних. Блок буде отримувати дані про курс валют і виводити їх кнопками.
Використання результату вибору:
Після вибору користувачем валюти, ви можете використовувати результат в сценарії, наприклад вивести курс валюти.
Збереження необробленого результату запиту
Якщо до блоку send_request додати параметр конфігурації save_responce, результат виконання запиту буде записаний в state у змінну:
{
"url": "https://api.example.com/data",
"method": "GET",
"save_responce": "currency_arr"
}
Після виконання запиту, весь JSON відповідь буде доступна в змінній {{currency_arr}} для подальшої обробки через action jail або інші механізми.
Обробка помилок
Якщо API запит завершився помилкою:
- Action повертає
"not_ok" response_mappingне виконуєтьсяsave_responceне зберігається
В сценарії можна обробити подію "not_ok" для:
- Повторної спроби
- Відправки повідомлення користувачу
- Використання резервного джерела даних
Обмеження
response_mappingпрацює тільки з успішними відповідями (HTTP 200)- Максимальний розмір відповіді обмежений налаштуваннями системи
- Складні вкладені структури можуть потребувати додаткової обробки через action jail