Такие компании, как 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. К сожалению, нам пришлось его сократить — вот еще два отличных руководства, которые вам могут понравиться:
#### Это помогло?