Отправляйте уведомления пользователям, используя шаблоны уведомлений и несколько каналов уведомлений, поддержка службы уведомлений Filament Native с макросами и полную интеграцию с уведомлениями рабочих служб FCM.
перед использованием этого пакета убедитесь, что вы установили
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 и разрешить использование Setting 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 в центре настроек и использовать метод плагина useSlack
, например
-> plugin ( TomatoPHP FilamentAlerts FilamentAlertsPlugin :: make ()
-> useSlack ()
)
теперь в ваш файл .env
добавьте ключ SLACK_WEBHOOK
с URL-адресом веб-перехватчика.
Чтобы использовать драйвер Discord, вы должны установить веб-хук Discord в центре настроек и использовать метод плагина useDiscord
например
-> plugin ( TomatoPHP FilamentAlerts FilamentAlertsPlugin :: make ()
-> useDiscord ()
)
теперь в ваш файл .env
добавьте ключ DISCORD_WEBHOOK
с URL-адресом веб-перехватчика.
мы поддерживаем некоторые 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