Уведомления о расчетном времени прибытия с Ruby и Rails

Автор: | 08.08.2026

Такие компании, как Uber, TaskRabbit и Instacart, построили целую индустрию на том факте, что мы, клиенты, любим заказывать вещи *мгновенно*, где бы мы ни находились. Ключ к работе этих сервисов? Уведомление клиентов об изменениях.

В этом руководстве мы создадим систему уведомлений для вымышленной службы прачечной по запросу *Laundr.io* с использованием Ruby on Rails.

Давайте начнем! Нажмите кнопку ниже, чтобы продолжить.

Есть два случая, которые мы хотели бы обработать:

— Курьер забирает белье для доставки (

`/initial_notifications`

) — Курьер прибывает к дому клиента (

`/delivery_notifications`

)

В реальном приложении мы, вероятно, инициировали бы второе уведомление, когда курьер физически находится рядом с клиентом, используя GPS.

(В данном случае мы просто используем кнопку.)

Давайте рассмотрим использование клиента Ruby Twilio REST API для фактической отправки уведомлений.

Здесь мы создаем вспомогательный класс с аутентифицированным клиентом Twilio REST API, который мы можем использовать в любое время, когда нам нужно отправить текстовое сообщение.

Мы инициализируем его с помощью наших учетных данных Twilio Account, хранящихся в качестве переменных среды. Вы можете найти Auth Token и Account SID в консоли:

Далее: как мы обрабатываем триггеры уведомлений.

Этот код обрабатывает HTTP-запросы `POST`

, инициируемые курьером.

Он использует наш класс `MessageSender`

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

Далее давайте подробнее рассмотрим, как мы отправляем SMS.

Здесь мы демонстрируем, как мы фактически отправляем SMS.

Картинка стоит тысячи слов? Мы можем добавить изображение белья, добавив:

«`

media_url: «http://lorempixel.com/image_output/fashion-q-c-640-480-1.jpg»

«`

В дополнение к обязательным параметрам (и необязательным медиа), мы можем передать URL `status_callback`

, чтобы узнать, было ли сообщение доставлено.

Обновления статуса сообщения интересны — давайте посмотрим на них дальше.

Twilio будет делать `POST`

запрос к этому контроллеру каждый раз, когда статус нашего сообщения меняется на один из следующих: `queued`

, `failed`

, `sent`

, `delivered`

или `undelivered`

.

Затем мы обновляем `notification_status`

в `Order`

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

Вот и все, ребята! Мы только что реализовали службу уведомлений по запросу, которая предупреждает наших клиентов, когда их заказ забирается или прибывает.

Теперь давайте посмотрим на другие функции, которые вы, возможно, захотите добавить в свое приложение.

У нас есть много контента по Ruby и Rails здесь на сайте Docs. К сожалению, нам пришлось его сократить — вот еще два отличных руководства, которые вам могут понравиться:

#### Это помогло?