إرسال الإشعارات في Laravel عبر البريد الإلكتروني والـ SMS

Amine
30/08/2024

المقدمة

نظام الإشعارات في Laravel هو أداة قوية تتيح لك إرسال الإشعارات إلى المستخدمين عبر قنوات متعددة مثل البريد الإلكتروني، الرسائل النصية (SMS)، والإشعارات داخل التطبيق. باستخدام قنوات الإشعارات المختلفة، يمكنك ضمان وصول الرسائل الهامة إلى المستخدمين بالطريقة المفضلة لديهم. في هذا الدليل، سنركز على إعداد وإرسال الإشعارات عبر البريد الإلكتروني والرسائل النصية.

الخطوة 1: إعداد إعدادات البريد الإلكتروني والرسائل النصية في Laravel

قبل البدء في إرسال الإشعارات، تحتاج إلى إعداد إعدادات البريد الإلكتروني والرسائل النصية في Laravel. بالنسبة للبريد الإلكتروني، يجب عليك تكوين إعدادات البريد في ملف .env:

MAIL_MAILER=smtp
MAIL_HOST=smtp.mailtrap.io
MAIL_PORT=2525
MAIL_USERNAME=your_mailtrap_username
MAIL_PASSWORD=your_mailtrap_password
MAIL_ENCRYPTION=tls
MAIL_FROM_ADDRESS=no-reply@example.com
MAIL_FROM_NAME="Laravel App"

بالنسبة للرسائل النصية (SMS)، يمكنك استخدام خدمات مثل Twilio أو Nexmo (الآن Vonage). تأكد من تثبيت الحزمة الخاصة بالخدمة التي اخترتها وتكوين الإعدادات في ملف .env:

TWILIO_SID=your_twilio_sid
TWILIO_AUTH_TOKEN=your_twilio_auth_token
TWILIO_PHONE_NUMBER=your_twilio_phone_number

الخطوة 2: إنشاء إشعار جديد

لإنشاء إشعار جديد، يمكنك استخدام الأمر make:notification. لنقم بإنشاء إشعار لإعلام المستخدمين بتحديث الحساب عبر البريد الإلكتروني والرسائل النصية:

php artisan make:notification AccountUpdated

سيتم إنشاء ملف AccountUpdated.php في مجلد app/Notifications. افتح الملف وستجد هيكل الإشعار الافتراضي. قم بتحديث الملف لإرسال الإشعار عبر البريد الإلكتروني والرسائل النصية:

<?php

namespace App\Notifications;

use Illuminate\Bus\Queueable;
use Illuminate\Notifications\Messages\MailMessage;
use Illuminate\Notifications\Messages\NexmoMessage;
use Illuminate\Notifications\Notification;

class AccountUpdated extends Notification
{
    use Queueable;

    public function via($notifiable)
    {
        return ['mail', 'nexmo'];
    }

    public function toMail($notifiable)
    {
        return (new MailMessage)
                    ->subject('تحديث حسابك')
                    ->greeting('مرحباً!')
                    ->line('لقد تم تحديث معلومات حسابك بنجاح.')
                    ->action('عرض الحساب', url('/account'))
                    ->line('شكراً لاستخدامك لتطبيقنا!');
    }

    public function toNexmo($notifiable)
    {
        return (new NexmoMessage)
                    ->content('تم تحديث حسابك بنجاح. يمكنك التحقق من معلومات حسابك عبر التطبيق.');
    }

    public function toArray($notifiable)
    {
        return [
            //
        ];
    }
}

في هذا المثال، نستخدم قنوات mail وnexmo لإرسال الإشعار عبر البريد الإلكتروني والرسائل النصية. تأكد من تخصيص الرسائل لتناسب احتياجاتك.

الخطوة 3: إرسال الإشعار إلى المستخدم

لإرسال الإشعار إلى المستخدم، يمكنك استخدام دالة notify() في النموذج (Model) الذي يمثل المستخدم. على سبيل المثال، لنرسل إشعار التحديث عند تحديث حساب المستخدم:

use App\Notifications\AccountUpdated;
use App\Models\User;

$user = User::find(1); // استبدل 1 بمعرف المستخدم الحقيقي
$user->notify(new AccountUpdated());

سيتم الآن إرسال الإشعار إلى المستخدم عبر البريد الإلكتروني والرسائل النصية.

الخطوة 4: تخصيص قنوات الإشعارات

يمكنك تخصيص قنوات الإشعارات بناءً على تفضيلات المستخدم. على سبيل المثال، يمكنك التحقق مما إذا كان المستخدم يريد تلقي إشعارات عبر البريد الإلكتروني أو الرسائل النصية فقط:

public function via($notifiable)
{
    $channels = [];

    if ($notifiable->prefers_mail) {
        $channels[] = 'mail';
    }

    if ($notifiable->prefers_sms) {
        $channels[] = 'nexmo';
    }

    return $channels;
}

يمكنك استخدام هذا النهج لتخصيص قنوات الإشعارات بشكل ديناميكي بناءً على تفضيلات المستخدم.

الخطوة 5: التعامل مع أخطاء الإشعارات

في بعض الأحيان، قد تحدث أخطاء عند إرسال الإشعارات، خاصة عند التعامل مع خدمات خارجية مثل البريد الإلكتروني والرسائل النصية. يمكنك التعامل مع هذه الأخطاء باستخدام الكتل try-catch وتسجيل الأخطاء لإصلاحها لاحقًا:

try {
    $user->notify(new AccountUpdated());
} catch (\Exception $e) {
    \Log::error('فشل إرسال الإشعار: ' . $e->getMessage());
}

هذا يضمن أن تطبيقك يستمر في العمل حتى إذا فشل إرسال الإشعار، ويتيح لك معرفة السبب وراء الفشل.

الخاتمة

يعد نظام الإشعارات في Laravel أداة قوية لإرسال الإشعارات إلى المستخدمين عبر قنوات متعددة مثل البريد الإلكتروني والرسائل النصية (SMS). من خلال إعداد الإشعارات بشكل صحيح وتخصيصها بناءً على تفضيلات المستخدم، يمكنك تحسين تجربة المستخدم وضمان وصول الرسائل الهامة بشكل فعال. استمر في استكشاف ميزات Laravel لتعزيز تطبيقاتك وتحسين أدائها.

لمزيد من المعلومات، يمكنك زيارة المستندات الرسمية للارافيل.

التعليقات

اترك تعليقاً