Отправляем SMS-уведомления в 1C-Битрикс на примере событий смены статуса заказа
Небольшой метод для перехвата отправки почтовых сообщений и отправки их через смс на примере обработки статусов заказов.
Чтобы указать, что это не обычное письмо, указываем в качестве адреса получателя #SMS#. Идентификатор заказа в таком случае можно передать в поле Тема. Сообщение составляется как обычно, с возможностью использования всех доступных переменных Следующий код обрабатывает данные сообщения при их отправке.
<?php AddEventHandler('main', 'OnBeforeEventSend', array('Handlers', 'OnBeforeEventSend')); class Handlers { public static function OnBeforeEventSend(&$arFields, &$arFieldsMail) { if ($arFieldsMail['EMAIL_TO'] == '#SMS#') { CModule::IncludeModule('sale'); //получаем идентификатор заказа поля заказа $oid = intval($arFields['ORDER_ID']); $res = CSaleOrder::GetByID($oid); //получаем идентификатор пользователя из заказа и его телефон из профиля $uid = $res['USER_ID']; $user = CUser::GetList($by = 'id', $order = 'asc', array('ID'=>$uid), array( 'FIELDS' => array('PERSONAL_PHONE'), ))->Fetch(); $phone = preg_replace('/[^\d]/', '', $user['PERSONAL_PHONE']); //создаем массив замен и сообщение $replaces = array(); foreach ($arFields as $code => $prop) $replaces['#'.$code.'#'] = $prop; $replaces['#ORDER_ID#'] = $oid; $message = str_replace(array_keys($replaces), array_values($replaces), $arFieldsMail['MESSAGE']); //отправляем sms CSMS:Send - метод API для отправки СМС. Он может быть абсолютно другой, но суть остается та же - получает на входе сообщение и телефон. if ($phone && $message) CSMS::Send($message, $phone); //запрещаем отправку письма return false; } return true; } } ?>
23 Сентября 2014
|
|
Просмотров: 27571