*Чад Аримура — сооснователь и генеральный директор Iron.io, компании, разработавшей IronWorker, масштабируемый сервис для фоновых задач, и IronMQ, надежную службу очередей сообщений. Как разработчик веб-приложений с более чем 15-летним опытом, Чад является большим сторонником разработки приложений без сервера.*
*IronWorker — отличный способ добавить функции планирования в ваши мобильные и веб-приложения. Ниже приведена учебная программа для простого веб-приложения, которое Чад построил для поддержания расписания, когда порядок событий важен, используя Twilio.*
Twilio добавляет голос и сообщения в ваши веб- и мобильные приложения. Их разработчико-ориентированный API делает интеграцию голосовых и SMS-коммуникаций в ваши приложения невероятно простой. Если вы еще не попробовали Twilio, вы обязательно должны.
Мне потребовалось несколько хакатонов, чтобы понять, что IronWorker + Twilio — идеальная пара в мире приложений.
IronWorker предоставляет мощный облачный планировщик, что означает, что голосовые и SMS-коммуникации можно легко планировать и отправлять асинхронно из вашего приложения. Примеры включают отправку ежедневного текстового напоминания или создание конференц-связи, которая вызывает участников, когда начинается встреча.
В этом пошаговом руководстве я проведу вас через образец приложения, которое предоставляет образец кода для использования IronWorker и Twilio вместе. Держитесь за шляпы, это станет интересно!
Проект, который мы будем использовать для демонстрации, возник из личной необходимости и был частично вдохновлен победителем хакатона xHack, который построил приложение под названием Talk to the Future. Кодирование целый день может сделать трудным поддержание физической формы. Существует производная от P90X под названием Beachbody Insanity, и это одна из самых сложных ежедневных тренировочных программ, которые я когда-либо делал. Это 6 дней в неделю и требует распечатанного календаря, который необходимо вешать на стену и отслеживать каждый день, чтобы получить следующую тренировку и обеспечить их выполнение в линейном порядке.
Insanity Reminder — простое приложение, которое я построил, где пользователь вводит свой номер телефона, и текущая тренировка отправляется пользователю по SMS каждый день. Когда тренировка завершена, просто ответьте на текст со словом «готов» и вы получите следующую тренировку на следующий день. Если вы не ответите на SMS, то приложение будет продолжать отправлять вам одну и ту же тренировку.
Как вы, вероятно, догадались, Twilio обрабатывает исходящие и входящие SMS, а IronWorker обрабатывает как возможности планирования, так и обработку входящих SMS с помощью механизма обратного вызова.
Эта базовая структура приложения может фактически обрабатывать любой загруженный линейный список, но поскольку я сейчас делаю Beachbody Insanity, я подумал, что это будет более интересно. Плюс, мне придется включить некоторые цитаты Шона Т.
Вы будете использовать командную строку IronWorker, чтобы построить и отправить два работника на платформу IronWorker.
**send_insanity** извлекает последнюю тренировку из IronCache и использует API Twilio для доставки SMS,
**twilio_webhook** принимает входящий SMS-пayload (доставленный из функциональности обратного вызова Twilio), перемещает тренировку вперед и отправляет обратно небольшую вдохновляющую цитату Шона Т.
Затем мы будем использовать простое веб-приложение Ruby, которое планирует работник send_insanity каждый раз, когда новый пользователь регистрируется.
Давайте начнем!
Примечание: Iron.io поддерживает почти все языки программирования, однако вам необходимо иметь Ruby 1.9, установленный на вашем компьютере, чтобы использовать инструменты командной строки Iron.io.
**Зарегистрируйтесь** для бесплатных учетных записей в Iron.io и Twilio.com. **Создайте свой первый проект Iron**. Это ваше рабочее пространство и может быть использовано для всех сервисов Iron. Мы будем использовать как IronWorker, так и IronCache.- Установите гем iron_worker_ng (gem install iron_worker_ng). Рекомендуемый способ управления работниками — использование инструмента командной строки Iron.io, который предлагается в качестве рубинового гема.
— Выполните «bundle install» в каталоге twilio_insanity. Это установит гемы twilio-ruby и iron_cache.
— Заполните файл config/config.yml и файл workers/iron.json. Файл config.yml содержит учетные данные Twilio, необходимые в работниках для взаимодействия с API Twilio. Файл iron.json — это стандартный файл конфигурации Iron.io. Для получения дополнительной информации о конфигурации Iron.io посетите центр разработчиков Iron.io.
Изображение ниже показывает, где нужно кликнуть, чтобы получить ваши учетные данные Iron.io:
В том же каталоге, где находятся ваши файлы .worker (workers/ в данном случае), введите следующие команды: $ iron_worker upload send_insanity $ iron_worker upload twilio_webhook Инструмент командной строки Iron.io упакует и развернет оба на платформе Iron.io.
Перейдите на свой панель управления Twilio.com. Если вы еще не настроили номер, то в разделе «Получить бесплатный номер» нажмите ссылку «Получить номер сейчас». Затем вернитесь на панель управления и в разделе «Начало работы» нажмите ссылку «Настроить пробный номер».
Как только вы окажетесь там, возьмите этот URL IronWorker:
https://worker-aws-us-east-1.iron.io/2/projects/{PROJECT_ID}/tasks/webhook?code_name=TwilioWebhook&oauth={TOKEN}
Замените {PROJECT_ID} и {TOKEN} на значения, которые вы использовали на шаге 2 выше, затем вставьте этот URL в поле «URL запроса SMS» и убедитесь, что выпадающий список установлен на «POST». Сохраните изменения.
Это настроит Twilio на вызов URL обратного вызова IronWorker каждый раз, когда он получит SMS.
Перейдите в каталог с файлом web.rb. Это простое веб-приложение Sinatra.
$ ruby web.rb
Перейдите по адресу http://0.0.0.0:4567, чтобы получить доступ к теперь запущенному приложению Sinatra. Введите свой номер мобильного телефона и нажмите «Давайте сойдем с ума!» Вот и все! Если все прошло правильно, вы должны были получить SMS с первоначальной тренировкой, которая является «Fit Test». Вы также должны увидеть в разделе «Запланированные задачи», что есть одна запланированная задача. Вы можете добраться туда, перейдя на панель управления работником и нажав пункт меню «Запланированные задачи».
Наконец, чтобы перейти к следующей тренировке, просто ответьте на этот текст со словом «готово», которое скажет Twilio маршрутизировать текст на URL обратного вызова на шаге 4 выше, запустив вашего работника TwilioWebhook. Вебхуки — очень мощная концепция. Каждый работник имеет уникальный URL, на который можно отправить HTTP POST-запрос. Затем работник получает payload и ставится в очередь на выполнение немедленно. Вы можете посетить центр разработчиков Iron.io, чтобы узнать больше о них.
Как упоминалось ранее, планирование и обратные вызовы являются核心 того, что IronWorker привносит в Twilio. Вот некоторые другие примеры того, как планирование можно легко использовать:
Небо — предел с Twilio и Iron.io. Не стесняйтесь брать весь код из репозитория iron_worker_examples Iron.io (это демонстрационное приложение находится в папке ruby_ng) и начинайте строить приложения сами!
Перейдите в комнату чата Iron.io, которую мы любим говорить, что она обычно отслеживается инженерами 23/6,8. Все вопросы/отзывы приветствуются.
Узнайте больше в новом центре разработчиков Iron.io.
Посетите www.iron.io, чтобы получить больше информации и зарегистрироваться!
Спасибо за чтение, и дайте мне знать, что вы думаете об этой статье.