SMS и MMS маркетинговые уведомления с использованием Ruby и Rails

Автор: | 09.08.2026

Готовы реализовать SMS и MMS маркетинговые уведомления для вашего приложения на Ruby on Rails? Эта статья для вас!

Вот как это будет работать на высоком уровне:

— Пользователь, которого вы хотите охватить, отправляет SMS-сообщение на Twilio-номер телефона, который вы где-то рекламируете.

— Ваше приложение подтверждает, что пользователь хочет получать SMS и MMS уведомления.

— Администратор или менеджер маркетинговой кампании использует веб-форму для создания сообщения, которое будет отправлено всем подписчикам через SMS/MMS.

Для реализации этого вы будете работать со следующими инструментами Twilio:

**TwiML и глагол :** Мы будем использовать TwiML для управления взаимодействиями, инициированными пользователем через SMS.

**Ресурс Messages:** Мы будем использовать REST API для рассылки сообщений всем подписчикам.

Давайте начнем!

Мы начинаем с создания модели Active Record, которую будем хранить в базе данных PostgreSQL. Для наших целей нам не нужно хранить много информации о подписчике — только его номер телефона (чтобы отправлять обновления) и булевый флаг, указывающий, подписан ли он на получение обновлений.

Мы используем команду Rails generate для создания нашей модели:

`bin/rails generate model Subscriber phone_number:string subscribed:boolean`

Этот генератор создает нашу модель, миграцию и схему. Теперь всё, что нам нужно сделать, это выполнить `rake db:migrate`, и у нас будет таблица Subscribers.

Теперь, когда у нас есть объект модели для сохранения `Subscriber`, давайте перейдем на уровень контроллера, чтобы увидеть, как мы принимаем входящие сообщения.

Поскольку функция `incoming` будет вызываться каждый раз, когда наше приложение получает сообщение, она должна реализовывать много бизнес-логики.

Мы рассмотрим, как работает эта функция по частям по мере продолжения урока, но сейчас сосредоточимся на первом сообщении, которое пользователь отправляет нам.

Предполагая, что пользователь не существует, мы добавим его как потенциального подписчика. Именно к этому мы и переходим далее.

Сначала мы получаем номер телефона пользователя из входящего запроса Twilio. Затем пытаемся найти модель `Subscriber` с этим номером телефона (это должно быть уникальное свойство модели `Subscriber`).

Если подписчика с таким номером телефона нет, мы создаем его, сохраняем и отвечаем дружелюбным сообщением с просьбой отправить текст «add». Мы требуем этот двухэтапный процесс подписки на маркетинговые уведомления, чтобы наши клиенты оставались довольными.

Теперь мы создали модель `Subscriber` для отслеживания людей, которые хотят получать наши сообщения, и научились сохранять их в базе данных, когда они впервые отправляют нам сообщение.

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

Мы хотим предоставить пользователю две SMS-команды для управления статусом подписки: `add` и `remove`.

Эти команды будут переключать булевый флаг в записи `Subscriber` в базе данных и определять, будут ли они получать сообщения от нашей маркетинговой кампании. Поскольку мы хотим уважать предпочтения наших пользователей, мы не подписываем их автоматически — вместо этого мы просим их подтвердить, что они хотят получать от нас сообщения.

— Если пользователь уже есть в базе данных, разбираем сообщение, которое он отправил, чтобы понять, является ли оно командой, которую мы распознаем.

— Если это команда `add` или `remove`, обновляем статус подписки в базе данных.

— Если это команда, которую мы не распознаем, отправляем сообщение с объяснением двух доступных команд.

На сервере сначала получаем текст входящего сообщения и необязательный URL изображения из тела POST-запроса. Затем проходим циклом по всем подписчикам и вызываем функцию в нашей модели `Subscriber` для отправки маркетингового сообщения.

Когда сообщения отправлены, перенаправляем обратно на ту же веб-форму с flash-сообщением, содержащим обратную связь о попытке отправки.

Теперь давайте перейдем к модели, чтобы увидеть, как отправляются эти сообщения.

При загрузке объекта модели создается клиент Twilio REST API, который можно использовать для отправки SMS и MMS сообщений. Клиенту требуются учетные данные вашего аккаунта Twilio (идентификатор аккаунта SID и токен авторизации), которые можно найти в консоли.

Далее всё, что нам нужно сделать, это вызвать `messages.create` на объекте клиента, чтобы отправить наше сообщение. Вызов API сообщений Twilio требует параметров `From` и `To`, а также атрибута `Body` или `MediaUrl` (или обоих).

Эти девять строк кода — всё, что нужно для отправки SMS в Rails.

На этом урок завершен! Далее мы рассмотрим другие легко реализуемые функции.

Вот и всё! Мы только что реализовали процесс подписки и административный интерфейс для запуска SMS и MMS маркетинговой кампании через ваш сайт на Ruby on Rails. Теперь всё, что вам нужно, — это классный контент для отправки вашим пользователям через SMS или MMS… и это уже зависит от вас и вашей команды.

Twilio любит Ruby! Вот лишь несколько наших других руководств по Ruby:

С помощью Warm Transfers ваши агенты смогут подключать другого агента в реальном времени.

Мгновенно собирайте структурированные данные от ваших пользователей с помощью опроса, проводимого через голосовой звонок или SMS.

#### Помогла ли эта статья?

Спасибо за ознакомление с этим руководством! Пожалуйста, дайте нам знать, что вы создаете, написав в Твиттере @twilio!