Создание драйвера уведомлений

Imhotep содержит несколько каначалов уведомлений с использованием базовых драйверов, но вы можете создать свой драйвер канала для доставки уведомлений. Для этого, необходимо создать класс реализующий интерфейс INotificationDriver:

<?php

namespace App\Notifications;

use Imhotep\Contracts\Notifications\INotificationDriver;
use Imhotep\Notifications\Notification;

class VoiceDriver implements INotificationDriver
{
    /**
     * Отправить переданное уведомление.
     */
    public function send(object $recipient, Notification $notification): mixed
    {
        $message = $notification->toVoice($recipient);
        
        // Логика отправки уведомления
        return true;
    }
}
PHP

Как только ваш класс канала уведомления был определен, вы можете вернуть имя класса из метода via любого из ваших уведомлений. В этом примере метод вашего уведомления toVoice может возвращать любой объект для формирования голосовых сообщений. Например, вы можете определить свой собственный класс VoiceMessage для формирования таких сообщений:

<?php

namespace App\Notifications;

use App\Notifications\Messages\VoiceMessage;
use App\Notifications\VoiceChannel;
use Imhotep\Notifications\Notification;

class OrderShipped extends Notification
{
    /**
     * Получить каналы доставки уведомлений.
     */
    public function via(object $notifiable): string
    {
        return VoiceChannel::class;
    }

    /**
     * Получить содержимое голосового сообщения.
     */
    public function toVoice(object $notifiable): VoiceMessage
    {
        // ...
    }
}
PHP