Блок API

API — (программный интерфейс приложения, интерфейс прикладного программирования) (англ. application programming interface) — описание способов (набор классов, процедур, функций, структур или констант), которыми одна компьютерная программа может взаимодействовать с другой программой.

Блоку API задается имя, опции (стартовое сообщение, дождаться ответа удаленного сервиса). Настройки заголовков, параметров (переменных, постоянных).

Пример

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

Самый простой для доступа к API — сервис погоды openweathermap.org.

Регистрируемся и получаем ключ приложения (APPID) по ссылке. Обычно ключ дублируется в email письме подтверждения.

Тестируем наш запрос в браузерной строке с городом Москва. Он выглядит так: http://api.openweathermap.org/data/2.5/weather?q=Москва&APPID=c12618e22638e74315c4cb17c85896d7

Ответ от сервера получаем такой

Блок API

Для удобства копируем код запроса в json валидатор, например https://jsonlint.com/ и смотрим структуру запроса. Она выглядит так:

Блок API 2

Температура находится в строке 14, параметр main.temp и равна 273,15 (Температура по Фаренгейту).

С запросами к сервису погоды разобрались. Переходим к настройке отправки запроса от бота и вывод в чат.

Создаем группу сообщений, добавляем 3 блока сообщений, 1 блок API, 1 условный блок. Цепочка выглядит так:

Блок API 3

Переходим в блок сообщения под именем «Название города» и смотрим, что внутри.

Блок API 4

Этот блок является стартовым сообщением, с опцией «подождать ответ». Cохраняем ответа от пользователя в контекстную переменную «city». Текстом сообщения: «Введите город» и ссылкой по умолчанию на блок «API».

В блоке «Название города» спрашиваем у подписчика бота, в каком городе он хочет узнать погоду. Ответ сохраняем в переменную и переходим в блок «API».

Блок API 5

Включена опция «Дождаться ответа удаленного сервиса». Означает что запросы будут отправляться до тех пор, пока не получится результат. Положительный или отрицательный.

В поле «Ссылка» копируем http запрос к API сервиса погоды. Ссылка выглядит так: http://api.openweathermap.org/data/2.5/weather

Тип запроса – get.

Заголовки

Добавляются в http запрос переменные и постоянные. Слева название заголовка, справа значение. В примере использовать не будем.

Параметры

Параметры можно передавать в http запрос, переменные и постоянные. Слева название параметра, справа значение. В нашем примере используем опцию.

Параметр «q» — передается в http запросе и соответствует контекстной переменной «city». Является переменным параметром, так как от каждого подписчика получаем запросы к разным городам. Полученная информация от подписчика подставляется в запрос к API погоды.

Параметр APPID соответствует полученному API ключу в сервисе погоды. Является постоянным параметром, так как каждый запрос обращается с конкретным ключом доступа.

Сохранение результатов

Данные которые получим при ответе на http запрос должны быть в json. Сохраняем в контекстную переменную. Слева имя контекстной переменной, справа путь к данным, которые сохраняем.

При ошибке, значение «cod» будет 404 и сохранится в переменную «error». Полученная температура имеет путь main.temp, значение сохраняем в переменную «temp».

Настройки блока API закончили и переходим в условный блок для сравнения ответа от сервера.

Блок API 6

Условие Context.error!=»404″ означает, что при коде ошибке НЕ РАВНОМ 404 происходит переход в блок «Успех».

Условие Context.error==»404″ означает, что при коде ошибке 404 происходит переход в блок «Повторный запрос».

Переходим в блок «Успех».

Блок API 7

Текст сообщения: «Погода в Context.city Context.temp градусов».

Вместо переменных подставляются полученные значения от сервера и финальный ответ выглядит так: Погода в Москве 274.72 градусов.

Блок API 8

Переходим в блок «Повторный запрос».

Блок API 9

Текст сообщения: «Не верно. Введите заново город». Ответ от пользователя сохраняем в переменную «city» и происходит переход в блок «API» для нового запроса к серверу.

Остались вопросы?

Напишите нам в техническую поддержку

Vkontakte Telegram Чат

Спасибо за /обращение, мы скоро с тобой свяжемся!

Bot Kits — помогаем упростить процесс общения с клиентами.

Спасибо