Канал chat
Канал chat - это один из встроенных каналов
компонента Notifier, который отвечает за
отправку уведомлений в чат-сервисы. Канал
указывается в методе channels класса
Notification и определяет, через какой
транспорт (Slack, Telegram, Mattermost и т.д.)
будет доставлено сообщение. Настройка транспортов
выполняется в файле config/packages/notifier.yaml
в секции chatter_transports.
Синтаксис
public function channels(RecipientInterface $recipient): array
{
return ['chat'];
}
Пример
Давайте создадим класс уведомления, которое отправляется в чат:
<?php
namespace App\Notification;
use Symfony\Component\Notifier\Notification\Notification;
use Symfony\Component\Notifier\Recipient\RecipientInterface;
class ArticleNotification extends Notification
{
public function __construct()
{
parent::__construct('article');
}
public function channels(RecipientInterface $recipient): array
{
return ['chat'];
}
public function getChatMessage(RecipientInterface $recipient): string
{
return 'hello';
}
}
?>
Результат выполнения кода:
"hello"
Пример
Давайте настроим транспорт Slack и отправим
уведомление через Notifier:
framework:
notifier:
chatter_transports:
slack:
dsn: '%env(SLACK_DSN)%'
Теперь отправим уведомление из контроллера:
<?php
namespace App\Controller;
use App\Notification\ArticleNotification;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Notifier\NotifierInterface;
use Symfony\Component\Notifier\Recipient\Recipient;
use Symfony\Component\Routing\Attribute\Route;
class ArticleController extends AbstractController
{
#[Route('/article', name: 'article_index')]
public function index(NotifierInterface $notifier): Response
{
$notification = new ArticleNotification();
$recipient = new Recipient('user@example.com');
$notifier->send($notification, $recipient);
return new Response('sent');
}
}
?>
Результат выполнения кода:
sent
Смотрите также
-
класс
Notification,
который представляет уведомление -
метод
channels,
который задаёт каналы доставки -
класс
Notifier,
который отправляет уведомления -
метод
send,
который выполняет отправку уведомления