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));
 | |
|     }
 | |
| }
 | 
