Как настроить уведомления о смене статуса заказа в Telegram и WhatsApp
Ваш клиент оформил заказ. Вы сменили статус на «Отправлен». Как он узнает? Если вы отправите ему письмо — он может не прочитать. Если позвоните — затратно. А если отправите сообщение в Telegram или WhatsApp — он увидит почти мгновенно, потому что мессенджеры всегда под рукой.
Уведомления в мессенджеры — это стандарт клиентского сервиса. Мы реализовали их для десятков проектов на Falcon Space: для онлайн-магазинов, служб доставки, сервисов заказа услуг. Настройка занимает пару часов, пользователи в восторге, а нагрузка на поддержку снижается. Расскажу, как это сделать.
Зачем нужны уведомления в Telegram и WhatsApp
- Клиент в курсе — статус заказа меняется, и он сразу получает push в телефон. Не нужно заходить на сайт и проверять.
- Снижение звонков — «Где мой заказ?» больше не актуально. Клиент видит статус.
- Повышение лояльности — забота о клиенте. Персонализация.
- Напоминания — например, «У вас заканчивается абонемент» или «Завтра в 10:00 запись к психологу».
- Внутренние уведомления для сотрудников — менеджеру приходит сообщение в Telegram о новом заказе, мастеру — о назначении задачи.
WhatsApp лучше для коммуникации с клиентами (больше аудитория), Telegram — для внутренних уведомлений и для стран СНГ. WhatsApp Business API стоит денег (бесплатно только для ответов на сообщения, инициировать диалог платно), а Telegram — бесплатен через ботов. Мы обычно используем Telegram для B2B и внутренних оповещений, WhatsApp — для B2C, если бюджет позволяет.
В этой статье я покажу настройку Telegram, как самого простого и бесплатного способа. WhatsApp делается аналогично, но через платный API.
Принцип работы: внешние действия в SQL
В Falcon Space есть механизм «внешних действий». Вы в хранимой процедуре пишете SELECT, который возвращает специальный набор полей: action, параметры. Система перехватывает этот результат и выполняет действие: отправляет HTTP-запрос, генерирует PDF, отправляет email или — в нашем случае — вызывает Telegram API.
Схема для Telegram:
- Вы создаёте Telegram-бота через BotFather (бесплатно). Получаете токен.
- Пользователь (клиент или сотрудник) подписывается на уведомления. Он отправляет боту команду /start, бот узнаёт его chat_id. Вы сохраняете этот chat_id в профиле пользователя в вашей базе данных (например, в таблице users, поле telegram_chat_id).
- В SQL-процедуре, которая изменяет статус заказа, вы добавляете блок кода, который извлекает chat_id клиента и отправляет через внешнее действие POST-запрос к API Telegram.
Всё. Клиент получает сообщение.
Пошаговая инструкция по настройке Telegram-уведомлений
Шаг 1. Создайте бота и получите токен
В Telegram найдите @BotFather. Напишите /newbot. Придумайте имя и username. Бот создаст токен вида 123456789:ABCdefGHIjklmNOPqrstUVwxyz. Сохраните его.
Шаг 2. Добавьте поле chat_id в таблицу пользователей
ALTER TABLE users ADD telegram_chat_id nvarchar(50) NULL;
Шаг 3. Создайте страницу / подписку, где пользователь вводит свой chat_id
Мы обычно делаем проще: пользователь открывает чат с ботом, отправляет /start, бот отвечает: «Ваш ID: 123456. Скопируйте его и вставьте в личном кабинете». В личном кабинете — поле «Telegram ID» и кнопка «Подписаться». При сохранении chat_id записывается в профиль. Можно также автоматически получать chat_id через webhook, но это сложнее.
Шаг 4. Напишите SQL-процедуру отправки уведомления (как внешнее действие)
CREATE PROCEDURE [app].[notify_telegram]
@chat_id nvarchar(50),
@message nvarchar(4000)
AS
BEGIN
SELECT 'send_http' AS action,
'POST' AS method,
'https://api.telegram.org/bot/sendMessage' AS url,
'{"chat_id":"' + @chat_id + '", "text":"' + @message + '", "parse_mode":"HTML"}' AS body,
'Content-Type: application/json' AS content_type;
END
Замените
Шаг 5. В процедуре смены статуса заказа добавьте вызов уведомления
CREATE PROCEDURE [app].[update_order_status]
@order_id int,
@new_status nvarchar(50)
AS
BEGIN
UPDATE orders SET status = @new_status WHERE order_id = @order_id;
-- Получаем chat_id клиента
DECLARE @chat_id nvarchar(50);
SELECT @chat_id = u.telegram_chat_id
FROM orders o
JOIN users u ON o.user_id = u.user_id
WHERE o.order_id = @order_id;
IF @chat_id IS NOT NULL
BEGIN
DECLARE @message nvarchar(4000) = 'Статус вашего заказа #' + CAST(@order_id AS nvarchar) + ' изменён на ' + @new_status;
EXEC [app].[notify_telegram] @chat_id, @message;
END
END
Готово. При каждом изменении статуса клиенту придёт сообщение в Telegram.
Реальный кейс: уведомления для сервиса доставки
Один из наших проектов — доставка готовой еды. Раньше клиенты постоянно звонили: «Где мой заказ?». Даже если курьер уже выехал, они не знали. Мы интегрировали уведомления в Telegram:
- Статус «Заказ принят» — сообщение с номером заказа и временем доставки.
- Статус «Готовится» — сообщение с примерным временем.
- Статус «Курьер выехал» — сообщение со ссылкой на карту (геолокация).
- Статус «Доставлен» — сообщение с предложением оценить.
Результат: количество звонков в поддержку снизилось на 75%. Клиенты стали счастливее, рейтинг в приложениях вырос. Окупаемость интеграции — 2 недели (экономия времени операторов).
Из отзыва: «Клиенты благодарят за уведомления, им не нужно звонить, чтобы узнать, где заказ. А мы сэкономили на колл-центре».
Уведомления для сотрудников (внутренние)
Та же логика, но chat_id берётся из профиля сотрудника. Например, при создании нового заказа менеджеру приходит сообщение: «Новый заказ #123, клиент Иванов, сумма 5000 руб». При назначении заказа мастеру — мастеру: «Вам назначен заказ #123 по адресу...». Это повышает оперативность реакции.
Мы сделали для сервиса прачечных: когда мастер сканирует QR-код заказа, он автоматически «берёт» его в работу, и менеджер получает уведомление. Без этого менеджер бы не знал, начал ли мастер.
WhatsApp-уведомления: нюансы и стоимость
Для WhatsApp нужно использовать официальный Business API (через посредников вроде WABA, GreenAPI, Twilio). Стоимость: около 0,01–0,05 доллара за сообщение (зависит от страны). Для массовых рассылок может быть дорого. Но для транзакционных уведомлений (статус заказа) — приемлемо.
Технически схема та же: вызываете внешнее действие, отправляете POST-запрос к API провайдера, передаёте номер телефона и текст.
Мы рекомендуем использовать Telegram для B2B и внутренних уведомлений, а WhatsApp — для B2C, если есть бюджет и клиенты активно пользуются WhatsApp.
Как быть с уведомлениями о просрочке? (пример из учёта мигрантов)
В кейсе АНО «РЕЗЕРВ» (учёт патентов мигрантов) мы настроили ежемесячные напоминания за 30, 14, 7 дней до окончания патента. Система каждый день запускает процедуру, которая находит все патенты с expiry_date в диапазоне, и отправляет уведомление менеджеру (в Telegram) со списком мигрантов. Менеджер затем связывается с заказчиком. Это исключило штрафы за просрочку.
Пример процедуры-шедулера (запускается по расписанию, например, через SQL Server Agent):
CREATE PROCEDURE [app].[send_expiry_notifications]
AS
BEGIN
-- Выбираем патенты, которые истекают через 7 дней
DECLARE @expiring_list nvarchar(MAX) = '';
SELECT @expiring_list = @expiring_list + m.name + ', '
FROM patents p
JOIN migrants m ON p.migrant_id = m.migrant_id
WHERE DATEDIFF(day, GETDATE(), p.expiry_date) = 7;
IF @expiring_list != ''
BEGIN
EXEC [app].[notify_telegram] @chat_id = 'MANAGER_CHAT_ID',
@message = 'У следующих мигрантов истекает патент через 7 дней: ' + @expiring_list;
END
END
Шедулер запускается каждый день в 9 утра. Менеджер получает одно сообщение, а не 20 отдельных.
Ограничения и меры предосторожности
- Не отправляйте слишком много сообщений — клиент может устать и отписаться. Только важные статусы (принят, отправлен, доставлен).
- Не отправляйте конфиденциальные данные — например, пароли, номера карт. Telegram не считается безопасным каналом.
- Обрабатывайте ошибки API — если Telegram временно недоступен, система не должна падать. Внешнее действие имеет встроенные таймауты и не блокирует основную транзакцию.
- Не делайте рассылок без согласия — клиент должен явно подписаться на уведомления (чекбокс при регистрации или отдельная настройка в кабинете).
Как настроить подписку в личном кабинете
Добавьте в профиль пользователя настройку: «Получать уведомления в Telegram» + поле для ввода Telegram ID. Сделайте кнопку «Проверить» — система отправит тестовое сообщение. Если пришло — подписка активна.
Пример HTML на странице профиля:
<div>
<label>Telegram ID:</label>
<input type="text" name="telegram_chat_id" value="{telegram_chat_id}" />
<button type="button" onclick="sendTestMessage()">Проверить</button>
<span>Как узнать свой Telegram ID? Напишите нашему боту @MyShopBot и он ответит.</span>
</div>
Клиент не должен знать, как получать chat_id — дайте инструкцию.
Заключение: уведомления — это просто и дёшево
Интеграция с Telegram (и WhatsApp) на Falcon Space через внешние действия занимает 2-3 часа на настройку. Затраты: 0 рублей (кроме времени). Выгода: снижение звонков в поддержку на 50-80%, повышение лояльности, оперативность.
Мы готовы помочь вам с настройкой уведомлений в Telegram или WhatsApp под ваш бизнес. Стоимость — от 10 до 30 тысяч рублей. А если у вас есть свой SQL-специалист — он справится сам по нашей документации.
- Шаг 1. Создать концепт проекта
- Шаг 2. Получить оценку бюджета (КП)
- Шаг 3. Заключить договор
- Шаг 4. Создать совместно техническое задание
- Шаг 5. Поэтапная реализация проекта