Notifications в Telegram

Для отправки уведомлений через Telegram необходимо настроить драйвер telegram в файле конфигурации уведомлений. Перед этим убедитесь, что у вас есть токен Telegram бота. Если у вас еще нет бота, создайте его через @BotFather в Telegram, выполнив команду /newbot.

Конфигурация

Пример конфигурации канала telegram в файле config/notifications.php:

//..
'channels' => [
    'telegram' => [
        'driver' => 'telegram',
        'token' => 'YOUR_BOT_TOKEN', // Токен бота, полученный от @BotFather
        'parse_mode' => 'MarkdownV2', // Режим разметки: MarkdownV2, Markdown или HTML
        'disable_web_page_preview' => true, // Отключение предпросмотра веб-страниц
    ],
],
//..
PHP

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

Для отправки уведомления в Telegram необходимо определить метод toTelegram(mixed $recipient), который должен вернуть объект Imhotep\Notifications\Messages\TelegramMessage. Класс TelegramMessage предоставляет методы для гибкого формирования сообщений:

namespace App\Notifications;

use App\Models\User;
use Imhotep\Notifications\Notification;
use Imhotep\Notifications\Messages\TelegramMessage;

class MyTelegramNotification extends Notification
{
    public function via(mixed $recipient): array
    {
        return ['telegram'];
    }

    public function toTelegram(mixed $recipient): TelegramMessage
    {
        $message = new TelegramMessage();
        
        // Установка приветствия (обычно отображается жирным шрифтом)
        $message->greeting('Приветствуем!');
        
        // Добавление строк текста
        $message->line('Ваш заказ №12345 успешно оформлен.');
        $message->line('Ожидайте доставки в течение 2-3 рабочих дней.');
        
        // Добавление строки при выполнении условия
        $message->lineIf($recipient->is_vip, 'Вам доступен приоритетный статус доставки.');
        
        // Добавление нескольких строк
        $message->lines([
            'Спасибо за покупку!',
            'Наш менеджер свяжется с вами для подтверждения.',
        ]);
        
        // Добавление строк при выполнении условия
        $message->linesIf($recipient->has_feedback, [
            'Пожалуйста, оставьте отзыв о товаре.',
            'Это поможет другим покупателям.',
        ]);
        
        // Установка режима разметки (по умолчанию MarkdownV2)
        $message->parseMode('HTML');
        
        // Отключение предпросмотра веб-страниц (по умолчанию true)
        $message->disableWebPagePreview(true);
        
        return $message;
    }
}
PHP

Полезные ссылки