通知テンプレートと複数の通知チャネルを使用してユーザーに通知を送信します。マクロを備えたフィラメント ネイティブ通知サービスをサポートし、FCM サービス ワーカー通知への完全な統合をサポートします。
このパッケージを使用する前に、インストールされていることを確認してください
composer require tomatophp/filament-alerts
次に、設定テーブルを公開して移行する必要があります
php artisan vendor:publish --provider= " SpatieLaravelSettingsLaravelSettingsServiceProvider " --tag= " migrations "
パッケージをインストールした後、このコマンドを実行してください
php artisan filament-alerts:install
このパッケージをプラグインとして使用していない場合は、 /app/Providers/Filament/AdminPanelProvider.php
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 をインストールし、プラグインで設定ハブの使用を許可する必要があります。
-> 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 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 をチェックしてください