Ви можете створювати ботів, які взаємодіють з іншими сервісами через API. Наприклад, боти можуть надсилати запити для перевірки доступності на певну дату або для пошуку товару в інтернет-магазині.
Як взаємодіяти зі сторонніми API на прикладі Dadata
Візьмемо для прикладу API підказок адрес: https://dadata.ru/api/suggest/address/ посилання буде інше
Уважно читайте документацію сторонніх API.
Зверніть увагу! Сторонні API вимагають IP-адреси, з яких надсилатимуться запити: 158.160.49.208 – вебсайт.
У полі "URL запиту" введіть https://suggestions.dadata.ru/suggestions/api/4_1/rs/suggest/address.
У полі "Заголовок запиту" введіть заголовок у форматі JSON: {"Content-Type": "application/json", "Accept": "application/json", "Authorization": "Token " + token}.
У полі "JSON параметри" введіть сам запит: {"query": "#{CurrencyType}"}.
Щоб отримати результат запиту, заповніть поле "Збережені значення".
Приклад запиту показано на ілюстрації нижче.
Як зберігати значення зі змінних
Спочатку може бути не зовсім зрозуміло — потрібно спробувати на практиці.
Спочатку введіть #{custom_answer} у полі "Відповідь". (Змінна #{custom_answer} містить відповідь, отриману від сервера, вказаного в полі "URL відповіді".)
Запустіть блок запиту, щоб надіслати запит і отримати відповідь. Отриману відповідь потрібно проаналізувати та налаштувати, які змінні з неї витягувати. Для цього використовуйте поле "Збережені значення".
Розглянемо приклад, описаний вище.
Найкраще зрозуміти, як звертатися до даних у JSON, на прикладі. У результаті нашого запиту відповідь, отримана в #{custom_answer}, виглядає так:
{ "suggestions": [ { "value": "US Dollar", "unrestricted_value": "US Dollar", "data": { "code": "840", "strcode": "USD", "name": "US Dollar", "country": "United States" } } ] }
У полі "Збережені значення" введіть ЗНАЧЕННЯ -> ЗМІННА:
suggestions|0|value->CurrencyType;
suggestions|0|data|code->CurrencyDigCode;
suggestions|0|data|strcode->CurrencyStrCode;
suggestions|0|data|country->CurrencyCountry
suggestions - ключ для масиву [{"value": "US Dollar", "unrestricted_value": "US Dollar", "data": {"code": "840", "strcode": "USD", "name": "US Dollar", "country": "United States"}}]
suggestions|0 - ключ для першого елемента масиву {"value": "US Dollar", "unrestricted_value": "US Dollar", "data": {"code": "840", "strcode": "USD", "name": "US Dollar", "country": "United States"}}
suggestions|0|value - ключ для значення "US Dollar"
Найдовший ключ у цьому JSON:
suggestions|0|data|strcode - ключ для значення "USD"
Ключі розділяються вертикальною рискою (|). Якщо елемент JSON є масивом, ви звертаєтеся до його елементів за індексом, починаючи з 0, і це також записується за допомогою вертикальної риски.
Потрібно повторити всю вкладеність. Для зручності ви можете візуалізувати JSON за допомогою програми для перегляду JSON.
Рівень вкладеності розділяється вертикальною рискою. Тобто потрібно перерахувати всі ключі, щоб дістатися до значення, розділяючи їх вертикальною рискою.
Якщо JSON містить масив, використовуйте індекс елемента замість ключа, починаючи з нуля.
Розділіть вирази для отримання наших змінних крапкою з комою ;.
Кожен вираз складається зі шляху до даних у відповіді та назви змінної для її збереження, розділених ->.
Пошуковий запит представляє шлях у JSON до потрібного значення.
Розробка API для ботів
Бот підтримує GET та POST запити, які є основними типами, що використовуються в більшості публічних API.
GET — це запит, який відбувається, коли ви натискаєте посилання або відкриваєте URL у браузері. Параметри в цьому запиті передаються в URL.
Синтаксис передачі параметрів: після URL поставте знак питання ?, потім розділіть кожен параметр амперсандом &. Кожен параметр складається з назви, після якої йде = та його значення.
Приклад URL з параметром:
Тут передається один параметр q зі значенням "good music". %20 позначає пробіл.
Працюючи з конструктором, ви можете просто використовувати пробіл — бот замінить його автоматично.
POST — це запит, який найчастіше надсилається під час надсилання форми на вебсайті. Параметри надсилаються в тілі запиту. Хоча їх також можна надсилати в URL, як у GET запитах, це рідко. Параметри в тілі можуть бути у форматі JSON або як пари ключ-значення. Форми зазвичай надсилають пари ключ-значення, тоді як API найчастіше використовують JSON.
Заголовок запиту — ви можете додати заголовок до кожного запиту. Найчастіше в ньому вказується формат даних та ключі доступу. Зазвичай це поле залишають порожнім, але в рідкісних випадках потрібно включити токен API або тип запиту, наприклад, "Content-Type": "application/json".
JSON (JavaScript Object Notation, зазвичай вимовляється /ˈdʒeɪsən/ JAY-sən) — це текстовий формат обміну даними, заснований на JavaScript. Як і багато інших текстових форматів, JSON легко читається людиною. Для роботи з API в боті потрібно розуміти цей формат, оскільки він лежить в основі всіх взаємодій.
Перш ніж продовжити, прочитайте наступні статті:
https://www.json.org/json-ru.html
https://developer.mozilla.org/ru/docs/Learn/JavaScript/%D0%9E%D0%B1%D1%8A%D0%B5%D0%BA%D1%82%D1%8B/JSON
Також спробуйте створити власний JSON-файл на цьому вебсайті:
Практика
Запити можуть виконуватися блоками та умовами. Умовні запити призначені для перевірки того, чи може діалог слідувати певній гілці на сайті. У цьому випадку запит надсилається щоразу, коли оцінюється умова гілки. Запити в блоках, навпаки, виконуються лише тоді, коли діалог входить у цей стан.
Перш ніж створити запит, потрібно вибрати його тип:
POST-data та POST-JSON відрізняються способом передачі параметрів, як згадувалося раніше (у форматі JSON або як пари ключ-значення). Якщо ви виберете JSON, параметри можна надсилати лише в тілі запиту. З'явиться додаткове поле для JSON POST параметрів.
Важливо! Параметри повинні бути записані лише у форматі JSON, оскільки бот працює виключно з ним. Ви вже практикувалися писати JSON.
Відповідь від сервера можна розібрати та зберегти у змінні.
Ви можете розібрати відповідь, лише якщо вона у форматі JSON.
Збережені змінні записуються в останню незаповнену форму. Якщо форма надсилається через червоний блок, змінні відкидаються. Тому, якщо потрібно зберегти ці дані, передайте змінні в CRM-систему через жовтий блок.
Ви також можете побачити, що бот записав у змінні, у розділі "Ліди".
Передача змінних не як рядок
За замовчуванням значення змінних мають бути рядками у форматі "#{}", але в цьому випадку змінна надсилається як рядок. Щоб передати змінну як число, потрібно вимкнути перевірку формату параметрів у налаштуваннях проекту:

Потім ви можете просто використовувати назву змінної, наприклад: {"key": #{variable_name}}, де variable_name — це сама змінна, без лапок навколо.
Рекомендується знову ввімкнути перевірку формату після налаштування параметрів.


