Ваш клиент оформил заказ. Вы сменили статус на «Отправлен». Как он узнает? Если вы отправите ему письмо — он может не прочитать. Если позвоните — затратно. А если отправите сообщение в Telegram или WhatsApp — он увидит почти мгновенно, потому что мессенджеры всегда под рукой.
Уведомления в мессенджеры — это стандарт клиентского сервиса. Мы реализовали их для десятков проектов на Falcon Space: для онлайн-магазинов, служб доставки, сервисов заказа услуг. Настройка занимает пару часов, пользователи в восторге, а нагрузка на поддержку снижается. Расскажу, как это сделать.
WhatsApp лучше для коммуникации с клиентами (больше аудитория), Telegram — для внутренних уведомлений и для стран СНГ. WhatsApp Business API стоит денег (бесплатно только для ответов на сообщения, инициировать диалог платно), а Telegram — бесплатен через ботов. Мы обычно используем Telegram для B2B и внутренних оповещений, WhatsApp — для B2C, если бюджет позволяет.
В этой статье я покажу настройку Telegram, как самого простого и бесплатного способа. WhatsApp делается аналогично, но через платный API.
В Falcon Space есть механизм «внешних действий». Вы в хранимой процедуре пишете SELECT, который возвращает специальный набор полей: action, параметры. Система перехватывает этот результат и выполняет действие: отправляет HTTP-запрос, генерирует PDF, отправляет email или — в нашем случае — вызывает Telegram API.
Схема для 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 нужно использовать официальный 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-специалист — он справится сам по нашей документации.