Envíe notificaciones a los usuarios utilizando plantillas de notificación y canales de notificación múltiples, es compatible con el servicio de notificación nativo de Filament con macro y una integración completa con las notificaciones de los trabajadores del servicio FCM.
antes de usar este paquete asegúrese de haberlo instalado
composer require tomatophp/filament-alerts
ahora necesitas publicar y migrar la tabla de configuración
php artisan vendor:publish --provider= " SpatieLaravelSettingsLaravelSettingsServiceProvider " --tag= " migrations "
Después de instalar su paquete, ejecute este comando.
php artisan filament-alerts:install
Si no está utilizando este paquete como complemento, registre el complemento en /app/Providers/Filament/AdminPanelProvider.php
-> plugin ( TomatoPHP FilamentAlerts FilamentAlertsPlugin :: make ()
)
para configurar cualquier modelo para recibir notificaciones
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 ;
...
y debe configurar la configuración para que FCM reciba notificaciones en tiempo real
la notificación se ejecuta en la cola, por lo que debe ejecutar el trabajador de la cola para enviar las notificaciones
php artisan queue:work
puedes usar la notificación nativa del filamento y agregamos alguna macro
para ti
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 ())
Para crear una nueva plantilla, puede usar la plantilla CRUD y asegurarse de que la clave de la plantilla sea única porque la usará en cada notificación.
para enviar una notificación debe utilizar nuestro asistente SendNotification::class como
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 ();
donde $template
se selecciona de la plantilla por clave y $matchesTitle y $matchesBody son una matriz de coincidencias para reemplazar la plantilla y $titleFill y $titleBody son una matriz de valores para reemplazar las coincidencias
puedes usar múltiples canales de notificación como
puede estar trabajando con métodos de usuario directo como
$ 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 );
Para que la notificación FCM funcione, debe instalar Filament Settings Hub y permitir el uso de Setting Hub en el complemento.
-> plugin ( TomatoPHP FilamentAlerts FilamentAlertsPlugin :: make ()
-> useSettingsHub ()
-> useFCM ()
)
de lo que necesita para instalar el paquete filament-fcm
usando este comando
composer require tomatophp/filament-fcm
y agregue el complemento del proveedor de servicios
-> plugin ( TomatoPHP FilamentFcm FilamentFcmPlugin :: make ())
ahora necesitas actualizar la configuración
# 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 =
que ejecutar este comando
php artisan filament-fcm:install
generará un trabajador FCM para que usted pueda realizar notificaciones trabajando en segundo plano.
Para ocultar los recursos de notificación de la barra lateral, puede utilizar el método de complemento hideNotificationsResources
como
-> plugin ( TomatoPHP FilamentAlerts FilamentAlertsPlugin :: make ()
-> hideNotificationsResources ()
)
Para usar el controlador de Slack, debe configurar el webhook de Slack en el centro de configuración y usar el método de complemento useSlack
como
-> plugin ( TomatoPHP FilamentAlerts FilamentAlertsPlugin :: make ()
-> useSlack ()
)
ahora en su archivo .env
agregue una clave SLACK_WEBHOOK
con la URL del webhook
Para usar el controlador de Discord, debe configurar el webhook de Discord en el centro de configuración y usar el método de complemento useDiscord
como
-> plugin ( TomatoPHP FilamentAlerts FilamentAlertsPlugin :: make ()
-> useDiscord ()
)
ahora en su archivo .env
agregue una clave DISCORD_WEBHOOK
con la URL del webhook
Admitimos algunas API para recibir la notificación y realizar algunas acciones. Puede encontrarla en la ruta api/notifications
.
puede cambiar el modelo de usuario utilizando el método de complemento apiModel
como
-> plugin ( TomatoPHP FilamentAlerts FilamentAlertsPlugin :: make ()
-> apiModel ( User ::class)
)
puedes publicar el archivo de configuración usando este comando
php artisan vendor:publish --tag= " filament-alerts-config "
puedes publicar archivos de vistas usando este comando
php artisan vendor:publish --tag= " filament-alerts-views "
puedes publicar archivos de idiomas usando este comando
php artisan vendor:publish --tag= " filament-alerts-lang "
puedes publicar el archivo de migraciones usando este comando
php artisan vendor:publish --tag= " filament-alerts-migrations "
Echa un vistazo a nuestro impresionante TomatoPHP