СМС оповещения

События

Модулем отслеживается ряд событий для отправки соответствующих настройкам смс сообщений.

Отслеживаемые события

МодульСобытиеМетод обработчика модуля
mainOnBeforeUserAddmain_OnBeforeUserAdd
mainOnAfterUserAddmain_OnAfterUserAdd
mainOnBeforeUserUpdatemain_OnBeforeUserUpdate
mainOnAfterUserUpdatemain_OnAfterUserUpdate
mainOnBeforeEventAddmain_OnBeforeEventAdd
mainOnAdminTabControlBeginOnAdminTabControlBegin
saleOnShipmentTrackingNumberChangesale_OnShipmentTrackingNumberChange
saleOnSaleStatusOrderChangesale_OnSaleStatusOrderChange
saleOnSaleOrderCanceledsale_OnSaleOrderCanceled
saleOnSaleOrderPaidsale_OnSaleOrderPaid
saleOnSaleOrderSavedsale_OnSaleOrderSaved
saleOnSaleStatusShipmentChangesale_OnSaleStatusShipmentChange
saleOnBeforeOrderAddsale_OnBeforeOrderAdd
saleOnOrderAddsale_OnOrderAdd
saleOnBeforeOrderUpdatesale_OnBeforeOrderUpdate
saleOnOrderUpdatesale_OnOrderUpdate
saleOnSalePayOrdersale_OnSalePayOrder
saleOnSaleCancelOrdersale_OnSaleCancelOrder
saleOnSaleStatusOrdersale_OnSaleStatusOrder
bxmaker.authuserphoneonSendCodebxmaker_authuserphone_onSendCode
bxmaker.authuserphoneonUserAddbxmaker_authuserphone_onUserAdd
bxmaker.authuserphoneonUserChangePasswordbxmaker_authuserphone_onUserChangePassword

События модуля

Стандартный ORM

Модуль написан с использованием ядра битркиса D7, поэтмоу поумолчанию классы модуля работающие с таблицами имеют уже встреные события в ORM - OnBeforeAdd, OnAfterAdd, nBeforeDelete, OnAfterDelete, OnBeforeUpdate, OnAfterUpdate

Важно: Для подписки на события нет необходимости указывать в конце названия класса слово Table.

  • \Bxmaker\Smsnotice\ManagerTable
  • \Bxmaker\Smsnotice\ServiceTable
  • \Bxmaker\SmsNotice\TemplateTable
  • \Bxmaker\SmsNotice\Template\TypeTable
  • \Bxmaker\SmsNotuce\Template\SiteTable
AddEventHandler('bxmaker.smsnotice', '\Bxmaker\Smsnotice\Manager::OnBeforeAdd', 'bxmaker_smsnotice_onBeforeAdd');


use \Bitrix\Main\Entity; /* стоку разместить в начале файла */

function bxmaker_smsnotice_onBeforeAdd(Entity\Event $event)
{
    $result = new Entity\EventResult;
    $data = $event->getParameter("fields");

    if (isset($data['STATUS']))
    {
        /* указываем статус сообщения - "доставлено", при добавлении в базу*/
        $result->modifyFields(array('STATUS' => \Bxmaker\SmsNotice::SMS_STATUS_DELIVERED));
    }

    // $result->unsetFields(array('COMMENT'));

    return $result;
}

Специальные

OnBeforeSend

Событие OnBeforeSend вызывается перед отправкой смс сообщения, его можно использоваль для остановки отправки например.

/* регистрация обработчика события */
AddEventHandler('bxmaker.smsnotice', 'OnBeforeSend','bxmaker_smsnotice_OnBeforeSend');

