Сервис push-уведомлений PushService для веб- и PWA-приложений - двукратная экономия на СМС

Кейс фото №1

Реализован собственный сервис доставки push-уведомлений пользователям веб- и PWA-приложений. Сервис даёт бесплатный по трафику канал информирования как альтернативу платным SMS, обеспечивает централизованное управление подписками и статусами доставки, а также асинхронную обработку с обратной связью о результате. Ожидаемый эффект — сокращение затрат на SMS-информирование и ускорение доставки сообщений пользователям.

Поставленная задача

Компания использует платные каналы (в первую очередь SMS) для оперативного информирования пользователей цифровых сервисов. SMS-информирование тарифицируется за каждое сообщение и формирует постоянную статью расходов, которая растёт вместе с активной базой пользователей.

Перед командой поставлена задача снизить зависимость от платных каналов и реализовать собственный механизм доставки уведомлений, отвечающий следующим целям:

  • Сокращение затрат на SMS — перевести часть оперативных уведомлений на бесплатный по трафику канал.
  • Скорость информирования — доставлять сообщения пользователю практически мгновенно, без задержек операторских шлюзов.
  • Контроль и наблюдаемость — иметь единый инструмент управления подписками и отслеживания статусов доставки.
  • Технологическая основа — создать платформу, на которой в дальнейшем можно наращивать новые типы уведомлений.

Предложенное решение

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

Что такое PWA и Web Push

PWA (Progressive Web App) — это веб-приложение, которое пользователь может установить на устройство как обычное приложение. Web Push — механизм, по которому такое приложение (или браузер) получает уведомления от сервиса. Ключевая особенность: доставка идёт через инфраструктуру браузерных вендоров и не тарифицируется пооператорно, в отличие от SMS.

Принцип работы в трёх шагах:

  1. Пользователь заходит в приложение и разрешает получение уведомлений.
  2. Приложение оформляет «подписку» — уникальный адрес доставки для этого устройства — и передаёт её в сервис.
  3. Когда возникает событие, сервис отправляет уведомление по сохранённой подписке, и оно появляется у пользователя.

Что оборачивается в PWA

В PWA оборачивается личный кабинет клиента (ЛК) — существующее веб-приложение, которым пользователи уже пользуются в браузере. Отдельное нативное приложение под каждую платформу при этом не требуется: тот же ЛК становится устанавливаемым и получает возможность принимать push-уведомления.

Технически превращение веб-приложения в PWA выполняется добавлением двух стандартных компонентов, без переписывания самого личного кабинета:

  • Манифест приложения. Файл с описанием приложения (имя, иконки, стартовый экран), благодаря которому браузер предлагает «установить» ЛК на устройство как отдельное приложение.
  • Service worker. — Фоновый обработчик в браузере, который принимает push-уведомления и показывает их пользователю, даже когда вкладка ЛК закрыта.

После установки ЛК как PWA пользователь разрешает уведомления, приложение оформляет push-подписку и передаёт её в PushService. Дальнейшая доставка идёт по механизму, описанному в разделе 3.

ПРИМЕЧАНИЕ: Минимум изменений в ЛК

Оборачивание в PWA не затрагивает бизнес-логику личного кабинета — добавляются только манифест и service worker, а также клиентский код подписки на push. Существующий функционал ЛК продолжает работать как прежде, в том числе в обычном браузере без установки.

Почему это выгоднее SMS

Критерий SMS Web Push (PushService)
Стоимость доставки Плата за каждое сообщение Бесплатно по трафику
Скорость Зависит от оператора Практически мгновенно
Богатство сообщения Только текст Заголовок, текст, иконка, изображение, ссылка
Обратная связь Ограниченная Статус доставки по каждому уведомлению
Управление базой Внешние списки Централизованный реестр подписок

ВНИМАНИЕ · Важное ограничение охвата

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

Как реализовано

Сервис PushService принимает уведомления от внешних систем, ставит их в очередь и асинхронно доставляет по активным подпискам получателя, фиксируя статус и при необходимости возвращая результат во внешнюю систему. Ниже приведена принципиальная схема работы.

Кейс фото №2

Механизм доставки

  • Приём. Внешняя система отправляет уведомление; сервис проверяет права и обязательные поля, ставит его в очередь и сразу подтверждает приём.
  • Очередь. Принятые уведомления накапливаются в очереди доставки — это сглаживает пиковые нагрузки.
  • Воркер. Фоновый обработчик забирает уведомления из очереди и доставляет их по активным подпискам пользователя.
  • Фиксация статуса. По каждому уведомлению сохраняется результат: доставлено, ошибка, истёк срок или исчерпаны попытки.

ПРИМЕЧАНИЕ: Принято ≠ доставлено

Подтверждение приёма означает лишь, что уведомление поставлено в очередь. Итоговый результат становится известен после обработки воркером. Такое разделение — норма для систем массовой доставки: оно позволяет принимать большой поток запросов, не блокируя отправителя на время фактической доставки.

