*Мы любим видеть, как Деятели применяют свои навыки на практике, и это смешивание API — отличный пример того, как доступные интерфейсы помогают мгновенно решить возникшую потребность. Трин Мирелл (Tryn Mirell) понадобилась простая система голосовых напоминаний, чтобы следить за тем, чтобы кошачий лоток всегда был свежим и чистым. Для этого она создала приложение с помощью Heroku и Twilio Voice.*
Материал ниже изначально был опубликован на https://mirell.org/posts/heroku_and_twilio
Я чищу кошачий лоток недостаточно часто. Это правда. Хотя кошки мяукают мне по этому поводу, они также мяукают из-за… ну, из-за чего угодно.
Поэтому я решила немного изучить Heroku и Twilio.
Heroku — это сервис, который, по крайней мере изначально, позволял запускать различные веб-приложения на Ruby, всё, что совместимо с Rack. (С тех пор они расширили поддержку на множество других программных стеков, которые я еще не изучала). Он основан на развертывании через git: вы создаете git-репозиторий, используете клиент Heroku для создания приложения и отправляете свой код.
Twilio по сути использует REST API для взаимодействия с телефонными звонками. Когда вы получаете телефонный звонок, сервис отправляет POST-запрос с различной информацией. Он также отправляет POST-запрос при совершении звонка, что позволяет вам контролировать ход разговора.
API в основном состоит из двух частей: одна позволяет инициировать действия, а вторая представляет собой пользовательский формат XML, используемый для телефонных звонков.
Таким образом, чтобы позвонить мне, мне понадобились две вещи: компонент, использующий API Twilio для самого звонка, и сервис, отвечающий на POST-запрос, чтобы сказать что-то во время разговора.
Результатом этих усилий стал репозиторий twilio-heroku.git, немного очищенный от лишнего.
Последним элементом является Rakefile, который фактически использовался для инициирования звонков:
require ‘ripl’
require ‘twilio-ruby’
account_sid = ‘BLAH’
auth_token = ‘BLAH’
@client = Twilio::REST::Client.new account_sid, auth_token
@account = @client.account
@call = @account.calls.create({
:from => ‘+15124100439’,
:to => ‘+15127963592’,
:url => ‘http://morning-waterfall-2958.herokuapp.com/’
})
Затем это было добавлено как задача в Rakefile, а планировщик Heroku был настроен на ежедневный запуск этой задачи.
Теперь каждый день мне звонит милая женщина. И это здорово. Несмотря на то, что она — робот.
*Трин Мирелл — инженер-программист из Остина, штат Техас. Читайте ее блог на www.mirell.org и подписывайтесь на нее в Twitter @mirell*