Пытался написать новый триггер для рассылки, но не могу никак вызвать хоть какую-нибудь рассылку по любому из событий. Сейчас пробую триггер, реагирующий на сохранение заказа. Рассылка создана, письмо должно быть отправлено через минуту после события, но триггер не срабатывает или что-то неправильно написано в коде.
В файле init.php
В файле handlers.php
В файле orderfinished.php
В файле init.php
| Код |
|---|
include_once($_SERVER['DOCUMENT_ROOT'] . "/bitrix/php_interface/sender/handlers.php"); |
| Код |
|---|
<?
AddEventHandler("sender", "OnTriggerList", array("MySenderEventHandler","onTriggerList"));
AddEventHandler("sender", "OnPresetMailingList", array("MySenderEventHandler","onPresetMailingList"));
class MySenderEventHandler
{
public static function onTriggerList($data)
{
\Bitrix\Main\Loader::includeModule('blog');
$autoLoadClasses = array(
'SenderTriggerViewedProduct' => '/bitrix/php_interface/sender/trigger/viewedproduct.php',
'SenderTriggerBlogComment' => '/bitrix/php_interface/sender/trigger/blogcomment.php',
'SenderTriggerUserConfirmed' => '/bitrix/php_interface/sender/trigger/userconfirmed.php',
'SenderTriggerOrderFinished' => '/bitrix/php_interface/sender/trigger/orderfinished.php'
);
\Bitrix\Main\Loader::registerAutoLoadClasses(null, $autoLoadClasses);
$data['TRIGGER'] = array_keys($autoLoadClasses);
return $data;
}
public static function onPresetMailingList()
{
$result = array();
$result[] = array(
'TYPE' => 'Мои рассылки',
'CODE' => 'my_sale_view_prod',
'NAME' => 'Пример',
'DESC_USER' => 'Это автоматическая рассылка, предлагающая скидки, если вы просмотрели товар, но не решились купить его.',
'DESC' => 'Рассылка, запускаемая через день для тех, кто просмотрел на сайте товары.',
'TRIGGER' => array(
'START' => array(
'ENDPOINT' => array(
'MODULE_ID' => '',
'CODE' => 'my_viewed_product',
'FIELDS' => array('DAYS_VIEW' => 1)
)
),
'END' => array(
'ENDPOINT' => array(
'MODULE_ID' => 'sale',
'CODE' => 'order_paid',
'FIELDS' => array()
)
),
),
'CHAIN' => array(
array(
'TIME_SHIFT' => 0,
'SUBJECT' => 'Письмо #1',
'MESSAGE' => 'Здравствуйте, #NAME#<br><br>Это письмо #1.',
),
array(
'TIME_SHIFT' => 1440,
'SUBJECT' => 'Письмо #2',
'MESSAGE' => 'Здравствуйте, #NAME#<br><br>Это письмо #2.',
),
array(
'TIME_SHIFT' => 1440,
'SUBJECT' => 'Письмо #3',
'MESSAGE' => 'Здравствуйте, #NAME#<br><br>Это письмо #3.',
),
)
);
return $result;
}
} |
В файле orderfinished.php
| Код |
|---|
<?
class SenderTriggerOrderFinished extends \Bitrix\Sender\Trigger
{
/*
* @return string
*
* Название триггера
*/
public function getName()
{
return 'Заказ создан';
}
/*
* @return string
*
* Уникальный код триггера
*/
public function getCode()
{
return "my_order_finished";
}
/*
* @return string
*
* Модуль, который создает событие
*/
public function getEventModuleId()
{
return 'sale';
}
/*
* @return string
*
* Событие, которое будет ловиться
*/
public function getEventType()
{
return "OnSaleOrderSaved";
}
/*
* @return bool
*
* Может ли триггер использоваться как цель,
* а не только для запуска
*/
public static function canBeTarget()
{
return true;
}
/*
* @return array|\Bitrix\Main\DB\Result|\CDBResult
*
* Функция, которая из данных события
* вернет данные о получателе рассылки
*/
public function getRecipient()
{
return array(
'NAME' => 'Олег',
'EMAIL' => 'мойадрес@list.ru',
'USER_ID' => '46'
);
}
public function filter()
{
// безусловно разрешаем запустить рассылку
return true;
}
public function getForm()
{
return '';
}
} |