Senden Sie Benachrichtigungen an Benutzer mithilfe von Benachrichtigungsvorlagen und mehreren Benachrichtigungskanälen. Es unterstützt den Filament Native Notification Service mit Makro und bietet eine vollständige Integration in FCM-Service-Worker-Benachrichtigungen
Bevor Sie dieses Paket verwenden, stellen Sie sicher, dass Sie es installiert haben
composer require tomatophp/filament-alerts
Jetzt müssen Sie die Einstellungstabelle veröffentlichen und migrieren
php artisan vendor:publish --provider= " SpatieLaravelSettingsLaravelSettingsServiceProvider " --tag= " migrations "
Führen Sie nach der Installation Ihres Pakets bitte diesen Befehl aus
php artisan filament-alerts:install
Wenn Sie dieses Paket nicht als Plugin verwenden, registrieren Sie das Plugin bitte unter /app/Providers/Filament/AdminPanelProvider.php
-> plugin ( TomatoPHP FilamentAlerts FilamentAlertsPlugin :: make ()
)
um ein beliebiges Modell einzurichten, um Benachrichtigungen zu erhalten
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 ;
...
und Sie müssen die Einstellungen für FCM festlegen, um Echtzeitbenachrichtigungen zu erhalten
Die Benachrichtigung wird in der Warteschlange ausgeführt. Sie müssen daher den Warteschlangenarbeiter ausführen, um die Benachrichtigungen zu senden
php artisan queue:work
Sie können die native Filament-Benachrichtigung verwenden und wir fügen ein macro
für Sie hinzu
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 ())
Um eine neue Vorlage zu erstellen, können Sie Template CRUD verwenden und sicherstellen, dass der Vorlagenschlüssel eindeutig ist, da Sie ihn für jede einzelne Benachrichtigung verwenden.
Um eine Benachrichtigung zu senden, müssen Sie unseren Helfer SendNotification::class verwenden
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 ();
Dabei wird $template
durch den Schlüssel aus der Vorlage ausgewählt und $matchesTitle und $matchesBody sind ein Array von Übereinstimmungen zum Ersetzen der Vorlage und $titleFill und $titleBody sind ein Array von Werten zum Ersetzen der Übereinstimmungen
Sie können mehrere Benachrichtigungskanäle verwenden, z
Es kann mit direkten Benutzermethoden wie arbeiten
$ 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 );
Damit die FCM-Benachrichtigung funktioniert, müssen Sie Filament Settings Hub installieren und die Verwendung von Setting Hub im Plugin zulassen
-> plugin ( TomatoPHP FilamentAlerts FilamentAlertsPlugin :: make ()
-> useSettingsHub ()
-> useFCM ()
)
Dann müssen Sie das Paket filament-fcm
mit diesem Befehl installieren
composer require tomatophp/filament-fcm
und fügen Sie das Dienstanbieter-Plugin hinzu
-> plugin ( TomatoPHP FilamentFcm FilamentFcmPlugin :: make ())
Jetzt müssen Sie die Konfiguration aktualisieren
# 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 =
Dann führen Sie diesen Befehl aus
php artisan filament-fcm:install
Es wird ein FCM-Worker generiert, damit Sie Benachrichtigungen im Hintergrund ausführen können.
Um die Benachrichtigungsressourcen in der Seitenleiste auszublenden, können Sie die Plugin-Methode hideNotificationsResources
wie verwenden
-> plugin ( TomatoPHP FilamentAlerts FilamentAlertsPlugin :: make ()
-> hideNotificationsResources ()
)
Um den Slack-Treiber zu verwenden, müssen Sie den Slack-Webhook im Einstellungs-Hub festlegen und die Plugin-Methode useSlack
like verwenden
-> plugin ( TomatoPHP FilamentAlerts FilamentAlertsPlugin :: make ()
-> useSlack ()
)
Fügen Sie nun Ihrer .env
Datei einen SLACK_WEBHOOK
-Schlüssel mit der Webhook-URL hinzu
Um den Discord-Treiber zu verwenden, müssen Sie den Discord-Webhook im Einstellungs-Hub festlegen und die Plugin-Methode useDiscord
like verwenden
-> plugin ( TomatoPHP FilamentAlerts FilamentAlertsPlugin :: make ()
-> useDiscord ()
)
Fügen Sie nun Ihrer .env
Datei einen DISCORD_WEBHOOK
-Schlüssel mit der Webhook-URL hinzu
Wir unterstützen einige APIs, um die Benachrichtigung zu erhalten und einige Aktionen durchzuführen. Sie finden sie unter api/notifications
route“.
Sie können das Benutzermodell ändern, indem Sie die Plugin-Methode apiModel
verwenden
-> plugin ( TomatoPHP FilamentAlerts FilamentAlertsPlugin :: make ()
-> apiModel ( User ::class)
)
Mit diesem Befehl können Sie die Konfigurationsdatei veröffentlichen
php artisan vendor:publish --tag= " filament-alerts-config "
Mit diesem Befehl können Sie die Ansichtsdatei veröffentlichen
php artisan vendor:publish --tag= " filament-alerts-views "
Mit diesem Befehl können Sie die Sprachdatei veröffentlichen
php artisan vendor:publish --tag= " filament-alerts-lang "
Mit diesem Befehl können Sie die Migrationsdatei veröffentlichen
php artisan vendor:publish --tag= " filament-alerts-migrations "
Testen Sie unser Awesome TomatoPHP