Saltar al contenido principal

Resumen

revolution/laravel-notification-discord-webhook es un paquete que envía notificaciones a Discord desde Laravel Notifications utilizando Discord Webhook. La API oficial de bots de Discord requiere mantener una conexión WebSocket y su configuración es compleja. Con Webhook basta con obtener una URL para enviar notificaciones. Si solo quieres notificar los eventos de tu aplicación al canal de Discord de tu equipo, Webhook es la mejor opción.
Este paquete requiere PHP 8.3 o superior y Laravel 12.0 o superior.

Instalación

composer require revolution/laravel-notification-discord-webhook

Configuración

Obtén la URL del Webhook de Discord

Puedes crear una URL de Webhook desde Ajustes del servidor → Integraciones → Webhooks de tu servidor de Discord. Para más detalles, consulta la guía oficial de Discord.

config/services.php

'discord' => [
    'webhook' => env('DISCORD_WEBHOOK'),
],

.env

DISCORD_WEBHOOK=https://discord.com/api/webhooks/...

Uso básico

Crea una clase Notification

Implementa el método toDiscordWebhook() y devuelve DiscordChannel::class desde via().
<?php

namespace App\Notifications;

use Illuminate\Bus\Queueable;
use Illuminate\Notifications\Notification;
use Illuminate\Contracts\Queue\ShouldQueue;
use Revolution\Laravel\Notification\DiscordWebhook\DiscordChannel;
use Revolution\Laravel\Notification\DiscordWebhook\DiscordMessage;

class DiscordNotification extends Notification implements ShouldQueue
{
    use Queueable;

    public function __construct(protected string $content)
    {
        //
    }

    public function via($notifiable): array
    {
        return [DiscordChannel::class];
    }

    public function toDiscordWebhook(object $notifiable): DiscordMessage
    {
        return DiscordMessage::create(content: $this->content);
    }
}

Patrones de envío

Notificaciones On-Demand

Para enviar notificaciones sin vincularlas a un modelo de usuario concreto, utiliza Notification::route().
use Illuminate\Support\Facades\Notification;

Notification::route('discord-webhook', config('services.discord.webhook'))
            ->notify(new DiscordNotification('El despliegue se ha completado.'));

Notificación desde el modelo User

Para usar una URL de Webhook distinta por usuario, define routeNotificationForDiscordWebhook().
use Illuminate\Notifications\Notifiable;

class User extends Authenticatable
{
    use Notifiable;

    public function routeNotificationForDiscordWebhook($notification): string
    {
        return $this->discord_webhook;
    }
}
$user->notify(new DiscordNotification('Notificación de prueba'));

Tipos de mensaje

Mensaje de texto

Es la forma más sencilla de enviar.
public function toDiscordWebhook(object $notifiable): DiscordMessage
{
    return DiscordMessage::create(content: $this->content);
}

Mensajes con embed

Con DiscordEmbed puedes mostrar contenido enriquecido, con título y URL.
use Revolution\Laravel\Notification\DiscordWebhook\DiscordMessage;
use Revolution\Laravel\Notification\DiscordWebhook\DiscordEmbed;

public function toDiscordWebhook(object $notifiable): DiscordMessage
{
    return DiscordMessage::create()
                          ->embed(
                              DiscordEmbed::make(
                                  title: 'INFO',
                                  description: $this->content,
                                  url: route('home'),
                              )
                          );
}

Archivos adjuntos

Con DiscordAttachment puedes adjuntar archivos al mensaje. Son obligatorios content (el contenido del archivo) y filename.
use Revolution\Laravel\Notification\DiscordWebhook\DiscordMessage;
use Revolution\Laravel\Notification\DiscordWebhook\DiscordAttachment;
use Illuminate\Support\Facades\Storage;

public function toDiscordWebhook(object $notifiable): DiscordMessage
{
    return DiscordMessage::create()
        ->file(
            DiscordAttachment::make(
                content: Storage::get('test.png'),
                filename: 'test.png',
                description: 'test',
                filetype: 'image/png'
            )
        );
}

Referencia a archivos dentro del embed

Puedes referenciar los archivos adjuntos en image o thumbnail del embed mediante attachment://nombre-de-archivo.
use Revolution\Laravel\Notification\DiscordWebhook\DiscordMessage;
use Revolution\Laravel\Notification\DiscordWebhook\DiscordAttachment;
use Revolution\Laravel\Notification\DiscordWebhook\DiscordEmbed;
use Illuminate\Support\Facades\Storage;

public function toDiscordWebhook(object $notifiable): DiscordMessage
{
    return DiscordMessage::create()
                          ->embed(
                              DiscordEmbed::make(
                                  title: 'test',
                                  description: $this->content,
                                  image: 'attachment://test.jpg',
                                  thumbnail: 'attachment://test2.jpg',
                              )
                          )
                          ->file(DiscordAttachment::make(
                              content: Storage::get('test.jpg'),
                              filename: 'test.jpg',
                              description: 'test',
                              filetype: 'image/jpg'
                          ))
                          ->file(new DiscordAttachment(
                              content: Storage::get('test2.jpg'),
                              filename: 'test2.jpg',
                              description: 'test2',
                              filetype: 'image/jpg'
                          ));
}

Enviar un payload personalizado

Con ->with() puedes especificar directamente cualquier parámetro del Webhook de Discord.
public function toDiscordWebhook(object $notifiable): DiscordMessage
{
    return DiscordMessage::create()
                          ->with([
                              'content' => $this->content,
                              'embeds' => [[]],
                          ]);
}
Para más detalles sobre los parámetros que se pueden pasar a ->with(), consulta la documentación oficial de la API de Discord.

Resumen

Los bots de Discord son potentes, pero si solo quieres enviar notificaciones, Webhook es mucho más sencillo. Con este paquete puedes integrarte sin fricciones con el sistema de notificaciones de Laravel y notificar rápidamente los eventos de tu aplicación al canal de Discord del equipo.
Para la información más reciente, consulta el repositorio de GitHub.
Última modificación el 13 de julio de 2026