Как настроить уведомления о смене статуса заказа в Telegram и WhatsApp

Как настроить уведомления о смене статуса заказа в Telegram и WhatsApp

Ваш клиент оформил заказ. Вы сменили статус на «Отправлен». Как он узнает? Если вы отправите ему письмо — он может не прочитать. Если позвоните — затратно. А если отправите сообщение в Telegram или WhatsApp — он увидит почти мгновенно, потому что мессенджеры всегда под рукой.

Уведомления в мессенджеры — это стандарт клиентского сервиса. Мы реализовали их для десятков проектов на Falcon Space: для онлайн-магазинов, служб доставки, сервисов заказа услуг. Настройка занимает пару часов, пользователи в восторге, а нагрузка на поддержку снижается. Расскажу, как это сделать.

Зачем нужны уведомления в Telegram и WhatsApp

WhatsApp лучше для коммуникации с клиентами (больше аудитория), Telegram — для внутренних уведомлений и для стран СНГ. WhatsApp Business API стоит денег (бесплатно только для ответов на сообщения, инициировать диалог платно), а Telegram — бесплатен через ботов. Мы обычно используем Telegram для B2B и внутренних оповещений, WhatsApp — для B2C, если бюджет позволяет.

В этой статье я покажу настройку Telegram, как самого простого и бесплатного способа. WhatsApp делается аналогично, но через платный API.

Принцип работы: внешние действия в SQL

В Falcon Space есть механизм «внешних действий». Вы в хранимой процедуре пишете SELECT, который возвращает специальный набор полей: action, параметры. Система перехватывает этот результат и выполняет действие: отправляет HTTP-запрос, генерирует PDF, отправляет email или — в нашем случае — вызывает Telegram API.

Схема для Telegram:

  1. Вы создаёте Telegram-бота через BotFather (бесплатно). Получаете токен.
  2. Пользователь (клиент или сотрудник) подписывается на уведомления. Он отправляет боту команду /start, бот узнаёт его chat_id. Вы сохраняете этот chat_id в профиле пользователя в вашей базе данных (например, в таблице users, поле telegram_chat_id).
  3. В 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» + поле для ввода 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-специалист — он справится сам по нашей документации.

Страница-источник на сайте falconspace.ru