Отправка SMS в Bitrix D7: служба сообщений и Bitrix\Main\Sms\Event
Что понадобится до кода
- Модуль Служба сообщений (
messageservice): в его настройках выбран провайдер SMS и заполнены реквизиты договора с оператором. - В настройках Главного модуля задан отправитель SMS по умолчанию там, где ядро это требует для выбранного провайдера.
- В административной части заведены тип почтового (SMS) события и шаблон с нужными полями — в примере ниже код типа
MY_SMS_EVENT, под него должны быть описаны параметры вида#PHONE#, макросы текста и т.д.
Минимальная отправка из PHP
Рабочий класс находится в пространстве имён ядра. Поля массива должны совпадать с плейсхолдерами шаблона SMS-события:
use Bitrix\Main\Sms\Event;
$fields = [
'PHONE' => '+79990000000',
'MACROS1' => 'Текст макроса 1',
'MACROS2' => 'Текст макроса 2',
];
$sms = new Event('MY_SMS_EVENT', $fields);
$sms->setSite('s1'); // код сайта
$sms->setLanguage('ru'); // язык шаблона
$sms->send();PHONE обычно приводится к формату, который ожидает ваш провайдер; при международной доставке заранее уточняйте нормализацию (E.164, без ведущих нулей и т.д.) в условиях оператора или обёртки проекта.
Где искать результат и ошибки
Для сообщений службы сообщений используется отдельная таблица, по смыслу близкая к журналу b_event для почты:
SELECT * FROM b_messageservice_message ORDER BY ID DESC;Снимок строки после неудачи часто содержит статус провайдера и текст ответа — удобно для поддержки без включения дампа запросов в проде.
Связанные сценарии
- Статусы заказа и триггерные SMS в магазине — отдельный конвейер; см. сниппет про отправку SMS при смене статуса заказа.
- Универсальная почта через типы событий — см. отправку через почтовые шаблоны: mail-event-send.
Итог
\Bitrix\Main\Sms\Event — стандартная точка интеграции с модулем «Служба сообщений» в D7: один раз описываете SMS-событие и шаблон, затем переиспользуете код в обработчиках, кроне и триггерных сценариях с явным указанием сайта и языка.
Не хотите копаться сами?
Починю за 1-3 дня. Без предоплаты — оплата по результату.
15+ лет опыта с 1С-Битрикс · Без предоплаты · 7 дней гарантии