В 18й версии CMS 1С-Битрикс обновился модуль
Служба сообщений и была добавлена возможность отправлять СМС на 2 типа событий: восстановление пароля через СМС и подтверждение номера телефона по СМС. Но что делать, если нам нужно отправить СМС на какое-то другое событие ? Разберем на примере отправку СМС менеджеру интернет магазина при оформлении заказа.
1. Добавляем тип почтового события по адресу Настройки - Настройки продукта - Почтовые и СМС события - Типы событий
Вид события - СМС событие. В Описание размещаем макросы подставляемых значений. Например нам нужно обязательно передать имя заказчика и его телефон.
2. В шаблоны СМС добавляем новый шаблон, указываем необходимые данные. В телефонные номера можно вводить как конкретный номер, так и размещать там макросы для автозамены.
3. Самое интересное. Событие само по себе не вызовется, т.к. система о нем ничего не знает. Поэтому тут есть 2 пути решения вопроса: разместить код вызова непосредственно возле исполняемого события, либо использовать систему обработчиков, и вызывать событие через него.
Приведем пример обработчика:
use Bitrix\Main; Main\EventManager::getInstance()->addEventHandler( 'sale', 'OnSaleOrderSaved', 'mySmsSendOrder' );
function mySmsSendOrder(Main\Event $event) { /** @var Order $order */ $order = $event->getParameter("ENTITY"); $oldValues = $event->getParameter("VALUES"); $isNew = $event->getParameter("IS_NEW");
$sms = new Bitrix\Main\Sms\Event('SALE_NEW_ORDER_SMS', array(/*массив параметров, которые используем в подстановке*/)); $sms->setSite('s1');//айдишник сайта $sms->send(array( "EVENT_NAME" => "SALE_NEW_ORDER_SMS", "LID" => "s1", "C_FIELDS" => array( ), )); }
Ситуации, в которых нужно отправлять СМС может быть много, поэтому обработчик будет меняться на соответствующий. Либо код отправки СМС можно встраивать непосредственно в требуемое место, и передавать в него нужные параметры вызова.

