Yandex Metrika
sanches.free 1 просмотр

Отправка SMS в Bitrix D7: служба сообщений и Bitrix\Main\Sms\Event

Что понадобится до кода

  1. Модуль Служба сообщений (messageservice): в его настройках выбран провайдер SMS и заполнены реквизиты договора с оператором.
  2. В настройках Главного модуля задан отправитель SMS по умолчанию там, где ядро это требует для выбранного провайдера.
  3. В административной части заведены тип почтового (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;

Снимок строки после неудачи часто содержит статус провайдера и текст ответа — удобно для поддержки без включения дампа запросов в проде.

Связанные сценарии

Итог

\Bitrix\Main\Sms\Event — стандартная точка интеграции с модулем «Служба сообщений» в D7: один раз описываете SMS-событие и шаблон, затем переиспользуете код в обработчиках, кроне и триггерных сценариях с явным указанием сайта и языка.

Не хотите копаться сами?

Починю за 1-3 дня. Без предоплаты — оплата по результату.

15+ лет опыта с 1С-Битрикс · Без предоплаты · 7 дней гарантии