Дата обновления перевода: 2020-12-25

Как отправляеть Chat-сообщения

New in version 5.0: Компонент Notifier появился в Symfony 5.0 как экспериментальная возможность.

Класс ChatterInterface позволяет вам отправлять в сервисы чатов такие как Slack или Telegram:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
// src/Controller/CheckoutController.php
namespace App\Controller;

use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\Notifier\ChatterInterface;
use Symfony\Component\Notifier\Message\ChatMessage;
use Symfony\Component\Routing\Annotation\Route;

class CheckoutController extends AbstractController
{
    /**
     * @Route("/checkout/thankyou")
     */
    public function thankyou(ChatterInterface $chatter)
    {
        $message = (new ChatMessage('You got a new invoice for 15 EUR.'))
            // если не указано явно, сообщение отправится через
            // транспорт по умолчанию (первый в настройках)
            ->transport('slack');

        $sentMessage = $chatter->send($message);

        // ...
    }
}

Метод send() отправляет уведомление и возвращает переменную типа SentMessage, которая предоставляет такую информацию как message ID и содержимое отправленного сообщения.

New in version 5.2: Класс SentMessage появился в Symfony 5.2.

Прочитайте руководство по Notifier чтобы знать как настроить разные транспорты.

Добавление взаимодействий в сообщения Slack

При отправке сообещения Slack вы можете использовать SlackOptions для добавления интерактивных настроек называемых Блоковые элементы:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
use Symfony\Component\Notifier\Bridge\Slack\Block\SlackActionsBlock;
use Symfony\Component\Notifier\Bridge\Slack\Block\SlackDividerBlock;
use Symfony\Component\Notifier\Bridge\Slack\Block\SlackImageBlock;
use Symfony\Component\Notifier\Bridge\Slack\Block\SlackSectionBlock;
use Symfony\Component\Notifier\Bridge\Slack\SlackOptions;
use Symfony\Component\Notifier\Message\ChatMessage;

$chatMessage = new ChatMessage('Contribute To Symfony');

// Create Slack Actions Block and add some buttons
$contributeToSymfonyBlocks = (new SlackActionsBlock())
    ->button(
        'Improve Documentation',
        'https://symfony.com/doc/current/contributing/documentation/standards.html',
        'primary'
    )
    ->button(
        'Report bugs',
        'https://symfony.com/doc/current/contributing/code/bugs.html',
        'danger'
    );

$slackOptions = (new SlackOptions())
    ->block((new SlackSectionBlock())
        ->text('The Symfony Community')
        ->accessory(
            new SlackImageBlockElement(
                'https://symfony.com/favicons/apple-touch-icon.png',
                'Symfony'
            )
        )
    )
    ->block(new SlackDividerBlock())
    ->block($contributeToSymfonyBlocks);

// Добавьте настройки в chat-сообщение и отправьте его
$chatMessage->options($slackOptions);

$chatter->send($chatMessage);

Эта документация является переводом официальной документации Symfony и предоставляется по свободной лицензии CC BY-SA 3.0.