PHPackages                             proklung/bitrix.notifier.module - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Mail &amp; Notifications](/categories/mail)
4. /
5. proklung/bitrix.notifier.module

ActiveBitrix-d7-module[Mail &amp; Notifications](/categories/mail)

proklung/bitrix.notifier.module
===============================

Интеграция компонента Symfony Notifier в Битрикс

1.31(4y ago)32MITPHPPHP &gt;=7.1 || ^8.0

Since Jul 27Pushed 4y ago1 watchersCompare

[ Source](https://github.com/ProklUng/bitrix.notifier.module)[ Packagist](https://packagist.org/packages/proklung/bitrix.notifier.module)[ Docs](https://github.com/ProklUng/bitrix.notifier.module)[ RSS](/packages/proklung-bitrixnotifiermodule/feed)WikiDiscussions master Synced 1w ago

READMEChangelog (10)Dependencies (15)Versions (24)Used By (0)

Интеграция компонента Symfony Notifier в Битрикс
================================================

[](#интеграция-компонента-symfony-notifier-в-битрикс)

[Документация](https://symfony.com/doc/current/notifier.html) на оригинальный компонент. В целом модуль следует канве оригинального компонента. Основное отличие - способ конфигурирования сервисов (не Yaml, а битриксовые массивные конфиги).

Установка
---------

[](#установка)

composer.json основного проекта:

```
  "extra": {
    "installer-paths": {
      "./bitrix/modules/{$name}/": ["type:bitrix-d7-module", "type:bitrix-module"],
      "./bitrix/components/{$name}/": ["type:bitrix-d7-component", "type:bitrix-component"],
      "./bitrix/templates/{$name}/": ["type:bitrix-d7-template", "type:bitrix-theme"]
    }
  }
```

И:

```
    "repositories": [
        {
            "type": "git",
            "url": "https://github.com/proklung/bitrix.notifier.module"
        },
        {
          "type": "git",
          "url": "https://github.com/proklung/bitrix.containerable.boilerplate"
        }
    ]
```

```
$ composer require proklung/bitrix-notifier-module
```

Установите модуль `proklung.notifier` в административном интерфейсе сайта `bitrix/admin/partner_modules.php`

Добавьте следующий код в ваш `init.php`:

```
use Bitrix\Main\Loader;

Loader::includeModule('proklung.notifier');
```

### Использование (простейшие примеры)

[](#использование-простейшие-примеры)

Отправить сообщение в чат Телеграма:

```
use Symfony\Component\Notifier\Message\ChatMessage;

$container = \Proklung\Notifier\DI\Services::boot();
$chatter = $container->get('chatter');

$notification = (new ChatMessage('Hi from module'));
$chatter->send($notification);
```

Отправить SMS (при условии, что соответствующий транспорт сконфигурирован):

```
use Symfony\Component\Notifier\Message\SmsMessage;

$container = \Proklung\Notifier\DI\Services::boot();
$texter = $container->get('texter');
$sms = new SmsMessage(
            '+79263622508',
            'Тестирование!'
        );

$sentMessage = $texter->send($sms);
```

Отправить email (NB: сейчас все настроено под отправку через Gmail; SMTP не тестировал):

```
use Symfony\Component\Notifier\Notification\Notification;
use Symfony\Component\Notifier\Recipient\Recipient;

$notifier = \Proklung\Notifier\DI\Services::getInstance()->get('notifier');
$notification = (new Notification('New Invoice', ['email']))
                ->content('You got a new invoice for 15 EUR.');

$recipient = new Recipient(
            'email_customer@gmail.com',
            '+71111111'
        );

$notifier->send($notification, $recipient);
```

### Зависимости

[](#зависимости)

Модуль не отягощен лишними зависимостями. В комплекте идет только `Symfony Mailer`. Нужные транспорты подтягиваются отдельно.

Например, если нужна отправка сообщений в Телеграм, то ставится пакет `symfony/telegram-notifier`. Т.к. он "стандартный", то подхватится автоматически.

Если нужно зацепить кастомный транспорт, то это делается через `/bitrix/.settings.php` (смотри ниже).

Конфигурационный файл
---------------------

[](#конфигурационный-файл)

Конфигурация идентична родительскому пакету. Настройка производится посредством правки файлов `bitrix/.settings.php`

Секция `proklung.notifier`:

```
return [
// ....
  'proklung.notifier' => [
          'value' => [
              'notifier' => [
                  // https://symfony.com/doc/current/notifier.html#configuring-channel-policies
                 'channel_policy' => [
                     'high' => ['chat'],
                     'medium' => ['email']
                  ],
                  'chatter_transports' => [
                      'telegram' => 'telegram://315114113:AAFjvQlEiaWisZsav_YQfwmhEIIP9PFw3Ss@default?channel=-1001595706876',
                  ],
                  'texter_transports' => [
                      'smstraffic' => 'smstraffic://mosfond1:pnLag4yN@default?from=MFC',
                  ],
              ],
              'parameters' => [
                  'cache_path' => '/bitrix/cache/s1/proklung.notifier', // Путь к закешированному контейнеру
                  'container.dumper.inline_factories' => false, // Дампить контейнер как одиночные файлы
                  'compile_container_envs' => ['prod'], // Окружения при которых компилировать контейнер
              ],
              'services' => [
                  // Дополнительный кастомный транспорт.
                  // Сервисы инстанцируются без auto-wiring
                  'smstraffic.factory' =>
                      [
                          'class' => 'Prokl\Component\Notifier\Bridge\SmsTraffic\SmsTrafficTransportFactory',
                          'tags' => ['name' => 'texter.transport_factory'],
                      ],
              ],
              'mailer' => [
                      'enabled' => true,
                      'dsn' => 'gmail+smtp://robotivanov2020:izjqfjyegwmznrtb@default',
                      'envelope' => [
                          // Получатель писем
                          'recipients' => ['testing@mail.ru'],
                           // Поле from отправляемого письма
                          'sender' => 'sender@gmail.com',  // Важный параметр, если иметь дело с почтой.
                  ],
              ],
              // Конфигурация Твига (для генерации писем)
              'twig' => [
                  'cache_dir' => $_SERVER['DOCUMENT_ROOT'] . '/bitrix/cache/twig',
                  'config' => [],
                  'paths' => [$_SERVER['DOCUMENT_ROOT'] . '/'],
              ],
          ],
      ]
];
```

В параметрах поодерживаются и такие штуки, как `'%env(TELEGRAM_DSN)%'` (отсылка к переменной окружения `TELEGRAM_DSN`)

Кэширование контейнера
----------------------

[](#кэширование-контейнера)

Параметр `cache_path` - путь, куда ляжет скомпилированный контейнер. Если не задано, то по умолчанию `/bitrix/cache/s1/proklung.redis`.

Предполагается, что в системе так или иначе установлена переменная среды `DEBUG` в массиве `$_ENV`. Если нет, то по умолчанию полагается, что среда "отладочная".

Параметр (массив) `compile_container_envs` указывает окружения, при которых необходимо кэшировать контейнер.

Пока простая логика: `$_ENV["DEBUG"] === true` =&gt; окружение `dev`, иначе `prod`.

Прочее
------

[](#прочее)

### FlashBag

[](#flashbag)

Для обработки отправок в канал `browser`. Два варианта:

- публичный сервис `session_instance` вернет экземпляр сессии, а там есть метод `getFlashBag`.
- хэлпер `\Proklung\Notifier\DI\Services::getFlashBag()`, делающий тоже самое.

### Использование битриксовых почтовых событий и их шаблонов

[](#использование-битриксовых-почтовых-событий-и-их-шаблонов)

```
        use Proklung\Notifier\Bitrix\Sender\BitrixMailEventSender;

        $bitrixEventHandler = BitrixMailEventSender::getInstance(
            \Proklung\Notifier\DI\Services::getInstance()->get('notifier')
        );

        // Или так:
        $bitrixEventHandler = \Proklung\Notifier\DI\Services::get('bitrix.notifier.mail');

        // Массив, идентичный с параметром fields при отправке Битриксом сообщений
        // См. https://dev.1c-bitrix.ru/api_help/main/reference/cevent/send.php
        $arFields = ['NAME' => 'testing email', 'EMAIL' => 'recipitient@gmail.com'];

        // Будет оправлено сообщение в канал email и сделана запись в таблице b_event.
        $bitrixEventHandler->send('CODE_MAIL_EVENT', $arFields);
```

Ошибки отправки не глушатся. Если что-то пойдет не так, то выбросится исключение.

### Отправка битриксового события согласно channel\_policy

[](#отправка-битриксового-события-согласно-channel_policy)

При условии `channel_policy` в `/bitrix/,settings.php`:

```
                'channel_policy' => [
                    //...
                    'medium' => ['email', 'chat/telegram'],
                    //...
                ],
```

```
        use Proklung\Notifier\Bitrix\Sender\BitrixPolicySender;
        use Symfony\Component\Notifier\Notification\Notification;;

        /** @var BitrixPolicySender $bitrixEventHandler */
        $bitrixEventHandler = BitrixPolicySender::getInstance(
                    \Proklung\Notifier\DI\Services::getInstance()->get('notifier')
        );

        // Или так:
        $bitrixEventHandler = \Proklung\Notifier\DI\Services::get('bitrix.notifier.policy');

        // Массив, идентичный с параметром fields при отправке Битриксом сообщений
        // См. https://dev.1c-bitrix.ru/api_help/main/reference/cevent/send.php
        $arFields = ['NAME' => 'testing email', 'EMAIL' => 'recipitient@gmail.com'];

        // Будет оправлено сообщение в канал email и telegram, а также сделана запись в таблице b_event.
        $bitrixEventHandler->send('CODE_MAIL_EVENT', $arFields, Notification::IMPORTANCE_MEDIUM);
```

### Использование битриксовых SMS событий и их шаблонов

[](#использование-битриксовых-sms-событий-и-их-шаблонов)

```
        use Proklung\Notifier\Bitrix\Sender\BitrixSmsSender;

        $bitrixEventHandler = BitrixSmsSender::getInstance(
            \Proklung\Notifier\DI\Services::getInstance()->get('texter')
        );

        // Или так:
        $bitrixEventHandler = \Proklung\Notifier\DI\Services::get('bitrix.notifier.sms');

        // Массив, идентичный с параметром fields при отправке Битриксом сообщений
        $arFields = [
                'SENDER' => 'test', 'RECEIVER' => '+7926111111',
                'USER_PHONE' => '+7926111111', 'CODE' => '123'
        ];

        // Будет оправлено SMS и сделана запись в таблице b_event.
        $bitrixEventHandler->send('SMS_USER_RESTORE_PASSWORD', $arFields);
```

Ошибки отправки глушатся. Если что-то с доставкой SMS пойдет не так, то будет тихо, но в таблице `b_event`появится запись с признаком неудачи и текстом ошибки.

### Отправка битриксовых почтовых шаблонов в Телеграм

[](#отправка-битриксовых-почтовых-шаблонов-в-телеграм)

```
        use Proklung\Notifier\Bitrix\Sender\BitrixTelegramEventSender;

        $bitrixEventHandler = BitrixTelegramEventSender::getInstance(
            \Proklung\Notifier\DI\Services::getInstance()->get('chatter')
        );

        // Или так:
        $bitrixEventHandler = \Proklung\Notifier\DI\Services::get('bitrix.notifier.telegram');

        $arFields = ['CODE' => '2222', 'LINK' => 'http://site.loc/'];

        $bitrixEventHandler->send('TEST_EVENT', $arFields);
```

Должен быть установлен `symfony/telegram-notifier` и зарегистрирован транспорт `telegram` в секции `chatter_transports`файла `/bitrix/.settings.php`.

Нюанс:

- Telegram плохо переваривает html (даже в режиме `parse_mode = html`). Посему под капотом html шаблона превращается в markdown разметку.

###  Health Score

28

—

LowBetter than 54% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity6

Limited adoption so far

Community7

Small or concentrated contributor base

Maturity66

Established project with proven stability

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~8 days

Recently: every ~37 days

Total

23

Last Release

1585d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/9210c86ee6734e537eaf22c0f2fe7a965451e340e39e1aae2b74013f24c2660d?d=identicon)[gedovan](/maintainers/gedovan)

---

Top Contributors

[![ProklUng](https://avatars.githubusercontent.com/u/19857467?v=4)](https://github.com/ProklUng "ProklUng (29 commits)")

---

Tags

bitrixbitrix-modulebitrix-symfonynotificationsphpphp7symfonynotifierbitrixbitrix-cmsbitrix-modulebitrix-d7bitrix-symfony

### Embed Badge

![Health badge](/badges/proklung-bitrixnotifiermodule/health.svg)

```
[![Health](https://phpackages.com/badges/proklung-bitrixnotifiermodule/health.svg)](https://phpackages.com/packages/proklung-bitrixnotifiermodule)
```

###  Alternatives

[shopware/platform

The Shopware e-commerce core

3.3k1.5M3](/packages/shopware-platform)[sulu/sulu

Core framework that implements the functionality of the Sulu content management system

1.3k1.3M152](/packages/sulu-sulu)[contao/core-bundle

Contao Open Source CMS

1231.6M2.4k](/packages/contao-core-bundle)[prestashop/prestashop

PrestaShop is an Open Source e-commerce platform, committed to providing the best shopping cart experience for both merchants and customers.

9.0k15.4k](/packages/prestashop-prestashop)[shopware/core

Shopware platform is the core for all Shopware ecommerce products.

595.2M386](/packages/shopware-core)[chameleon-system/chameleon-base

The Chameleon System core.

1026.5k3](/packages/chameleon-system-chameleon-base)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
