使用通知範本和多通知通道向使用者發送通知,支援具有巨集的 Filament Native 通知服務,並與 FCM Service Worker 通知完全集成
使用此軟體包之前請確保您已安裝
composer require tomatophp/filament-alerts
現在您需要發布和遷移設定表
php artisan vendor:publish --provider= " SpatieLaravelSettingsLaravelSettingsServiceProvider " --tag= " migrations "
安裝軟體包後請執行此命令
php artisan filament-alerts:install
如果您不使用此套件作為插件,請在/app/Providers/Filament/AdminPanelProvider.php
上註冊該插件
-> plugin ( TomatoPHP FilamentAlerts FilamentAlertsPlugin :: make ()
)
設定任何模型來取得通知
namespace App Models ;
use Illuminate Contracts Auth MustVerifyEmail ;
use Illuminate Database Eloquent Factories HasFactory ;
use Illuminate Foundation Auth User as Authenticatable ;
use Illuminate Notifications Notifiable ;
use Laravel Fortify TwoFactorAuthenticatable ;
use Laravel Jetstream HasProfilePhoto ;
use Laravel Sanctum HasApiTokens ;
use Spatie Permission Traits HasRoles ;
use TomatoPHP FilamentAlerts Traits InteractsWithNotifications ;
class User extends Authenticatable
{
use HasApiTokens ;
use HasFactory ;
use HasProfilePhoto ;
use Notifiable ;
use TwoFactorAuthenticatable ;
use HasRoles ;
use InteractsWithNotifications ;
...
並且您必須設定 FCM 才能取得即時通知
通知在佇列上運行,因此您必須執行佇列工作程序來發送通知
php artisan queue:work
您可以使用燈絲本機通知,我們為您添加一些macro
use Filament Notifications Notification ;
Notification :: make ( ' send ' )
-> title ( ' Test Notifications ' )
-> body ( ' This is a test notification ' )
-> icon ( ' heroicon-o-bell ' )
-> color ( ' success ' )
-> actions ([
Filament Notifications Actions Action :: make ( ' view ' )
-> label ( ' View ' )
-> url ( ' https://google.com ' )
-> markAsRead ()
])
-> sendToDiscord ( auth ()-> user ())
-> sendToEmail ( auth ()-> user ())
-> broadcast ( auth ()-> user ())
-> sendToDatabase ( auth ()-> user ())
-> sendToSlack ( auth ()-> user ())
-> sendToFCM ( auth ()-> user ())
要建立新模板,您可以使用模板 CRUD 並確保模板金鑰是唯一的,因為您將在每個通知上使用它。
若要傳送通知,您必須使用我們的助手 SendNotification::class ,例如
SendNotification :: make ( $ template -> providers )
-> template ( $ template -> key )
-> findTitle ( $ matchesTitle )
-> replaceTitle ( $ titleFill )
-> findBody ( $ matchesBody )
-> replaceBody ( $ titleBody )
-> model ( User ::class)
-> id ( User :: first ()-> id )
-> privacy ( ' private ' )
-> fire ();
其中$template
透過鍵從模板中選擇,$matchesTitle 和 $matchesBody 是用於替換模板的匹配數組,$titleFill 和 $titleBody 是用於替換匹配的值數組
您可以使用多個通知管道,例如
它可以與直接用戶方法一起使用,例如
$ user -> notifySMSMisr (string $ message );
$ user -> notifyEmail (string $ message , ?string $ subject = null , ?string $ url = null );
$ user -> notifyFCMSDK (string $ message , string $ type = ' web ' , ?string $ title = null , ?string $ url = null , ?string $ image = null , ?string $ icon = null , ?array $ data =[]);
$ user -> notifyDB (string $ message , ?string $ title = null , ?string $ url = null );
$ user -> notifySlack (string $ title ,string $ message = null ,?string $ url = null , ?string $ image = null , ?string $ webhook = null );
$ user -> notifyDiscord (string $ title ,string $ message = null ,?string $ url = null , ?string $ image = null , ?string $ webhook = null );
要讓 FCM 通知工作,您需要安裝 Filament Settings Hub 並允許在插件上使用 Settings Hub
-> plugin ( TomatoPHP FilamentAlerts FilamentAlertsPlugin :: make ()
-> useSettingsHub ()
-> useFCM ()
)
比您需要使用此命令安裝filament-fcm
套件
composer require tomatophp/filament-fcm
並新增服務提供者插件
-> plugin ( TomatoPHP FilamentFcm FilamentFcmPlugin :: make ())
現在你需要更新配置
# Firebase Project
FIREBASE_API_KEY =
FIREBASE_AUTH_DOMAIN =
FIREBASE_DATABASE_URL =
FIREBASE_PROJECT_ID =
FIREBASE_STORAGE_BUCKET =
FIREBASE_MESSAGING_SENDER_ID =
FIREBASE_APP_ID =
FIREBASE_MEASUREMENT_ID =
# Firebase Cloud Messaging
FIREBASE_VAPID =
# Firebase Alert Sound
FCM_ALERT_SOUND =
比運行這個命令
php artisan filament-fcm:install
它將產生 FCM 工作程序,以便您在背景發出通知。
若要從側邊欄隱藏通知資源,您可以使用外掛程式方法hideNotificationsResources
,例如
-> plugin ( TomatoPHP FilamentAlerts FilamentAlertsPlugin :: make ()
-> hideNotificationsResources ()
)
要使用 slack 驅動程序,您必須在設定中心設定 slack webhook 並使用插件方法useSlack
例如
-> plugin ( TomatoPHP FilamentAlerts FilamentAlertsPlugin :: make ()
-> useSlack ()
)
現在在您的.env
檔案中新增帶有 webhook URL 的SLACK_WEBHOOK
鍵
要使用discord驅動程序,您必須在設定中心設定discord webhook並使用插件方法useDiscord
例如
-> plugin ( TomatoPHP FilamentAlerts FilamentAlertsPlugin :: make ()
-> useDiscord ()
)
現在在您的.env
檔案中加入帶有 webhook URL 的DISCORD_WEBHOOK
鍵
我們支援一些 API 來獲取通知並執行一些操作,您可以在api/notifications
路徑下找到它
您可以使用插件方法apiModel
變更使用者模型,例如
-> plugin ( TomatoPHP FilamentAlerts FilamentAlertsPlugin :: make ()
-> apiModel ( User ::class)
)
您可以使用此命令發布設定文件
php artisan vendor:publish --tag= " filament-alerts-config "
您可以使用此命令發布視圖文件
php artisan vendor:publish --tag= " filament-alerts-views "
您可以使用此命令發布語言文件
php artisan vendor:publish --tag= " filament-alerts-lang "
您可以使用此命令發布遷移文件
php artisan vendor:publish --tag= " filament-alerts-migrations "
查看我們很棒的 TomatoPHP