barnsleyhq/laravel-simplepush-notification-channel

一个简单的 SimplePush Laravel 通知通道

1.1.0 2023-06-18 00:09 UTC

This package is auto-updated.

Last update: 2024-09-18 02:57:26 UTC


README

Latest Stable Version PHP Version Require License codecov

此软件包提供了您发送通知到可通知模型所需的所有基本元素,通过 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)。更多信息请参阅 许可证文件