diff --git a/app/Notifications/Channels/SendsWebhook.php b/app/Notifications/Channels/SendsWebhook.php new file mode 100644 index 000000000..9301a4ff0 --- /dev/null +++ b/app/Notifications/Channels/SendsWebhook.php @@ -0,0 +1,8 @@ +webhookNotificationSettings; + + if (! $webhookSettings || ! $webhookSettings->isEnabled() || ! $webhookSettings->webhook_url) { + return; + } + + // TODO: Implement actual webhook delivery + // This is a placeholder implementation + // You'll need to: + // 1. Get the webhook payload from $notification->toWebhook() + // 2. Create a job to send the HTTP POST request to $webhookSettings->webhook_url + // 3. Handle retries and errors appropriately + + Log::info('Webhook notification would be sent', [ + 'url' => $webhookSettings->webhook_url, + 'notification' => get_class($notification), + ]); + } +} diff --git a/app/Notifications/Test.php b/app/Notifications/Test.php index 430eb7b48..5a635a601 100644 --- a/app/Notifications/Test.php +++ b/app/Notifications/Test.php @@ -7,6 +7,7 @@ use App\Notifications\Channels\PushoverChannel; use App\Notifications\Channels\SlackChannel; use App\Notifications\Channels\TelegramChannel; +use App\Notifications\Channels\WebhookChannel; use App\Notifications\Dto\DiscordMessage; use App\Notifications\Dto\PushoverMessage; use App\Notifications\Dto\SlackMessage; @@ -36,7 +37,7 @@ public function via(object $notifiable): array 'telegram' => [TelegramChannel::class], 'slack' => [SlackChannel::class], 'pushover' => [PushoverChannel::class], - 'webhook' => [], // WebhookChannel will be implemented later + 'webhook' => [WebhookChannel::class], default => [], }; } else { @@ -111,4 +112,13 @@ public function toSlack(): SlackMessage description: 'This is a test Slack notification from Coolify.' ); } + + public function toWebhook(): array + { + return [ + 'event' => 'test', + 'message' => 'This is a test webhook notification from Coolify.', + 'url' => base_url(), + ]; + } } diff --git a/app/Traits/HasNotificationSettings.php b/app/Traits/HasNotificationSettings.php index d10122386..297b44a06 100644 --- a/app/Traits/HasNotificationSettings.php +++ b/app/Traits/HasNotificationSettings.php @@ -7,6 +7,7 @@ use App\Notifications\Channels\PushoverChannel; use App\Notifications\Channels\SlackChannel; use App\Notifications\Channels\TelegramChannel; +use App\Notifications\Channels\WebhookChannel; use Illuminate\Database\Eloquent\Model; trait HasNotificationSettings @@ -78,6 +79,7 @@ public function getEnabledChannels(string $event): array 'telegram' => TelegramChannel::class, 'slack' => SlackChannel::class, 'pushover' => PushoverChannel::class, + 'webhook' => WebhookChannel::class, ]; if ($event === 'general') {