barnsleyhq / laravel-simplepush-notification-channel
一个简单的 SimplePush Laravel 通知通道
Requires
- php: ^8.0
Requires (Dev)
- guzzlehttp/guzzle: ^7.5
- laravel/framework: ^10.4
- nunomaduro/collision: ^6.1
- orchestra/testbench: ^8.0
- pestphp/pest: ^1.22
- pestphp/pest-plugin-laravel: ^1.4
- phpstan/phpstan: ^1.10
- phpunit/phpunit: ^9.6
README
此软件包提供了您发送通知到可通知模型所需的所有基本元素,通过 SimplePush 实现。
配置
使用 composer 安装包
composer require barnsleyhq/laravel-simplepush-notifications-channel
Laravel 使用
安装完成后,您只需要设置通知以发送到 SimplePush 通道
<?php use BarnsleyHQ\SimplePush\Models\Actions\GetAction; use BarnsleyHQ\SimplePush\Models\Actions\GetActions; use BarnsleyHQ\SimplePush\Models\Attachments\VideoAttachment; use BarnsleyHQ\SimplePush\Models\SimplePushMessage; ... class CustomAlert { ... public function via($notifiable) { $channels = []; ... $channels[] = 'simplepush'; return $channels; } public function toSimplePush($notifiable): SimplePushMessage { return (new SimplePushMessage) ->token($notifiable->tokens->simplepush) // Change this line to get the token ->title('Custom Alert') ->content('You have a new alert!') ->event('Custom Event') ->actions(GetActions::make([ GetAction::make('Pause for 1 hour', 'https://webhooks.test.com/pause?hours=1'), GetAction::make('Pause for 24 hours', 'https://webhooks.test.com/pause?hours=24'), ])) ->attachments(VideoAttachment::make('https://my-url.com/thumbnail.png', 'https://my-url.com/video.mp4')); } ... }
API
BarnsleyHQ\SimplePush\Models\SimplePushMessage
必需
token(string): SimplePushMessage
发送通知时使用的令牌。
示例
$message = (new SimplePushMessage()) ->token('test-token'); $message = new SimplePushMessage(); $message->token('test-token');
content(string): SimplePushMessage
要包含在通知中的消息内容。
示例
$message = (new SimplePushMessage()) ->content('This is a Test Alert'); $message = new SimplePushMessage(); $message->content('This is a Test Alert');
可选
title(string): SimplePushMessage
通知的标题。
示例
$message = (new SimplePushMessage()) ->title('Test Alert'); $message = new SimplePushMessage(); $message->title('Test Alert');
event(string): SimplePushMessage
通知发送后触发的事件。
示例
$message = (new SimplePushMessage()) ->event('test-event'); $message = new SimplePushMessage(); $message->event('test-event');
actions(FeedbackActions|GetActions): SimplePushMessage
与事件一起发送的操作。
反馈操作示例
$message = (new SimplePushMessage()) ->actions(FeedbackActions::make('Pause events for 1 hour')); $actions = FeedbackActions::make([ 'Pause events for 1 hour', 'Pause events for 2 hours', ]); $actions->add('Pause events for 3 hours'); $message = new SimplePushMessage(); $message->actions($actions);
获取操作示例
$message = (new SimplePushMessage()) ->actions(GetActions::make(GetAction::make('Pause events for 1 hour', 'https://my-url.com/pause?hours=1'))); $actions = GetActions::make([ GetAction::make('Pause events for 1 hour', 'https://my-url.com/pause?hours=1'), GetAction::make('Pause events for 2 hours', 'https://my-url.com/pause?hours=2'), ]); $actions->add(GetAction::make('Pause events for 3 hours', 'https://my-url.com/pause?hours=3')); $message = new SimplePushMessage(); $message->actions($actions);
BarnsleyHQ\SimplePush\Models\Actions\FeedbackActions
make(string|array $action, null|callable $sendCallback = null): FeedbackActions
使用初始操作创建 FeedbackActions 的新实例。
示例
$actions = FeedbackActions::make('Action 1'); $actions = FeedbackActions::make('Action 1', fn ($feedbackId) => saveFeedbackId($feedbackId));
getFeedbackResponseForId(string $feedbackId, ?\GuzzleHttp\Client $httpClient): array|null
检查消息以获取反馈响应。
示例
FeedbackActions::getFeedbackResponseForId('5e885b1d33c547bbac78bda8cdaf7be7');
add(string|array $action): FeedbackActions
将另一个操作添加到现有的 FeedbackActions 实例。
示例
$actions = FeedbackActions::make('Action 1') ->add('Action 2'); $actions = new FeedbackActions(); $actions->add([ 'Action 1', 'Action 2', ]);
sendCallback(null|callable $sendCallback): FeedbackActions
更新回调以检索现有 FeedbackActions 实例的 Feedback ID。
示例
$actions = FeedbackActions::make('Action 1') ->sendCallback(fn ($feedbackId) => saveFeedbackId($feedbackId)); $actions = new FeedbackActions(); $actions->sendCallback(function ($feedbackId) { $this->saveFeedbackId($feedbackId); });
toArray: array
以数组形式返回 FeedbackAction 选项。
示例
$actions = FeedbackActions::make('Action 1') ->toArray(); $actions = new FeedbackActions(); $actions->toArray();
BarnsleyHQ\SimplePush\Models\Actions\GetActions
make(GetAction $action): GetActions
使用初始操作创建 GetActions 的新实例。
示例
$actions = GetActions::make(GetAction::make('Action 1', 'https://my-url.com/action'));
add(GetAction|array $action): GetActions
将另一个操作添加到现有的 GetActions 实例。
示例
$actions = GetActions::make(GetAction::make('Action 1', 'https://my-url.com/action')) ->add(GetAction::make('Action 2', 'https://my-url.com/action-2')); $actions = new GetActions(); $actions->add([ GetAction::make('Action 1', 'https://my-url.com/action'), GetAction::make('Action 2', 'https://my-url.com/action-2'), ]);
addAction(string $name, string $url): GetActions
将另一个操作,仅包含所需值,添加到现有的 GetActions 实例。
示例
$actions = GetActions::make() ->addAction('Action 1', 'https://my-url.com/action'); $actions->addAction('Action 1', 'https://my-url.com/action');
toArray: array
以数组形式返回 GetActions 选项。
示例
$actions = GetActions::make(GetAction::make('Action 1', 'https://my-url.com/action')) ->toArray(); $actions = new GetActions(); $actions->toArray();
BarnsleyHQ\SimplePush\Models\Actions\GetAction
make(string $name, string $url): GetAction
使用初始值创建 GetAction 的新实例。
示例
$actions = GetAction::make('Action 1', 'https://my-url.com/action');
setName(string $name): GetAction
设置操作的名称。
示例
$actions = GetAction::make('Action 1', 'https://my-url.com/action') ->setName('Renamed Action') ->setUrl('https://my-url.com/renamed-action'); $actions = new GetAction(); $actions->setName('Action 1') ->setUrl('https://my-url.com/action');
setUrl(string $url): GetAction
设置操作的 URL。
示例
$actions = GetAction::make() ->addAction('Action 1', 'https://my-url.com/action'); $actions->addAction('Action 1', 'https://my-url.com/action');
toArray: array
以数组形式返回 GetAction 选项。
示例
$actions = GetAction::make('Action 1', 'https://my-url.com/action') ->setName('Renamed Action') ->setUrl('https://my-url.com/renamed-action') ->toArray(); $actions = new GetAction(); $actions->setName('Action 1') ->setUrl('https://my-url.com/action') ->toArray();
BarnsleyHQ\SimplePush\Models\Attachments\GenericAttachments
允许的扩展名
- jpg
- png
- gif
- mp4
make(string|array $attachment): GenericAttachments
使用初始附件创建 GenericAttachments 的新实例。
示例
$attachments = GenericAttachments::make('https://test.com/image.png');
add(string|array $action): GenericAttachments
将另一个操作添加到现有的 GenericAttachments 实例。
示例
$attachments = GenericAttachments::make('https://test.com/image.png') ->add('https://test.com/video.mp4'); $attachments = new GenericAttachments(); $attachments->add([ 'https://test.com/image.png', 'https://test.com/video.mp4', ]);
toArray: array
以数组形式返回 FeedbackAction 选项。
示例
$attachments = GenericAttachments::make('https://test.com/image.png') ->toArray(); $attachments = new GenericAttachments(); $attachments->toArray();
BarnsleyHQ\SimplePush\Models\Attachments\StreamAttachment
make(string $streamUrl): StreamAttachment
使用初始值创建 StreamAttachment 的新实例。
示例
$actions = StreamAttachment::make('rtsp://my-url.com/stream');
setStreamUrl(string $streamUrl): StreamAttachment
设置操作的名称。
示例
$actions = StreamAttachment::make('rtsp://my-url.com/stream') ->setStreamUrl('rtsp://my-url.com/different-stream'); $actions = new StreamAttachment(); $actions->setStreamUrl('rtsp://my-url.com/stream');
toArray: array
以数组形式返回 StreamAttachment 选项。
示例
$actions = StreamAttachment::make('rtsp://my-url.com/stream') ->toArray(); $actions = new StreamAttachment(); $actions->setStreamUrl('https://my-url.com/action') ->toArray();
BarnsleyHQ\SimplePush\Models\Attachments\VideoAttachment
make(string $thumbnailUrl, string $videoUrl): VideoAttachment
使用初始值创建 VideoAttachment 的新实例。
示例
$actions = VideoAttachment::make('https://my-url.com/thumbnail.png', 'https://my-url.com/video.mp4');
setThumbnailUrl(string $thumbnailUrl): VideoAttachment
设置附件的缩略图 URL。
示例
$actions = VideoAttachment::make('https://my-url.com/thumbnail.png', 'https://my-url.com/video.mp4') ->setThumbnailUrl('https://my-url.com/different-thumbnail.jpg'); $actions = new VideoAttachment(); $actions->setThumbnailUrl('rtsp://my-url.com/stream');
setVideoUrl(string $videoUrl): VideoAttachment
设置附件的视频 URL。
示例
$actions = VideoAttachment::make('https://my-url.com/thumbnail.png', 'https://my-url.com/video.mp4') ->setVideoUrl('https://my-url.com/different-video.mp4'); $actions = new VideoAttachment(); $actions->setVideoUrl('https://my-url.com/video.mp4');
toArray: array
以数组形式返回 VideoAttachment 选项。
示例
$actions = VideoAttachment::make('https://my-url.com/thumbnail.png', 'https://my-url.com/video.mp4') ->toArray(); $actions = new VideoAttachment(); $actions->setVideoUrl('https://my-url.com/action') ->toArray();
基本 PHP 使用
虽然这个软件包是为 Laravel 构建的,但也可以在不使用 Laravel 的情况下使用。
<?php use BarnsleyHQ\SimplePush\Models\GetAction; use BarnsleyHQ\SimplePush\Models\GetActions; use BarnsleyHQ\SimplePush\Models\SimplePushMessage; (new SimplePushMessage) ->token('123456') ->title('Custom Alert') ->content('You have a new alert!') ->event('Custom Event') ->actions(GetActions::make([ GetAction::make('Pause for 1 hour', 'https://webhooks.my-url.com/pause?hours=1'), GetAction::make('Pause for 24 hours', 'https://webhooks.my-url.com/pause?hours=24'), ])) ->send();
测试
对于基本测试,运行
$ composer test
或者,为了测试代码覆盖率
$ composer test:coverage
安全性
如果您发现任何安全漏洞,请通过电子邮件发送至 alex@barnsley.io,而不是提交一个问题。
许可证
MIT许可证(MIT)。更多信息请参阅 许可证文件。