Добрый вечер. На данный момент в настройке уведомлений нету возможность указать: Вас упомянули в комментарии (как это есть в сообщениях). Когда задач много, прилетает много уведомлений, независимо от роли сотрудника в задаче. Соответственно, вероятность пропустить что-то важное пропорциональна к-ву задач, в которых участвует сотрудник. Хотелось бы иметь возможность отключить, например, отправку уведомлений наблюдателям. Возможно подскажете, от куда и чего отталкиваться? Очень похожее сообщение вот - https://www.bitrix24.ua/support/forum/forum1/topic2101/
Владислав Морозов написал: Не подскажете конкретнее, как это сделать?
Читаем про события и то, как это работает в целом. Перед добавлением в очередь отправки, срабатывает событие OnBeforeEventAdd (модуль main) Подписываетесь на событие, триггерите нужные Вам события, смотрите параметры и контролируете добавление.
Владислав Морозов написал: Не подскажете конкретнее, как это сделать?
Читаем про события и то, как это работает в целом. Перед добавлением в очередь отправки, срабатывает событие OnBeforeEventAdd (модуль main) Подписываетесь на событие, триггерите нужные Вам события, смотрите параметры и контролируете добавление.
Насколько понял, нужно добавить код в файл init.php. В документации наведен пример отправки сообщения на почту (да и в док. указано "Событие OnBeforeEventAdd вызывается в момент добавления почтового события"), можете подробнее описать, что именно нужно добавить в файл? Спасибо.
Пример кода:
Скрытый текст
<?
//Обработчик в файле /bitrix/php_interface/init.php
Во-первых, внимательнее изучайте то, с чем работаете. Если посмотреть на вызов события http://bxapi.ru/src/?id=162768, то Вы увидите, что параметров у метода намного больше чем 3. Во-вторых, следите за организацией кода (иначе потом запутаетесь и вырастите франкенштейна) В-третьих, в init.php нужно немного по-другому работать Я подготовил небольшой фрагмент кода, который подпишется на событие и в файлик OnBeforeEventAdd.txt в корне сайта будет писать логи. Нужно сделать пару событий, которые вызовут почтовую отправку, а затем смотрите что прилетело и уже пишите обработчик, который НЕ будет добавлять ненужные Вам письма.
Код
AddEventHandler("main", "OnBeforeEventAdd", array("EventHandler", "OnBeforeEventAddHandler"));
class EventHandler
{
function OnBeforeEventAddHandler(&$event, &$lid, &$arFields, &$message_id, &$files, &$languageId)
{
\ob_start();
echo PHP_EOL."<pre>".PHP_EOL;
var_dump([
'event' => $event,
'lid' => $lid,
'arFields' => $arFields,
'message_id' => $message_id,
'files' => $files,
'languageId' => $languageId
]);
\file_put_contents($_SERVER['DOCUMENT_ROOT'].'/OnBeforeEventAdd.txt', \ob_get_clean(), FILE_APPEND);
/**
* Если не хотите добавлять событие, то верните в методе false
*/
return true;
}
}
Цитата
Владислав Морозов написал: Это тоже самое, что и Журнал событий в админке?
P.S. Журнал событий и Почтовые отправления это разные вещи. Отличайте CEventLog от CEventMessage
1. в админку не заходит - Fatal error: Call to a member function IsAuthorized() on null in /home/bitrix/www/bitrix/modules/main/classes/general/main.php on line 3494 2. Файл нашел, сейчас буду разбираться.
В смысле? Вы что хотите то? Чтобы наблюдателям не приходили какие-то сообщения. У Вас есть событие, которое ограничивает добавление в очередь отправки.
Создайте 5-6 событий (все что отправляется в ленту), относительно полученных массивов напишите правило которое будет определять - должно это письмо отправиться с портала или нет. И вставьте в код этой функции, вместо логгирования.
Владислав Морозов написал: Только куда дальше копать?
В смысле? Вы что хотите то? Чтобы наблюдателям не приходили какие-то сообщения. У Вас есть событие, которое ограничивает добавление в очередь отправки.
Создайте 5-6 событий (все что отправляется в ленту), относительно полученных массивов напишите правило которое будет определять - должно это письмо отправиться с портала или нет. И вставьте в код этой функции, вместо логгирования.
Пошел немного другим способом, нашел переменную, которая содержит ид пользователей для отправки уведомлений. Но теперь проблема в другом, уведомления не приходят (как и нужно), но в ленте сообщение о создании задачи не появляется, и при комментировании её после тоже. Возможно принудительно отправлять сообщение в жл без уведомления?