Как настроить действие "Внешний запрос" для отправки запроса, приема ответа, и дальнейшего использования полученных данных в боте
Общее описание действия внешний запрос можно найти тут: ссылка
Видео обзор данного сценария можно посмотреть тут: ссылка
С помощью действия Вншений запрос можно отправлять или запрашивать информацию у внешних сервисов, а после этого получать от них ответ и записывать его в пользовательские поля подписчиков.
Ниже рассмотрим самый простой сценарий использования действия Внешний запрос. Данный сценарий далек от реального использования, но зато он показывает все этапы настройки и весь функционал Внешнего запроса.
Описание сценария и его настройка:
В этом примере мы будем использовать АПИ сервиса swapi.dev. Данный сервис хранит в себе информацию о серии фильмов "Звездные войны": названия фильмов, персонажи и их характеристики, описания транспортных средств, планет, рас и т.д.
Другими словами, этот сервис - википедия по вселенной "Звездные войны"
Основные этапы сценария:
- Подписчик попадает в бота
- Бот отправляет запрос в сервис swapi.dev с id подписчика
- Сервис возвращает описание персонажа, у которого id такой-же как у подписчика
- Бот записывает имя персонажа в пользовательское поле и выводит это значение подписчику
Настройка бота
Собираем простую цепочку бота:
- Добавляем блок "Сообщение 1"
- Пишем приветственный текст
- Добавляем кнопку для перехода к следующему шагу
- Добавляем блок "Сообщение 2"
- Выводим пользователю его id
- По этому id внешний сервис будет находить персонажа в своей базе
- Добавляем блок "Действие 1"
- В этом блоке выбираем действие "Внешний запрос" (настройки внешнего запроса рассмотрим ниже"
- Добавляем блок "Сообщение 3"
- Выводим пользовательское поле, в которое будем записывать имя полученного от внешнего сервиса персонажа
- Соединяем все блоки и получаем вот такого небольшого бота:
Настройка Внешнего запроса
- После добавления действия Внешний запрос в блоке "Действие 1" кликаем на "карандашик", чтобы открыть окно редактирования Внешнего запроса. Все дальнейшие настройки будут проходить в открывшемся окне
- Вводим URL-адрес запроса
- В описании сервиса swapi.dev выбираем метод, который будет нам возвращать характеристики персонажа: https://swapi.dev/api/people/1/
- Копируем и вставляем адрес в поле "URL-адрес"
- В этом адресе "1" это id персонажа. Вместо этого значения вставляем макрос, который будет автоматически подставлять внутренний id подписчика. Для этого кликаем на иконку "<>" в поле URL-адрес и выбираем нужный нам макрос
- Итоговая ссылка: https://swapi.dev/api/people/{%bh_user_id%}
- Выбираем тип запроса
- Тип данного запроса - GET (эта информация должна быть на сайте внешнего сервиса с описанием его АПИ). Выбираем этот тип в выпадающем списке "Тип запроса"
- В данном методе не нужно заполнять Заголовки или Тело, поэтому переходим к тестированию запроса
- Чтобы перейти к тестированию запроса и убедиться, что всё работает корректно, и сервис возвращает корректный ответ, переходим на вкладку "Ответ" или кликаем на кнопку "Протестировать запрос"
- В открывшейся вкладке видим тестовые данные для используемых макросов. Значение по умолчанию: 10. При необходимости его можно изменить.
- Чтобы запустить тестирование, нажимаем на кнопку "Отправить запрос"
- В ответ нам приходит статус "200 ОК", значит внешний сервис получил наш запрос и успешно вернул на ответ
- В правой части окна в разделе "Тело ответа" можно посмотреть, что мы получили в ответ на наш запрос
- Нас интересует значение поля "name". Именно значение этого поля мы будем автоматически записывать в пользовательское поле подписчика.
- Настраиваем сопоставление ответов
- Сопоставление ответов позволяет настроить логику, которая из полученного тела ответа будет брать значение нужного поля и записывать его в указанное пользовательское поле подписчика
- Для этого нужно указать путь, по которому требуется находить нужное поле в теле ответа (подробнее читайте тут: ссылка), и само пользовательское поле, в которое нужно сохранять значение
- Для этого добавляем сопосталвение и заполняем появившиеся поля
- Значение JSON Path "$.name" вернет значение поля "name" из тела полученного ответа. В примере из тестирования значение было "Obi-Wan Kenobi"
- На этом настройка Внешнего запроса завершена
- Обязательно сохраняем его настройки кликом по кнопке "Сохранить"
- Обязательно сохраняем настройки открытого шага "Действие 1" кликом по кнопке "Сохранить и закрыть"
Тестирование бота с внешним запросом
- Запускаем тестирование бота
- В итоге получаем вот такую цепочку сообщений:
Я Дарт Вейдер, а кто Вы?🙂
Общее описание действия внешний запрос можно найти тут: ссылка
Если вы не нашли ответ на свой вопрос, задайте его нам в чате внутри кабинета либо напишите на hello@bothelp.io 😃
Получите 14 дней полного функционала платформы для создания рассылок, автоворонок и чат-ботов BotHelp:
Получить 14 дней бесплатно