أرسل إشعارًا إلى المستخدمين باستخدام قوالب الإشعارات وقنوات الإشعارات المتعددة، فهو يدعم خدمة الإشعارات الأصلية مع الماكرو، والتكامل الكامل مع إشعارات عامل خدمة 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 like
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 driver، يجب عليك تعيين Slack webhook على مركز الإعدادات واستخدام طريقة البرنامج المساعد useSlack
like
-> plugin ( TomatoPHP FilamentAlerts FilamentAlertsPlugin :: make ()
-> useSlack ()
)
الآن على ملف .env
الخاص بك، قم بإضافة مفتاح SLACK_WEBHOOK
مع عنوان URL الخاص بالويب هوك
لاستخدام برنامج تشغيل Discord، يجب عليك تعيين خطاف ويب Discord على مركز الإعدادات واستخدام طريقة البرنامج المساعد useDiscord
مثل
-> plugin ( TomatoPHP FilamentAlerts FilamentAlertsPlugin :: make ()
-> useDiscord ()
)
الآن على ملف .env
الخاص بك، قم بإضافة مفتاح DISCORD_WEBHOOK
مع عنوان URL الخاص بالويب هوك
نحن ندعم بعض واجهات برمجة التطبيقات للحصول على الإشعارات وتنفيذ بعض الإجراءات التي يمكنك العثور عليها ضمن مسار واجهة 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 الرائع الخاص بنا