Створення кросплатформених сповіщень за допомогою Notification Framework у Laravel

Перекладено ШІ
Оригінал: Laravel News
Оновлено: 23 серпня, 2025
Досліджте, як фреймворк сповіщень Laravel спрощує комунікацію через різноманітні платформи за допомогою єдиного API. Чи готові ви дізнатися, як перетворити складні комунікації на ефективне та масштабоване рішення? Читайте далі

Фреймворк сповіщень Laravel пропонує зручний спосіб розповсюдження повідомлень через різні комунікаційні канали за допомогою єдиного API. Це рішення допомагає розробникам підтримувати стійку взаємодію з користувачами через електронну пошту, збереження в базі даних та різні зовнішні сервіси.

Основи починаються з створення класу сповіщення за допомогою Artisan:

use Illuminate\Notifications\Notification;
use Illuminate\Notifications\Messages\MailMessage;

class OrderShipped extends Notification
{
    protected $order;

    public function __construct($order)
    {
        $this->order = $order;
    }

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

    public function toMail($notifiable)
    {
        return (new MailMessage)
            ->subject('Ваше замовлення відправлено')
            ->greeting('Добрий день, ' . $notifiable->name)
            ->line('Ваше замовлення #' . $this->order->number . ' було відправлено.')
            ->action('Відстежити посилку', url('/orders/' . $this->order->id))
            ->line('Дякуємо за вашу підтримку!');
    }

    public function toArray($notifiable)
    {
        return [
            'order_number' => $this->order->number,
            'tracking_code' => $this->order->tracking_code,
            'shipped_at' => now()
        ];
    }
}

Запуск сповіщень у Laravel відбувається легко завдяки інтуїтивно зрозумілому синтаксису. Ви можете надіслати сповіщення відразу або доручити його обробку у фоновому режимі:

$customer->notify(new OrderShipped($order));

Notification::send($customers, new OrderShipped($order));

Розгляньте комплексний сервіс сповіщень для електронної комерції, який адаптується до бізнес-потреб і уподобань користувачів:

class OrderNotificationService
{
    public function processShipmentUpdate($order)
    {
        $notification = new OrderShipped($order);

        $order->customer->notify($notification);

        if ($order->total_amount > 500) {
            $managers = User::where('role', 'manager')->get();
            Notification::send($managers, new HighValueShipment($order));
        }
    }

    public function sendWelcomeSequence($user)
    {
        $user->notify(new WelcomeNotification($user));

        $user->notify(
            (new GettingStartedTips($user))->delay(now()->addHours(2))
        );
    }

    public function alertSystemMaintenance($maintenance)
    {
        $activeUsers = User::where('last_seen', '>=', now()->subDays(3))->get();

        Notification::send($activeUsers, new MaintenanceNotification($maintenance));
    }

    public function sendAnonymousAlert($email, $message)
    {
        Notification::route('mail', $email)
            ->notify(new AnonymousAlert($message));
    }
}

Цей сервіс демонструє, як сповіщення безперешкодно інтегруються у бізнес-процеси, пропонуючи гнучкі механізми доставки та зберігаючи чистий, зрозумілий код.

Система сповіщень Laravel перетворює складну багатоканальну комунікацію на елегантне, масштабоване рішення, яке зростає разом із вашими вимогами до обміну повідомленнями