Деятели в действии: простое голосовое напоминание с Heroku и Twilio. Одобрено котиком.

Автор: | 16.07.2026

*Мы любим видеть, как Деятели применяют свои навыки на практике, и это смешивание 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*