SMS остаётся самым надёжным каналом доставки: сообщение приходит без интернета и почти всегда прочитывается. Поэтому коды подтверждения и критичные уведомления о заказах чаще всего шлют именно по SMS. Разбираем, как подключить SMS-шлюз к сайту на 1С-Битрикс.
Выбор провайдера и alpha-имя
SMS отправляются не напрямую оператору, а через агрегатора (SMS-шлюз): SMS Aero, SMSC, SMS.ru, Devino, P1SMS и другие. Отличаются они ценой, надёжностью и удобством API.
Главное, что нужно оформить до старта — alpha-имя (имя отправителя вместо номера):
- Регистрируется у оператора связи через провайдера, занимает от нескольких дней.
- Требует подтверждающих документов, что имя принадлежит компании.
- Рекламные и сервисные (транзакционные) сообщения тарифицируются и модерируются по-разному.
| Тип трафика | Примеры | Особенности |
|---|---|---|
| Сервисный | Код входа, статус заказа | Дешевле, доходит стабильно, без согласия на рекламу |
| Рекламный | Акции, скидки | Дороже, нужно согласие абонента, ночная отправка ограничена |
Штатный модуль messageservice
В 1С-Битрикс есть встроенный механизм отправки SMS — модуль messageservice. Он появился как раз для унификации SMS-провайдеров.
- Часть провайдеров (например SMS Aero, SMS.ru) доступна из коробки или ставится готовым модулем из Маркетплейс.
- Настройка в админке:
Настройки → Сервисы сообщений, где вводятся ключ API и alpha-имя. - Программная отправка — через
\Bitrix\Main\Sms\Eventили напрямую сервисом сообщений.
Если готового провайдера нет, свой поставщик добавляется реализацией класса на базе \Bitrix\MessageService\Sender\Base с методами отправки и проверки статуса. Это правильный путь вместо самописных file_get_contents к API прямо в компоненте.
Коды подтверждения и авторизация
Самый частый сценарий — SMS с кодом при регистрации, входе или подтверждении заказа. Здесь важна не столько отправка, сколько защита.
- Генерируйте код и храните его хэш с TTL (например 5 минут), а не сам код в открытом виде.
- Ограничивайте частоту: не больше N запросов кода на номер за интервал.
- Ставьте задержку/капчу после нескольких неверных вводов.
- Логируйте попытки — это и антифрод, и разбор жалоб.
Уведомления о статусах заказа
Второй ключевой сценарий — сервисные SMS по событиям магазина. Их вешают на смену статуса заказа в 1С-Битрикс.
- Заказ принят — подтверждение с номером.
- Оплачен — квитанция.
- Передан в доставку — трек-номер.
- Готов к выдаче — код получения в пункте выдачи.
Технически это обработчик события OnSaleStatusOrderChange (или OnSaleOrderSaved), который формирует текст по шаблону и вызывает сервис сообщений. Текст держите коротким — сегмент SMS это 70 символов кириллицей, дальше сообщение дробится и дорожает.
Пример шаблона: Заказ №{ORDER_ID} передан в доставку. Трек: {TRACKING}.
Отчёты о доставке и деньги
Отправить SMS мало — нужно знать, дошло ли оно. Провайдеры возвращают статус доставки, и это стоит заводить в систему.
- Callback о статусе — провайдер шлёт на ваш URL финальный статус (delivered, undelivered, expired).
- Опрос статуса — если callback не поддержан, периодически запрашиваете статус по id сообщения.
- Баланс — мониторьте остаток и настройте оповещение при его падении, иначе рассылка молча остановится.
Статус доставки полезно писать в историю заказа: при спорной ситуации видно, что уведомление действительно ушло и было доставлено. Модуль messageservice хранит статусы отправленных сообщений, а свой провайдер должен реализовать проверку статуса, чтобы это работало.
Правовые ограничения и антиспам
SMS-рассылки жёстко регулируются, и нарушения ведут к штрафам ФАС и блокировке имени отправителя.
- Рекламные SMS — только с предварительного согласия абонента (закон «О рекламе»). Согласие фиксируйте с датой и источником.
- Отписка — по требованию абонента рассылка должна прекращаться.
- Ночная отправка рекламы ограничена; сервисные сообщения о заказе под это не подпадают.
- Не маскируйте рекламу под сервис — операторы отслеживают содержимое, и за это блокируют alpha-имя.
Практический вывод: разделяйте сервисный и рекламный трафик на уровне логики, чтобы промо не уходило туда, где нет согласия.
Итог
Подключение SMS к 1С-Битрикс опирается на штатный модуль messageservice: он унифицирует провайдеров, хранит статусы и работает в роботах CRM. Ключевые сценарии — коды подтверждения (с обязательной защитой от флуда) и сервисные уведомления о статусах заказа. Поверх этого — отчёты о доставке, контроль баланса и строгое разделение сервисного и рекламного трафика по 152-ФЗ и закону о рекламе.
Мы в B2Bsite подключаем SMS-шлюзы к сайтам на 1С-Битрикс: настраиваем провайдера и alpha-имя, реализуем свой sender при необходимости, вешаем уведомления на статусы заказов, защищаем формы кодов от накрутки и заводим отчёты о доставке в историю заказа. SMS становится надёжным и предсказуемым каналом.
Частые вопросы
Что такое alpha-имя и обязательно ли оно?
Это буквенное имя отправителя вместо номера, например название компании. Регистрируется у оператора через провайдера и требует документов. Без него сообщения приходят с безличного номера и хуже воспринимаются.
Можно ли слать SMS штатными средствами 1С-Битрикс?
Да, через модуль messageservice. Многие провайдеры доступны из коробки или ставятся из Маркетплейс, а отправка работает в роботах и триггерах CRM без программирования.
Как защитить форму отправки кода от накрутки?
Ограничьте число запросов кода на номер и IP за интервал, добавьте капчу после нескольких попыток и храните хэш кода с коротким временем жизни. Иначе боты сожгут баланс.
Сколько символов помещается в одно SMS?
Около 70 символов кириллицей на сегмент. Длиннее сообщение дробится на несколько частей и стоит дороже, поэтому тексты уведомлений держат короткими.
Как узнать, дошло ли сообщение?
Через отчёт о доставке: провайдер присылает финальный статус на ваш callback или отдаёт его по запросу. Статус полезно сохранять в историю заказа.
Нужно ли согласие на SMS о статусе заказа?
Сервисные сообщения о заказе не являются рекламой и не требуют отдельного согласия на рекламу. А вот рекламные SMS об акциях можно слать только с предварительного согласия абонента.
Что делать, если нужного провайдера нет в модуле?
Реализовать собственный класс sender на базе штатного механизма messageservice с методами отправки и проверки статуса. Это надёжнее, чем прямые запросы к API из кода компонента.
Поможем с настройкой и поддержкой Интеграции и связки систем
Поможем с настройкой, доработкой и поддержкой Интеграции и связки систем.