В детстве мой отец рассказывал мне истории о том, как он резал ¼-дюймовую ленту бритвой, чтобы склеивать аудиофрагменты. У него не было GarageBand, ProTools или Abelton. Аналоговый мир может быть менее снисходительным, чем цифровой, и требует огромных усилий и точности.
В мире программного обеспечения легко забыть о временах аналоговых технологий. Вместо программирования материнских плат мы пишем несколько строк кода. Теперь, с таким количеством API и сторонних сервисов, вместо написания кода мы используем визуальные среды разработки и находимся в нескольких кликах от запуска бэкенда.
Stamplay чтит аналоговые времена, но твёрдо стоит на позиции «в нескольких кликах от деплоя». Они предлагают разработчикам предельно простой интерфейс для создания и запуска рабочих процессов с использованием таких API, как Mailchimp, KeenIO, Firebase, Twilio и других. Представьте IFFT или Zapier, но для API.
В духе упрощения всего и вся Исайя Грей из Stamplay создал простую демонстрацию, показывающую, как можно создать сервис SMS-оповещений о погоде с использованием Twilio и NodeJS. Без лишних слов, вот туториал от Исайи и видео-инструкция.
Наш сервис будет работать по следующим шагам:
— Пользователь отправляет SMS на номер, предоставленный Twilio, который передаёт название города в наш бэкенд Stamplay.
— Задача Stamplay перехватывает SMS с помощью интеграции с Twilio и передаёт её в пользовательский блок кода.
— Наш пользовательский блок кода получает данные о погоде для города, формирует ответное сообщение из этих данных и выводит сообщение.
— Другая задача Stamplay выполняется после завершения выполнения блока кода и использует полученный вывод для ответа на исходный SMS-номер с данными о погоде на текущий день.
Попробуйте отправить сообщение на номер **+1 628 600 1473** с названием города (например, «Нью-Йорк»). Также можно получить прогноз на целую неделю, добавив слово «прогноз» после названия города (например, «Нью-Йорк прогноз»).
Необходимые аккаунты:
— Twilio
— Stamplay
После создания аккаунта в Twilio перейдите в настройки аккаунта, чтобы получить учётные данные API: AccountSID и AuthToken. Их можно найти здесь.
В Stamplay на левой панели выберите «Tasks», затем «Components». Выберите компонент Twilio из списка.
Далее в конфигурации компонента Twilio добавьте учётные данные Twilio в соответствующие поля. Теперь мы готовы использовать Twilio в нашем приложении Stamplay.
Сначала нам нужно инициализировать блок кода в Stamplay. Блоки кода — это пользовательские RESTful-эндпоинты в нашем приложении Stamplay. Создайте новый, выбрав «Code Blocks» на левой панели и введя название для нашего блока кода. Назовём его weather.
Наш новый блок кода должен выглядеть так.
Перейдите в раздел «Tasks» в Stamplay и создайте новую задачу. Настройте новую задачу так, чтобы она запускалась при получении нового SMS от Twilio и выполняла блок кода.
На втором шаге выберите номер из выпадающего списка, который будет запускать эту задачу при получении SMS.
При создании аккаунта в Twilio вам автоматически предоставляется номер Twilio. Вы можете увидеть свои номера здесь. Если у вас его нет, вы можете легко приобрести.
Ниже выпадающего списка, где мы выбрали номер Twilio, скопируйте поле ввода с URL обратного вызова и перейдите на страницу номеров телефонов Twilio.
Выберите номер, который использовался для запуска задачи в Stamplay.
Затем в приглашении добавьте URL обратного вызова в поле «Request URL».
Теперь вернёмся в Stamplay и завершим настройку задачи.
Мы передадим номер телефона, отправившего исходное сообщение, как свойство to в объекте JSON, так как этот номер будет использоваться после выполнения блока кода для отправки ответного сообщения. Свойство body — это название города и, если присутствует, опция прогноза, которую мы объясним позже при работе с блоком кода.
После третьего шага назовите свою задачу и перейдите к редактированию блока кода.
Внутри нашего блока кода сначала подключим все необходимые npm-пакеты.
Затем нужно добавить наш API-ключ от Open Weather Map, откуда мы будем получать данные.
Переменная type внутри нашего блока кода используется для проверки, была ли передана опция прогноза. Это означает, что помимо названия города, если пользователь добавил слово «прогноз», мы отправим ему прогноз на 5 дней вместо текущей погоды в городе.
При формировании строки запроса для API-запроса мы передадим название города как параметр q, наш API-ключ как параметр APPID и тип единиц измерения, в которых мы хотим получить информацию. Я выбрал имперские единицы, но доступны и метрические.
Блок if определяет, какой запрос выполнять. Внутри начального if, если type равен weather, мы получаем данные о текущей погоде в городе.
Чтобы увидеть все доступные данные в JSON-ответе на запрос текущей погоды, ознакомьтесь со всеми опциями здесь.
Иначе, если type равен forecast, выполняется блок else. Наш запрос получает прогноз на 5 дней, который мы перебираем и формируем читаемое сообщение для отправки пользователю. Обратите внимание, что мы перебираем данные с шагом 8. Это связано с тем, что в прогнозе предоставляются данные на каждые 3 часа дня, что даёт нам 8 блоков в сутки. Для краткости мы решили отправлять только первые 3 блока каждого дня.
После формирования ответа мы выводим недельные данные как свойство body и свойство to.
Далее запускаем этот блок кода при выполнении блока кода weather.
Установите сообщение для отправки как свойство body из вывода нашего блока кода, а поле **To** как свойство to из вывода блока кода.
Выберите номер Twilio, с которого вы хотите отправить сообщение.
Назовите задачу и нажмите «Сохранить». Теперь мы можем протестировать наш сервис.
Для тестирования сервиса просто отправьте сообщение на ваш номер Twilio с подтверждённого номера в Twilio.
Чтобы подтвердить номер, перейдите по ссылке https://www.twilio.com/user/account/phone-numbers/verified и добавьте его. После подтверждения отправьте название города на ваш номер, и вы должны получить ответное сообщение через несколько секунд.
Вот и всё, теперь мы можем получать текущую погоду и прогноз по SMS!
С помощью Twilio мы смогли очень быстро и легко интегрировать возможности SMS и подключиться к системе задач Stamplay, чтобы предоставлять ценность нашим пользователям.
*Узнайте больше о Stamplay и создавайте новые приложения здесь*