47 lines
2.0 KiB
PHP
47 lines
2.0 KiB
PHP
<?php
|
|
|
|
namespace App\Notifications\Channels;
|
|
|
|
use App\Jobs\SendMessageToTelegramJob;
|
|
|
|
class TelegramChannel
|
|
{
|
|
public function send($notifiable, $notification): void
|
|
{
|
|
$data = $notification->toTelegram($notifiable);
|
|
$telegramData = $notifiable->routeNotificationForTelegram();
|
|
$message = data_get($data, 'message');
|
|
$buttons = data_get($data, 'buttons', []);
|
|
$telegramToken = data_get($telegramData, 'token');
|
|
$chatId = data_get($telegramData, 'chat_id');
|
|
$topicId = null;
|
|
$topicsInstance = get_class($notification);
|
|
|
|
switch ($topicsInstance) {
|
|
case 'App\Notifications\Test':
|
|
$topicId = data_get($notifiable, 'telegram_notifications_test_message_thread_id');
|
|
break;
|
|
case 'App\Notifications\Application\StatusChanged':
|
|
case 'App\Notifications\Container\ContainerRestarted':
|
|
case 'App\Notifications\Container\ContainerStopped':
|
|
$topicId = data_get($notifiable, 'telegram_notifications_status_changes_message_thread_id');
|
|
break;
|
|
case 'App\Notifications\Application\DeploymentSuccess':
|
|
case 'App\Notifications\Application\DeploymentFailed':
|
|
$topicId = data_get($notifiable, 'telegram_notifications_deployments_message_thread_id');
|
|
break;
|
|
case 'App\Notifications\Database\BackupSuccess':
|
|
case 'App\Notifications\Database\BackupFailed':
|
|
$topicId = data_get($notifiable, 'telegram_notifications_database_backups_message_thread_id');
|
|
break;
|
|
case 'App\Notifications\ScheduledTask\TaskFailed':
|
|
$topicId = data_get($notifiable, 'telegram_notifications_scheduled_tasks_thread_id');
|
|
break;
|
|
}
|
|
if (! $telegramToken || ! $chatId || ! $message) {
|
|
return;
|
|
}
|
|
dispatch(new SendMessageToTelegramJob($message, $buttons, $telegramToken, $chatId, $topicId));
|
|
}
|
|
}
|