В настоящее время существует множество успешных компаний, которые доставляют товары или услуги своим клиентам по запросу.
Такие компании, как Uber, TaskRabbit и Instacart, выстроили целую индустрию на том факте, что мы, клиенты, любим заказывать вещи мгновенно, *где бы* мы ни находились. Ключ к работе таких сервисов заключается в мгновенном уведомлении клиентов об изменениях; клиентам нужно знать, если в последнюю секунду что-то поменялось.
В этом руководстве мы создадим систему уведомлений для нашей вымышленной службы доставки белья по запросу *Laundr.io* и покажем вам, как реализовать уведомления о расчетном времени прибытия (ETA) с помощью Python и Flask.
Давайте начнем!
Здесь мы показаем пару маршрутов, которые будет использовать наш курьер. Мы хотим рассмотреть два случая:
— Курьер забирает белье для доставки (
`/pickup`
) — Курьер прибывает к дому клиента (
`/deliver`
)
В реальном приложении мы, вероятно, автоматически запускали бы второе уведомление с помощью GPS, но кнопка должна показать вам основы того, как это делается.
Теперь, когда вы увидели представления, давайте посмотрим на Twilio REST Client, который мы будем использовать для отправки самих уведомлений.
Мы создаем экземпляр Twilio REST клиента с нашими учетными данными Twilio Account, хранящимися в качестве переменных среды.
Вам понадобится номер, который вы приобрели через Twilio: `TWILIO_NUMBER`
, а также Account SID и Auth Token: `TWILIO_ACCOUNT_SID`
и `AUTH_TOKEN`
. Их можно найти в консоли Twilio.
Далее давайте посмотрим, что происходит при срабатывании уведомления.
Когда требуется уведомление, мы извлекаем номер телефона, сохраненный в каждом заказе, а затем просто отправляем SMS-сообщение с соответствующим текстом. Легко!
Далее давайте подробнее рассмотрим, как мы отправляем SMS.
Этот код показывает, как мы фактически отправляем SMS клиенту.
Думаете, было бы лучше с изображением? Вы, вероятно, правы — вы можете добавить необязательный параметр `media_url`
, чтобы превратить его в MMS:
`media_url=’http://lorempixel.com/image_output/fashion-q-c-640-480-1.jpg’`
В дополнение к обязательным параметрам (и необязательному `media_url`
), мы можем передать URL `status_callback`
, чтобы узнать, было ли сообщение доставлено.
Обработчик обновления статуса интересен — давайте рассмотрим его подробнее.
Twilio будет отправлять POST-запрос *каждый* раз, когда статус нашего сообщения меняется на один из следующих: `queued`
, `failed`
, `sent`
, `delivered`
или `undelivered`
.
Затем мы обновляем `notification_status`
в `Order`
, чтобы мы могли решить, что делать с `Order`
дальше. Это отличное место для добавления логики, которая повторно отправит сообщение в случае сбоя или отправит автоматический опрос, когда сообщение о доставке успешно.
Вот и все! Мы только что реализовали сервис уведомлений по запросу, который предупреждает наших клиентов, когда их заказ забран или прибывает. Теперь вы сможете очень просто добавить уведомления о расчетном времени прибытия (ETA) в свое собственное приложение.
На следующей панели мы рассмотрим некоторые другие руководства, которые могут вам понравиться.
Нравится Python? Нравится Twilio? Попробуйте эти другие руководства:
Защитите конфиденциальность ваших пользователей, анонимно связывая их с помощью Twilio Voice и SMS. Узнайте, как создавать одноразовые номера телефонов по запросу, чтобы два пользователя могли общаться без обмена личной информацией.
#### Это помогло?