Канал sms
Канал sms в компоненте Symfony Notifier
отвечает за отправку уведомлений в виде
SMS-сообщений. Для работы канала необходимо
настроить транспорт (DSN) в конфигурации
notifier.yaml и использовать класс
SmsMessage для формирования текста
сообщения. Уведомление отправляется через
метод send объекта Notifier,
который автоматически определяет
подходящий канал.
Синтаксис
use Symfony\Component\Notifier\Message\SmsMessage;
$sms = new SmsMessage(
phone: '+1234567890',
subject: 'Текст сообщения'
);
Пример
Давайте создадим уведомление с SMS-каналом
и отправим его через Notifier. Для
этого сначала настроим транспорт в
конфигурационном файле:
framework:
notifier:
chatter_transports:
sms: 'null://null'
texter_transports:
sms: '%env(SMS_DSN)%'
Теперь напишем контроллер, который отправляет SMS-сообщение:
<?php
namespace App\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Notifier\Message\SmsMessage;
use Symfony\Component\Notifier\NotifierInterface;
use Symfony\Component\Routing\Attribute\Route;
class SmsController extends AbstractController
{
#[Route('/sms', name: 'sms_send')]
public function send(NotifierInterface $notifier): Response
{
$sms = new SmsMessage(
phone: '+1234567890',
subject: 'hello'
);
$notifier->send($sms);
return new Response('SMS sent');
}
}
?>
Результат выполнения кода для адреса /sms:
"SMS sent"
Пример
Давайте отправим SMS с использованием
объекта Recipient, который
поддерживает канал sms. Создадим
получателя и передадим его в уведомление:
<?php
namespace App\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Notifier\Message\SmsMessage;
use Symfony\Component\Notifier\NotifierInterface;
use Symfony\Component\Notifier\Recipient\Recipient;
use Symfony\Component\Routing\Attribute\Route;
class SmsRecipientController extends AbstractController
{
#[Route('/sms-recipient', name: 'sms_recipient')]
public function send(NotifierInterface $notifier): Response
{
$recipient = new Recipient(
email: 'user@example.com',
phone: '+1234567890'
);
$sms = new SmsMessage(
phone: $recipient->getPhone(),
subject: 'article'
);
$notifier->send($sms, $recipient);
return new Response('SMS to recipient');
}
}
?>
Результат выполнения кода для адреса /sms-recipient:
"SMS to recipient"
Смотрите также
-
класс
Notification,
который представляет уведомление для отправки -
метод
channels,
который возвращает список каналов уведомления -
класс
Notifier,
который управляет отправкой уведомлений -
метод
send,
который отправляет уведомление получателю