Что делает модульМодуль «Оповещения об ошибках на почту, по СМС и в мессенджеры» подключается к штатному обработчику исключений Bitrix и присылает администратору уведомление о необработанных ошибках — по почте или через SMS/мессенджер, — используя уже настроенные на сайте почтовые события и SMS-провайдер.
Модуль не подменяет системный лог ошибок Bitrix, а дополняет его: регистрируется как ещё один обработчик и при каждом необработанном исключении или критической ошибке формирует и отправляет уведомление через стандартные события Bitrix (CEvent, SMS-событие модуля messageservice). Сам модуль писем не рассылает — он лишь инициирует штатное событие, поэтому канал доставки полностью зависит от того, что уже настроено на сайте: почтовый шаблон, SMS-шлюз, интеграция с мессенджером через messageservice.
Если у вас истекла лицензия Битрикса, то можете скачать модуль с github
Возможности- Уведомления по email и SMS/мессенджерам — два независимых события (почтовое и SMS), каждое можно включать, выключать и настраивать отдельно, стандартными средствами Bitrix.
- Группировка одинаковых ошибок — повторяющиеся ошибки не заваливают почту дублями, а копятся в очереди и раз в заданный интервал (по умолчанию — раз в час) отправляются одним письмом со счётчиком повторений. Одинаковыми считаются ошибки, совпадающие по классу, тексту, коду, файлу, строке, типу и источнику, — поэтому одна и та же ошибка из разных модулей не сливается в одну запись.
- Приоритет для критичных ошибок — fatal error и необработанные исключения можно настроить отправлять мгновенно, даже при включённой группировке, чтобы администратор не ждал конца интервала, узнав о падении сайта. Управляется отдельной галочкой в настройках, включена по умолчанию.
- API для собственного кода — метод Rover\Notifier\Notifier::report() позволяет отправлять произвольные сообщения (не только пойманные исключения) из кода сайта или других модулей через ту же инфраструктуру письма/SMS — удобно для «ручных» уведомлений вроде «не прошла оплата заказа». К сообщению можно приложить любые дополнительные поля, они будут доступны в шаблоне как плейсхолдеры. Такие сообщения подчиняются общим настройкам модуля: не отправляются при выключенном перехвате и участвуют в группировке наравне с перехваченными ошибками.
- Понятно, кто виноват — в уведомлении указывается источник ошибки: ядро, конкретный модуль (по его идентификатору, например rover.amosale) или код сайта. Модуль определяет это сам, по месту возникновения ошибки, — подписывать сообщения вручную не нужно. Рядом выводится тип ошибки в читаемом виде (FATAL, UNCAUGHT_EXCEPTION и т.д.), а не служебный числовой код.
- Настраиваемый интервал группировки — регулируется из административной панели модуля, без правки кода.
- Готов к работе сразу после установки — автоматически создаются почтовый и SMS-типы событий и оба шаблона с готовым набором плейсхолдеров (текст ошибки, источник, тип, код, файл, строка, стек, счётчик повторов). Письма начинают приходить сразу после включения модуля; SMS-шаблон создаётся выключенным — нужно указать получателя и включить его. Для реальной доставки в Telegram/WhatsApp/MAX помимо получателя нужен установленный штатный модуль «Сервис уведомлений» с подходящим коннектором-отправителем.
- Корректное удаление — при деинсталляции модуль аккуратно убирает себя из конфигурации обработчика исключений, удаляет агент, таблицу очереди и (по желанию) созданные события/шаблоны, либо оставляет их, если отмечена соответствующая опция.
Особенности, на которые стоит обратить внимание- Модуль никогда не прерывает основной обработчик исключений: любая ошибка на стороне самого решения (недоступна БД, не настроен SMS-шаблон и т.п.) перехватывается и гасится внутри модуля — сайт продолжает работать штатно.
- Защита от повторного вызова обработчика в рамках одного запроса для избегания дублирования отправки.
- Очередь группировки хранится в отдельной таблице через ORM Bitrix, агент разбирает её по расписанию и чистит за собой.
- Дополнительные поля, переданные из кода вместе с сообщением, переживают очередь группировки и доходят до шаблона в сводном уведомлении — в письме не остаётся нераскрытых плейсхолдеров.
- При отключении группировки все накопленные сообщения об ошибках немедленно отправляются.
- Модуль не создаёт собственную инфраструктуру доставки сообщений — использует ту, что уже есть на проекте, поэтому не конфликтует с существующими интеграциями и легко встраивается в проекты любого масштаба.
- Приоритизация ошибок использует штатные константы обработчика исключений Bitrix (FATAL, UNCAUGHT_EXCEPTION) — отдельной системы приоритетов изобретать не пришлось, всё завязано на то, что уже даёт ядро.
- Административная панель отражает реальное состояние в моменте: сколько сообщений сейчас ждут отправки в очереди (со ссылкой на саму таблицу) и когда сработает следующий запуск агента группировки — не нужно лезть в БД, чтобы понять, что происходит.
Кому подойдётРазработчикам и агентствам, сопровождающим коммерческие проекты, где важно узнавать о фатальных ошибках раньше, чем о них сообщит клиент, — но без риска «шторма» одинаковых писем при массовых сбоях и без изменения кода сайта после установки.
Модуль устанавливается стандартно. После установки откроется страница результата установки с кнопкой «Перейти к настройкам модуля» — нажмите её.
Страница настроек также доступна в административной части по адресу: Настройки → Настройки продукта → Настройки модулей → «Оповещения об ошибках на почту, по СМС и в мессенджеры».
На странице настроек:- «Перехват ошибок включён» — включает перехват ошибок сайта. После включения и сохранения на email администратора (email сайта по умолчанию) уже будут приходить письма об ошибках без дополнительной настройки.
- «Группировать одинаковые ошибки» — если включить, повторяющиеся ошибки не отправляются каждая отдельным письмом, а копятся и раз в заданный интервал отправляются одним уведомлением со счётчиком повторов. Рядом с настройкой отображается количество ошибок в очереди (ссылка на служебную таблицу) и время следующей отправки.
- «Интервал отправки группы, сек (например, 3600 = раз в час)» — периодичность отправки накопленной группы ошибок. Поле активно только при включённой группировке.
- «Критичные ошибки (Fatal error / необработанное исключение) отправлять сразу, минуя группировку» — включено по умолчанию: даже при включённой группировке фатальные ошибки и необработанные исключения отправляются немедленно, не дожидаясь интервала.
После изменения настроек нажмите «Сохранить» или «Применить».
| Для доставки уведомлений в SMS или в Telegram/WhatsApp/MAX необходим установленный модуль «Сервис уведомлений» (messageservice) с подходящим коннектором-отправителем. |
Чтобы настроить отправку SMS или сообщений в мессенджер, перейдите по ссылке на SMS-шаблон для события «ROVER_NOTIFIER_ERROR_SMS» (ссылка расположена под настройками на этой же странице), откройте шаблон и укажите
телефон или
chat_id получателя вместо значения по умолчанию «+7XXXXXXXXXX», затем включите шаблон. Для отправки через Telegram/WhatsApp/MAX дополнительно настройте соответствующий коннектор-отправитель в модуле «Сервис уведомлений» (messageservice).
Почтовый шаблон события «ROVER_NOTIFIER_ERROR» находится в разделе Настройки → Настройки продукта → Почтовые и СМС события → Почтовые шаблоны (или по ссылке под настройками модуля). В этом шаблоне при необходимости можно изменить получателя письма (по умолчанию — email сайта) и текст уведомления.
Что попадает в уведомлениеШаблоны письма и SMS создаются при установке и содержат готовый набор плейсхолдеров, которые можно свободно переставлять и убирать:
- #MESSAGE# — текст ошибки;
- #SOURCE# — кто прислал: «Ядро», идентификатор модуля или «Код сайта» (определяется автоматически);
- #LOG_TYPE# — что случилось: тип ошибки по классификации Bitrix (FATAL, UNCAUGHT_EXCEPTION, CAUGHT_EXCEPTION и т.д.);
- #CODE# — код исключения;
- #FILE#, #LINE# — файл и строка;
- #TRACE# — стек вызовов;
- #COUNT# — сколько раз ошибка повторилась (при включённой группировке);
- #HOST#, #DATE# — хост сайта и время.
Незаполненные поля (например, у сообщения, отправленного из кода без деталей) подставляются как «не указано» — в письме не остаётся пустых мест и нераскрытых плейсхолдеров. Любые дополнительные поля, переданные из кода через Notifier::report(), тоже доступны в шаблоне как плейсхолдеры.
Типы событий ROVER_NOTIFIER_ERROR и ROVER_NOTIFIER_ERROR_SMS расположены в разделе Настройки → Настройки продукта → Почтовые и СМС события → Типы событий (или по ссылкам под настройками модуля).
Системные требования
- Любая редакция «Битрикс: Управление сайтом» или «Битрикс24» в коробке.
- PHP 8.2 и выше.
- Для отправки email — ничего дополнительно не нужно, используется штатный CEvent и уже настроенный на сайте почтовый транспорт.
- Для отправки SMS или в мессенджер (Telegram/WhatsApp/MAX и т.п.) — модуль messageservice с настроенным провайдером; без него включена и работает только почта, ошибок это не вызывает.
- Агент группировки использует стандартный агентский механизм «Битрикс» — отдельный крон настраивать не нужно.