mirkhamidov / yii2-notifications
Notifications system
Installs: 47
Dependents: 0
Suggesters: 0
Security: 0
Stars: 0
Watchers: 1
Forks: 0
Open Issues: 0
Type:yii2-extension
pkg:composer/mirkhamidov/yii2-notifications
Requires
This package is auto-updated.
Last update: 2025-10-29 02:21:42 UTC
README
- configure 
componentsfrom module - configure 
queueNotificationfrom module - add requirements in composer.json
 - slack notifications
 - email notifications
 
Notification providers
Telegram
description see below, in examples
Default Yii2 Mailer
configure in main config file main.php
return [
    'modules' => [
        ...
        'notifications' => [
            'class' => mirkhamidov\notifications\Module::class,
            'queueIn' => 'queueNotifications',
            'providers' => [
                ...
                'default-mailer' => [
                    'class' => MailerProvider::class,
                    'from' => [{SENDER EMAIL} => {SENDER NAME}],
                ],
            ],
        ],
    ],
];
send using view file and view params
Yii::$app->notifications->sendTemplateMail([
    'to' => {RECEPIENT EMAIL},
    'subject' => {SUBJECT},
    'view' => ['html' => {HTML VIEW}, 'text' => {TEXT VIEW}],
    'params' => [
        {KEY-VALUE params for views}
    ],
]);
or already rendered/prepared text and other params
Yii::$app->notifications->sendTemplateMail([
    'to' => {RECEPIENT EMAIL},
    'subject' => 'Test messages fo ' . rand(1, 99999),
    'htmlBody' => $msg,
    ['textBody' => $msg,]
    ['cc' => {CC},]
    ['bcc' => {BCC},]
    ['replyTo' => {REPLY TO EMAIL},]
    ['attachFilePath' => {PATH TO FILE TO ATTACH},]
]);
Configuration
in main app config file
return [ 'bootstrap' => [ 'queueNotifications', ], 'components' => [ 'queueNotifications' => [ 'class' => \yii\queue\db\Queue::class, 'as log' => \yii\queue\LogBehavior::class, 'db' => 'db', // DB connection component or its config 'tableName' => '{{%queue}}', // Table name 'channel' => 'notification', // Queue channel key 'mutex' => \yii\mutex\PgsqlMutex::class, // Mutex that used to sync queries 'mutexTimeout' => 0, 'ttr' => 5 * 60, // Max time for anything job handling 'attempts' => 5, // Max number of attempts ], 'notifications' => [ 'class' => \mirkhamidov\notifications\Notifications::class, ], ], 'modules' => [ 'notifications' => [ 'class' => mirkhamidov\notifications\Module::class, 'queueIn' => 'queueNotifications', 'providers' => [ 'telegram' => [ 'class' => \mirkhamidov\notifications\providers\Telegram::class, ], ], ], ], ];
Logs to different file
In app config file
'components' => [
    'log' => [
        'targets' => [
            ...
            [
                'class' => 'yii\log\FileTarget',
                'categories' => [
                    'mirkhamidov\notifications\providers\*',
                ],
                'logFile' => '@app/runtime/logs/notification-providers.log',
                'logVars' => [],
                'prefix' => function ($message) {
                    return '';
                }
            ],
        ],
    ],
],
Examples
Telegram Send message
use mirkhamidov\notifications\providers\TelegramProvider;
$msg = 'any message';
\Yii::$app->notifications->send($msg, TelegramProvider::ID, [
    'providerParams' => [
        'chat_id' => {CHAT_ID},
    ],
]);
More providerParams look at Telegram SendMessage API
Telegram Message with file
use mirkhamidov\notifications\providers\TelegramProvider;
$msg = 'any message';
\Yii::$app->notifications->send($msg, TelegramProvider::ID, [
    'providerParams' => [
        'chat_id' => Yii::$app->params['telegram']['miroff'],
        'file' => $model->getPdfFilePath(),
        'fileParams' => [
            // custom params
            ['fileType' => TelegramProvider::FILE_TYPE_DOCUMENT,]
            ['messageMergeType' => TelegramProvider::FILE_MESSAGE_MERGE_TYPE_AS_REPLY,]
            // any other Telegram API params, see below
            ['disable_notification' => true,]
        ],
    ],
]);
filefull path to filefileParamsparams to manage with filemessageMergeType- TelegramProvider::FILE_MESSAGE_MERGE_TYPE_AS_NO_MERGE default send message and file as separate messages
 - TelegramProvider::FILE_MESSAGE_MERGE_TYPE_AS_REPLY send file as reply for sent message
 
fileType- TelegramProvider::FILE_TYPE_DOCUMENT default Telegram API for more params
 - TelegramProvider::FILE_TYPE_PHOTO Telegram API for more params
 - TelegramProvider::FILE_TYPE_AUDIO Telegram API for more params
 - TelegramProvider::FILE_TYPE_VIDEO Telegram API for more params
 
To send only file (without message) just set $mgs to null