function bxmaker_smsnotice_OnBeforeSend($arFields){
    /* здесь происходят какие то операции над $arFields */
    /* 1. возвращение результата работы обработчик*/
    /* если ошибок не было */
    return new \Bitrix\Main\EventResult( \Bitrix\Main\EventResult::SUCCESS, array($arFields));

    /* 2. если произошла ошибка или надо предотвратить отправку
    возвращаем ошибку и текст ошибки. Можно добавить 
    $arFields['error_msg'] = 'Текст ошибки. Если не указывать 
    этот параметр будет возвращен текст ошибки - "Один из обработчиков событий вернул статус - ERROR. 
    Отправка не произошла."';
    */
    return new \Bitrix\Main\EventResult( \Bitrix\Main\EventResult::ERROR, array($arFields));
}

OnBeforeSendTemplate

Событие OnBeforeSendTemplate вызывается перед отправкой смс сообщений по шаблону, его можно использоваль для остановки отправки например.

/* регистрация обработчика события */
AddEventHandler('bxmaker.smsnotice', 'OnBeforeSendTemplate','bxmaker_smsnotice_OnBeforeSendTemplate');

function bxmaker_smsnotice_OnBeforeSendTemplate($template, $arFields){
    /* здесь происходят какие то операции над $arFields */
    /*1. возвращение результата работы обработчик*/
    /* если ошибок не было */
    return new \Bitrix\Main\EventResult( \Bitrix\Main\EventResult::SUCCESS, array($template, $arFields));

    /*2. если произошла ошибка или надо предотвратить отправку
    возвращаем ошибку и текст ошибки. Можно добавить
    $arFields['error_msg'] = 'Текст ошибки. Если не указывать
    этот параметр будет возвращен текст ошибки - "Один из обработчиков событий вернул статус - ERROR.
    Отправка не произошла."';
    */
    return new \Bitrix\Main\EventResult( \Bitrix\Main\EventResult::ERROR, array($template, $arFields));
}

OnBeforeSendTemplateEmail

Событие OnBeforeSendTemplateEmail вызывается перед отправкой смс сообщений привязанного к отправке Email письма, его можно использовать для остановки отправки например.

/* регистрация обработчика события */
AddEventHandler('bxmaker.smsnotice', 'OnBeforeSendTemplateEmail','bxmaker_smsnotice_OnBeforeSendTemplateEmail');

function bxmaker_smsnotice_OnBeforeSendTemplateEmail($template, $arFields){
    /* здесь происходят какие то операции над $arFields */
    /*1. возвращение результата работы обработчик*/
    /* если ошибок не было */
    return new \Bitrix\Main\EventResult( \Bitrix\Main\EventResult::SUCCESS, array($template, $arFields));

    /*2. если произошла ошибка или надо предотвратить отправку
    возвращаем ошибку и текст ошибки. Можно добавить
    $arFields['error_msg'] = 'Текст ошибки. Если не указывать
    этот параметр будет возвращен текст ошибки - "Один из обработчиков событий вернул статус - ERROR.
    Отправка не произошла."';
    */
    return new \Bitrix\Main\EventResult( \Bitrix\Main\EventResult::ERROR, array($template, $arFields));
}

OnPreparedOrderData

Событие OnPreparedOrderData вызывается при подготовке данных о заказе, когда отправляются смс связанные с заказами. Подготовленные данные о заказе дальше будут использоваться для формирования смс сообщения на основе шаблона.

Его удобно использовать для расширения данных для автозамены. Из примера ниже, в шаблоне можно будет указать конструкцию #CODE_FILIALA# которая будет заменена на 1010

$eventManager = \Bitrix\Main\EventManager::getInstance(); //подписываем обработчик на событие 

$eventManager->addEventHandler("bxmaker.smsnotice", "OnPreparedOrderData", array(
'CBXmakerEventHandler', 'bxmaker_smsnotice__OnPreparedOrderData'
)); 
 
Class CBXmakerEventHandler { 

    // обоработчик ---- 
    public function bxmaker_smsnotice__OnPreparedOrderData(\Bitrix\Main\Event $event)
    {
          $arOrderData = $event->getParameters();
         
          $arOrderData['CODE_FILIALA'] = '1010';

           $result = new \Bitrix\Main\EventResult(Bitrix\Main\EventResult::SUCCESS, $arOrderData);

           return $result;
    } 
}