saashagm / notification
NotificationService是Laravel框架的一个组件,允许您通知用户应用程序中的各种事件。它提供了发送电子邮件或Telegram聊天通知的能力。
Requires
- php: ^8.0
- irazasyed/telegram-bot-sdk: ^3.13
- laravel-notification-channels/telegram: ^4.0 || ^5
- twilio/sdk: ^7.5
Requires (Dev)
- phpunit/phpunit: ^10.2
README
Laravel通知
NotificationService是Laravel框架的一个组件,允许您通知用户应用程序中的各种事件。它提供了发送电子邮件或Telegram聊天通知的能力。
使用NotificationService需要设置SMTP服务器和Telegram机器人令牌的环境变量。之后,您可以在应用程序中设置特定事件触发的通知。
通知可以创建为实现了Illuminate\Contracts\Notifications\ShouldQueue接口的类,也可以是匿名函数。在通知中可以指定消息文本、主题、收件人等参数。
NotificationService还提供了使用不同渠道发送通知的能力,例如短信或推送通知。为此,您需要配置相应的渠道并将它们添加到NotificationService的配置中。
总的来说,NotificationService提供了一个方便且灵活的方法来通知用户应用程序中的事件,这可以显著提高其便利性和功能性。
NotificationService是开源软件,根据MIT许可证分发。这意味着您可以自由使用和修改它,没有任何限制。
我们相信自由和开放是软件开发的关键原则,因此我们选择了MIT许可证为NotificationService。这使用户和开发者能够完全自由地使用、修改和分发我们的产品。
我们希望NotificationService对您和您的团队有所帮助,并邀请您为其发展做出贡献。如果您有任何问题或建议,请与我们联系——我们随时愿意提供帮助。
目录
要求
安装和正确运行的基本要求
PHP
>= 8.0Laravel
>= 10.xComposer
>= 2.4.x
安装
要安装包,请执行以下命令
- composer require sashagm/notification
- php artisan notification:install
使用
- 首先,让我们在
.env
中定义我们的辅助配置
NF_EMAIL= TELEGRAM_API_KEY = TELEGRAM_CHAT_ID = NF_URL=/custom/notifications NF_ROUTE_NAME=custom-nf
- 现在,让我们在
/config/nf.php
中定义我们的辅助配置
'telegramApiKey' => env('TELEGRAM_API_KEY'), 'chatId' => env('TELEGRAM_CHAT_ID'), 'email' => env('NF_EMAIL'), 'vkToken' => env('VK_TOKEN'), 'vkUserId' => env('VK_USER_ID'), 'logger' => true, // Разрешить логирование 'check' => [ 'active' => true, // True Разрешить проверку или false Пропускать проверку 'guard' => 'web', // Укажите через какой гард будет работать 'save_colum' => 'id', // Поле для группы/роли или прав 'save_value' => [ 1, 2, 3 ], // добавляем массив значений ], 'routes' => [ 'url' => env('NF_URL', '/notifications'), 'routeName' => env('NF_ROUTE_NAME', 'nf'), ],
- 例如,要发送电子邮件通知,向
route('nf')
发送POST请求,并带有以下参数
{ "type": "email", // для отправки на почту "message": "Hello, world!" //'id': 'example@domain.com' email, 12345678 чат ид // id не обязательный парамтр если он не передан то уведомление будет отправлены по дефолтным данным из .env }
或者
{ "type": "telegram", // для отправки в телеграм "message": "Hello, world!" //'id': 'example@domain.com' email, 12345678 чат ид // id не обязательный парамтр если он не передан то уведомление будет отправлены по дефолтным данным из .env }
- 要向所有渠道发送通知,向
route('nf')
发送POST请求,并带有以下参数
{ "type": "all", // для отправки в все каналы "message": "Hello, world!" }
- 您可以从应用程序的任何地方发送通知,而不仅仅是控制器。为此,您需要创建一个
NotificationService
实例并调用sendEmail
、sendTelegram
或sendAll
方法,就像我们在Artisan命令中做的那样。
例如,您可以在以下代码中发送电子邮件通知
use Sashagm\Notification\Services\NotificationService; $notificationService = new NotificationService(); $message = 'This is a test email notification.'; $notificationService->sendEmail($message);
类似地,您可以向Telegram发送通知
use Sashagm\Notification\Services\NotificationService; $notificationService = new NotificationService(); $message = 'This is a test Telegram notification.'; $notificationService->sendTelegram($message);
同样,您可以发送到所有渠道
use Sashagm\Notification\Services\NotificationService; $notificationService = new NotificationService(); $message = 'This is a test all chanel notification.'; $notificationService->sendAll($message);
只需确保您已导入NotificationService
类。
权限访问
如果需要限制访问,可以在/config/nf.php
的配置中更改权限访问,这可以通过check
部分实现
'check' => [ 'active' => true, // True Разрешить проверку или false Пропускать проверку 'guard' => 'web', // Укажите через какой гард будет работать 'save_colum' => 'id', // Поле для группы/роли или прав 'save_value' => [ 1, 2, 3 ], // добавляем массив значений ],
添加包含不同变体值的数组。例如,对于本例,显示id为1,2,3
的用户具有访问权限。您还可以指定不是id而是roles,这样就可以根据用户组/角色设置,例如管理员,版主,编辑
。
自定义Guard
如果需要使用自定义Guard,可以在/config/nf.php
配置中的check
部分更改,这由guard
参数负责。默认设置为web
,它返回当前通过Web界面认证的用户。这用于通过Web界面认证的用户。
如果指定自定义守卫,则将返回当前已认证用户作为具有自定义守卫名称的守卫。具有自定义守卫名称的守卫可以在Laravel配置文件中设置,以使用不同的数据库或不同的用户模型。
因此,可以更改用于检查中间件主题权限的适当守卫。
自定义Logger
如果您不想使用标准日志文件,可以使用单独的文件并将日志数据记录到其中。只需更改配置文件 /config/nf.php
中新文件的路径即可。
'logger_method' => true, // Использовать дефолтный вариант логирования(false - Кастомный логер) 'logger_path' => "logs/custom.log", // Путь для кастомного логера
附加功能
我们的包提供了一系列可能在对通知进行操作时有用的附加功能。
-
php artisan notification:install
- 此命令将安装所有必需的文件。 -
php artisan notification:test {type}
- 此命令将向选定的渠道(电子邮件、Telegram、全部)发送测试通知。 -
php artisan notification:send {type} {message} {--id=0}
- 此命令将向选定的渠道发送带有您消息的测试通知(电子邮件、Telegram、全部)。要指定id,只能向email
发送到您的地址或向telegram
发送到您的聊天ID。
测试
为了检查其功能,可以执行特定的命令
- ./vendor/bin/phpunit --configuration phpunit.xml
许可证
Laravel Notification 是一个开源软件,按照 MIT 许可证 许可。