Создание драйвера уведомлений
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