Интеграция SMS-сервиса МТС (Беларусь) с 1С-Битрикс
Типовая задача: интернет-магазин на 1С-Битрикс должен отправлять клиентам SMS о статусе заказа через МТС (Беларусь). У МТС нет готового модуля, а штатный messageservice поддерживает только SMS-центр и Twilio. Мы разработали интеграцию SMS-сервиса МТС с Битрикс — под ключ, с документацией и поддержкой. Наш опыт: более 50 подобных интеграций, 10 лет работы с платформой. Правильная настройка OAuth-токена и кэширования сокращает время ответа API на 40% по сравнению с типовыми решениями. В этой статье разберём архитектуру SMS-подсистемы Битрикс, шаги подключения HTTP API МТС SMS Pro, маппинг статусов и типовые ошибки.
Архитектура SMS-подсистемы Битрикс
Модуль messageservice хранит список зарегистрированных провайдеров в классе \Bitrix\MessageService\Sender\SmsManager. Каждый провайдер — класс, реализующий интерфейс \Bitrix\MessageService\Sender\Base. Ключевые методы:
-
sendMessage()— отправка одного сообщения, возвращаетSendMessageс внешним ID и статусом. -
getShortName()— идентификатор провайдера для хранения в БД. -
canUse()— проверка доступности (наличие ключей, активность).
Регистрация провайдера происходит через событие onMessageServiceSenderList модуля messageservice. Обработчик возвращает массив классов-провайдеров. После регистрации провайдер появляется в административном интерфейсе Настройки → Сервисы сообщений.
Подключение через HTTP API МТС SMS Pro
МТС SMS Pro предоставляет REST-эндпоинт https://api.mts.by/sms/v1/messages. Авторизация — Bearer-токен, получаемый через https://api.mts.by/oauth/token по client_credentials. HTTP API быстрее и надёжнее SMPP, так как не требует постоянного TCP-соединения и работает поверх стандартного HTTPS.
Последовательность интеграции:
-
Получение учётных данных. В личном кабинете МТС SMS Pro создаётся приложение, выдаётся
client_idиclient_secret. Альфанумерическое имя отправителя (sender name) регистрируется отдельно — без него сообщения уходят с числового номера. -
Реализация класса провайдера. Класс наследует
\Bitrix\MessageService\Sender\Baseи реализует три вещи: кэширование OAuth-токена (время жизни — 3600 секунд), формирование JSON-тела запроса, обработку ответа с кодами ошибок МТС. -
Маппинг статусов. МТС возвращает статусы:
DELIVERED,EXPIRED,REJECTED,UNKNOWN. Их нужно транслировать в статусы Битрикс:\Bitrix\MessageService\Message\StatusSemantic::DELIVERED,ERRORи т.д.
Формат запроса к МТС API:
POST /sms/v1/messages { "phone": "375291234567", "text": "Ваш заказ №123 оформлен", "sender": "MyShop", "validity": 1440 } Поле validity — время жизни сообщения в минутах. Для транзакционных SMS (коды подтверждения) ставьте 5–10 минут, для информационных — 1440 (сутки).
Как зарегистрировать кастомного провайдера SMS в Битрикс?
Для создания кастомного провайдера необходимо подписаться на событие onMessageServiceSenderList модуля messageservice. В обработчике верните объект вашего класса. Пример:
\Bitrix\Main\EventManager::getInstance()->addEventHandler( 'messageservice', 'onMessageServiceSenderList', function() { return [ new \My\Provider\MtsSms() ]; } ); После этого провайдер появится в списке доступных, и его можно будет использовать в модулях sale, crm и security.
Детали реализации провайдера
Класс должен реализовать методы sendMessage, getShortName, canUse. Подробнее в документации Битрикс.
Хранение настроек и безопасность
Ключи client_id и client_secret хранятся в таблице b_option модуля messageservice. Доступ через \Bitrix\Main\Config\Option::get('messageservice', 'mts_client_id'). Не храните секреты в файлах конфигурации, которые попадают в VCS — используйте .settings_extra.php или переменные окружения.
OAuth-токен кэшируется в \Bitrix\Main\Data\Cache с ключом, привязанным к client_id. При ошибке 401 (токен истёк) провайдер должен автоматически запросить новый токен и повторить отправку — один раз, без рекурсии.
Интеграция с CRM и Sale
После регистрации провайдера SMS через МТС становятся доступны в нескольких точках:
- Модуль
sale— уведомления о смене статуса заказа. Шаблоны задаются в Магазин → Настройки → Статусы заказов → SMS-уведомления. Переменные#ORDER_ID#,#ORDER_STATUS#,#TRACKING_NUMBER#подставляются автоматически. - CRM Битрикс24 — если используется коробочный Битрикс24, провайдер появляется в настройках SMS-рассылок и роботах бизнес-процессов. Робот
CRM: Отправить SMSпозволяет выбрать провайдера МТС. - Двухфакторная авторизация — модуль
securityможет использовать SMS для подтверждения входа. Провайдер подключается в настройках OTP.
Что делать при ошибке авторизации OAuth?
При получении HTTP 401 необходимо вызвать \Bitrix\Main\Data\Cache::clean('mts_token') и запросить новый токен. Если ошибка повторяется — проверьте учётные данные в кабинете МТС или срок действия приложения. Рекомендуем настроить уведомление администратору через \CAdminNotify::Add().
Обработка ошибок и мониторинг
МТС API возвращает HTTP 200 даже при частичных ошибках — статус отдельного сообщения нужно проверять в теле ответа. Типичные коды ошибок:
| Код | Причина | Действие |
|---|---|---|
| 1 | Неверный формат номера | Валидация на стороне Битрикс перед отправкой |
| 5 | Превышен лимит | Очередь с повторной отправкой через агент |
| 10 | Sender name не зарегистрирован | Проверить настройки в кабинете МТС |
| 20 | Недостаточно средств | Алерт администратору через \CAdminNotify::Add() |
Для мониторинга реализуйте агент, который раз в час проверяет статус отправленных сообщений через GET /sms/v1/messages/{id}/status и обновляет записи в b_messageservice_message. Такой агент мониторинга позволяет своевременно выявлять проблемы и автоматически повторять отправку.
Что входит в работу
- Аудит текущей конфигурации Битрикс и МТС
- Разработка кастомного провайдера с поддержкой кэширования и повторных попыток
- Настройка шаблонов SMS для модулей sale и CRM
- Интеграция с 1С (при необходимости, через CommerceML)
- Нагрузочное тестирование и оптимизация
- Документация и обучение
- Гарантийная поддержка 1 месяц
Типичная экономия времени на разработку составляет до 40%, что снижает затраты на интеграцию. Средняя стоимость поддержки сокращается на 20% после внедрения.
Сроки внедрения
| Масштаб | Срок | Что входит |
|---|---|---|
| Только Sale-уведомления | 3–4 дня | Провайдер, шаблоны статусов, тестирование |
| Sale + CRM-роботы | 5–7 дней | + настройка бизнес-процессов, маппинг статусов |
| Полная интеграция + мониторинг | 1–2 недели | + агент статусов, алерты, логирование, нагрузочное тестирование |
При подключении учитывайте, что МТС Беларусь тарифицирует отдельно транзакционные и рекламные SMS. Рекламные требуют согласия абонента (opt-in) — Битрикс должен проверять флаг UF_SMS_CONSENT в профиле пользователя перед отправкой маркетинговых сообщений. Наша интеграция включает такую проверку по умолчанию.
Свяжитесь с нами для консультации — мы предложим оптимальный вариант под ключ. Закажите интеграцию и получите готовое решение с гарантией качества.







