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
Requires
This package is auto-updated.
Last update: 2024-11-29 05:32:54 UTC
README
- configure
components
from module - configure
queueNotification
from 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,]
],
],
]);
file
full path to filefileParams
params 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