Отключить всем сотрудникам портала уведомления о дне рождение, вступлении в группу

677
Уведомления о дне рождении сотрудника приходит в desktop приложение, инициатором является скрипт im.js модуля Веб-мессенджера(im) и отследить через php события Bitrix Framework возможности нет, но есть возможность повлиять на настройки  desktop приложения. Для этого воспользуемся событием OnEpilog и подключим свое расширение с помощью CJSCore::RegisterExt

Далее мы воспользуемся функцией BX.addCustomEvent, которая назначает обработчик событию onImInit (при инициализации мессенджера), передав параметр в desktop приложение функции birthdayStatus = false, что позволит отключить уведомления.
BX.ready(function() {
    BX.addCustomEvent('onImInit', function (im) {
        im.desktop.birthdayStatus(false);
    });
});
Уведомления о вступлении в группу, можно отключить воспользовавшись php событием Bitrix Framework модуля im OnBeforeMessageNotifyAdd
AddEventHandler("im", "OnBeforeMessageNotifyAdd", "OnBeforeMessageNotifyAddHandler");
function OnBeforeMessageNotifyAddHandler($arFields) {
if((strripos($arFields["MESSAGE"], "вступил(а)")) // я проверяю сообщение на наличие слова в сообщении
( $arFields["SYSTEM"] == "Y" // на то что это системное ) ( $arFields["MESSAGE_TYPE"] == IM_MESSAGE_CHAT // и его тип )) return false; // запрещаю отправку }

Яндекс.Метрика