Виды рассылок

Сервис поддерживает три способа отправки, покрывающих разные сценарии:

Вид рассылки Назначение Как инициируется
Одиночная отправка Реакция на событие для одного пользователя (например, статус заявки) Внешняя система через Integration API
Пакетная отправка Группа уведомлений за один запрос (до 500 за раз) Практически мгновенно
Массовая отправка Разовая рассылка из файла Excel (до 1000 строк) Администратор через административный интерфейс

Все виды рассылок проходят единый конвейер обработки (проверка → очередь → доставка → статус), что обеспечивает предсказуемое поведение независимо от способа отправки. Защита от дублей реализована через ключ идемпотентности: повторная отправка того же уведомления не создаёт дубликат.

Обратная связь: callbacks

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

СОВЕТ: Что это даёт бизнесу

Callback превращает push из «отправил и забыл» в контролируемый канал: система-источник получает подтверждение доставки и может строить на нём свою логику и отчётность (например, эскалировать в SMS, если push не доставлен).

Фоновая доставка и поведение на платформах

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

Текущая картина по платформам:

  • Android. Уведомления доставляются полноценно, в том числе в фоновом режиме — когда приложение личного кабинета закрыто. Это основной сценарий, работающий штатно.
  • iOS (PWA). Уведомления доставляются полноценно, в том числе в фоновом режиме — когда PWA личного кабинета закрыта. Это основной сценарий, работающий штатно.

Безопасность и управление

  • Секретные данные подписок хранятся в зашифрованном виде и никогда не возвращаются в ответах и выгрузках.
  • Доступ разграничен по ролям и токенам: отдельные права на чтение реестра и на управляющие операции.
  • Административный интерфейс даёт единую точку контроля: состояние сервиса, реестр подписок, диагностика доставки, массовая отправка.
  • Отзыв подписки выполняется логически, без удаления записи — история сохраняется для аудита.

Детальная схема взаимодействия

Ниже приведена диаграмма последовательности, детализирующая внутреннюю работу сервиса при отправке уведомления: от приёма запроса и постановки задачи в очередь до отправки через шлюз, обработки успеха и ошибок с повторными попытками, приёма итогового статуса доставки (callback) и фиксации событий в системе логирования и мониторинга.

Кейс фото №3

Ключевые моменты, которые иллюстрирует диаграмма:

  • Разделение приёма и доставки. После проверки и сохранения уведомления API сразу отвечает «принято в работу» (202), а фактическая отправка выполняется обработчиком задач асинхронно.
  • Обработка ошибок и повторы. При ошибке отправки статус фиксируется, и при наличии попыток задача ставится на повторную отправку; когда попытки исчерпаны — уведомление помечается как недоставленное.
  • Обратная связь по доставке. Итоговый статус доставки принимается через callback и обновляет запись уведомления (доставлено / не доставлено).
  • Наблюдаемость. На каждом значимом шаге событие фиксируется в подсистеме истории и мониторинга для последующего анализа.

Бизнес-результат

Внедрение PushService даёт прямой финансовый и несколько сопутствующих эффектов.

Экономия на SMS

Прямая экономия рассчитывается как объём SMS-трафика, замещённого push-уведомлениями, умноженный на стоимость SMS. Ниже — шаблон расчёта; итоговые цифры подставляются после получения базовых показателей.

Показатель Значение
Объём SMS-информирования 500 000 сообщений/мес
Средняя стоимость SMS 4 ₽
Текущий бюджет SMS-канала 2 000 000 ₽/мес
Доля трафика, замещаемая push 50% (по подписанным пользователям)
Ожидаемая экономия 1 000 000 ₽/мес · 12 000 000 ₽/год

ПРИМЕЧАНИЕ: Методика оценки

Реалистичная оценка строится «снизу»: берётся не весь SMS-трафик, а только та его доля, которая приходится на пользователей с активной push-подпиской. По мере роста числа подписок доля замещения — а значит и экономия — увеличивается. Для чистой экономии из валовой вычитается стоимость владения сервисом.

Сопутствующие эффекты

Эффект В чём выражается
Скорость информирования Мгновенная доставка без задержек операторских шлюзов
Независимость от операторов Снижение зависимости от тарифов и доступности SMS-провайдеров
Богатый формат Иконка, изображение, ссылка — выше вовлечённость по сравнению с текстом SMS
Контроль доставки Статус по каждому уведомлению и обратная связь во внешние системы
Поддержка PWA-сценариев Единый канал для веб- и установленных PWA-приложений
Основа для развития Платформа для новых типов уведомлений без смены канала

свяжитесь с нами

Заполните поле
Заполните поле
Заполните поле
В формате pdf, png или jpeg, не больше 10 МБ
Добавьте файл
Заполните поле

Спасибо за обращение,
мы с вами свяжемся!