saashagm/notification

NotificationService是Laravel框架的一个组件,允许您通知用户应用程序中的各种事件。它提供了发送电子邮件或Telegram聊天通知的能力。

1.14.2 2024-09-11 17:31 UTC

This package is auto-updated.

Last update: 2024-09-11 17:31:53 UTC


README

Laravel Logo

Total Downloads Latest Stable Version License Code size Code size

PHP Version Laravel Version

Laravel通知

NotificationService是Laravel框架的一个组件,允许您通知用户应用程序中的各种事件。它提供了发送电子邮件或Telegram聊天通知的能力。

使用NotificationService需要设置SMTP服务器和Telegram机器人令牌的环境变量。之后,您可以在应用程序中设置特定事件触发的通知。

通知可以创建为实现了Illuminate\Contracts\Notifications\ShouldQueue接口的类,也可以是匿名函数。在通知中可以指定消息文本、主题、收件人等参数。

NotificationService还提供了使用不同渠道发送通知的能力,例如短信或推送通知。为此,您需要配置相应的渠道并将它们添加到NotificationService的配置中。

总的来说,NotificationService提供了一个方便且灵活的方法来通知用户应用程序中的事件,这可以显著提高其便利性和功能性。

NotificationService是开源软件,根据MIT许可证分发。这意味着您可以自由使用和修改它,没有任何限制。

我们相信自由和开放是软件开发的关键原则,因此我们选择了MIT许可证为NotificationService。这使用户和开发者能够完全自由地使用、修改和分发我们的产品。

我们希望NotificationService对您和您的团队有所帮助,并邀请您为其发展做出贡献。如果您有任何问题或建议,请与我们联系——我们随时愿意提供帮助。

目录

要求

安装和正确运行的基本要求

  • PHP >= 8.0
  • Laravel >= 10.x
  • Composer >= 2.4.x

安装

要安装包,请执行以下命令

  • composer require sashagm/notification
  • php artisan notification:install

使用

  1. 首先,让我们在.env中定义我们的辅助配置
NF_EMAIL= 
TELEGRAM_API_KEY = 
TELEGRAM_CHAT_ID = 
NF_URL=/custom/notifications
NF_ROUTE_NAME=custom-nf
  1. 现在,让我们在/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'),

    ],
  1. 例如,要发送电子邮件通知,向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
}
  1. 要向所有渠道发送通知,向route('nf')发送POST请求,并带有以下参数
{
    "type": "all", // для отправки в все каналы
    "message": "Hello, world!"
}
  1. 您可以从应用程序的任何地方发送通知,而不仅仅是控制器。为此,您需要创建一个NotificationService实例并调用sendEmailsendTelegramsendAll方法,就像我们在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 许可证 许可。