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