Send notifications through user defined webhooks
lenderspender/laravel-webhook-channel is a Laravel package for send notifications through user defined webhooks.
It currently has 0 GitHub stars and 7.012 downloads on Packagist (latest version 3.2.0).
Install it with composer require lenderspender/laravel-webhook-channel.
Discover more Laravel packages by lenderspender
or browse all Laravel packages to compare alternatives.
Last updated
Laravel webhook chanel allows you to send JsonResource objects as notifications to your users.
You can install the package via composer:
composer require lenderspender/laravel-webhook-channel
Implement ReceivesWebhooks on the model that you would like to receive webhooks.
<?php
declare(strict_types=1);
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Notifications\Notifiable;
use LenderSpender\LaravelWebhookChannel\Receiver\ReceivesWebhooks;
use LenderSpender\LaravelWebhookChannel\Receiver\WebhookData;
class User extends Model implements ReceivesWebhooks
{
use Notifiable;
public function routeNotificationForWebhook() : ?WebhookData
{
return new WebhookData('https://example.com/webhooks/', 'users-webhook-secret');
}
}
To allow your notifications to send webhook data you simply need to implement WebhookNotification. It accepts Eloquent: API Resources.
<?php
declare(strict_types=1);
namespace App\Notifications;
use Illuminate\Notifications\Notifiable;
use Illuminate\Notifications\Notification;
use LenderSpender\LaravelWebhookChannel\Receiver\ReceivesWebhooks;use LenderSpender\LaravelWebhookChannel\Receiver\WebhookMessage;use LenderSpender\LaravelWebhookChannel\WebhookNotification;
class StatusUpdatedNotification extends Notification implements WebhookNotification
{
use Notifiable;
public function routeNotificationForWebhook(ReceivesWebhooks $notifiable) : WebhookMessage
{
$resource = new UserResource($notifiable);
return new WebhookMessage('foo_was_updated', $resource);
}
}
<?php
declare(strict_types=1);
namespace App\Http\Controllers;
class NotificationController
{
public function __invoke()
{
auth()->user()->notify(new StatusUpdatedNotification());
}
}
Each webhook call is stored in the WebhookNotificationMessage model. Implement the HasWebhookNotificationMessages on the model that you would like to view the webhook messages from.
<?php
declare(strict_types=1);
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Notifications\Notifiable;
use LenderSpender\LaravelWebhookChannel\Receiver\HasWebhookNotificationMessages;
use LenderSpender\LaravelWebhookChannel\Receiver\ReceivesWebhooks;
class User extends Model implements ReceivesWebhooks
{
use Notifiable;
use HasWebhookNotificationMessages;
}
WebhookNotificationMessages can be retried by calling the callWebhook method on the WebhookNotificationMessage model.