notify:基于 PHP 的多平台消息推送 SDK 项目

Push notification SDK(AnPush、Bark、Chanify、DingTalk、Discord、Gitter、GoogleChat、IGot、Lark、Mattermost、MicrosoftTeams、NowPush、Ntfy、Push、Pushback、PushBullet、PushDeer、PushMe、Pushover、PushPlus、QQ、RocketChat、ServerChan、ShowdocPush、SimplePush、Slack、Telegram、WeWork、WPush、XiZhi、YiFengChuanHua、ZohoCliq、Zulip).

分支7Tags145
文件最后提交记录最后更新时间
6 个月前
29 天前
6 个月前
6 个月前
2 年前
1 个月前
1 个月前
1 个月前
6 个月前
5 个月前
5 个月前
6 个月前
6 个月前
6 个月前
1 个月前
5 个月前
6 个月前
6 个月前
1 个月前
6 个月前
1 个月前
5 个月前
5 个月前
1 个月前
5 个月前
5 个月前
6 个月前
6 个月前
5 个月前
1 个月前
1 个月前

notify

Note

推送通知 SDK(AnPush、Bark、Chanify、钉钉、Discord、Gitter、GoogleChat、IGot、飞书、Mattermost、MicrosoftTeams、NotifyX、NowPush、Ntfy、Push、Pushback、PushBullet、PushDeer、PushMe、Pushover、PushPlus、QQ、RocketChat、ServerChan、ShowdocPush、SimplePush、Slack、Telegram、企业微信、WPush、息知、易风传话、ZohoCliq、ZohoCliqWebHook、Zulip)。

tests php-cs-fixer codecov Latest Stable Version GitHub release (with filter) Total Downloads License

平台支持

相关仓库

环境要求

  • PHP >= 8.2

安装

composer require guanguans/notify -v

使用示例

快速开始

$response = (new Guanguans\Notify\DingTalk\Client(
        new Guanguans\Notify\DingTalk\Authenticator('c44fec1ddaa8a833156efb77b7865d62ae13775418030d94d05da08bfca73')
    ))
    ->send(
        Guanguans\Notify\DingTalk\Messages\BtnsActionCardMessage::make([
            'title' => 'This is title(keyword).',
            'text' => 'This is text.',
        ])
    )
    // ->dump()
    ->json();
// 1. Create authenticator
$authenticator = new Guanguans\Notify\DingTalk\Authenticator(
    'c44fec1ddaa8a833156efb77b7865d62ae13775418030d94d05da08bfca73',
    // 'SECc32bb7345c0f73da2b9786f0f7dd5083bd768a29b82e6d460149d730eee51'
);

// 2. Create client
$client = new Guanguans\Notify\DingTalk\Client($authenticator);

// 3. Create message
$message = Guanguans\Notify\DingTalk\Messages\BtnsActionCardMessage::make([
    'title' => 'This is title(keyword).',
    'text' => 'This is text.',
    // 'btnOrientation' => 1,
    // 'btns' => [
    //     [
    //         'title' => 'This is title 1.',
    //         'actionURL' => 'https://github.com/guanguans/notify',
    //     ],
    // ],
])
    ->btnOrientation(1)
    ->addBtn([
        'title' => 'This is title 2.',
        'actionURL' => 'https://github.com/guanguans/notify',
    ]);

// 4. Send message
$response = $client
    // ->baseUri('base-uri')
    // ->connectTimeout(10)
    // ->debug(true)
    // ->proxy('http://127.0.0.1:1087')
    // ->timeout(30)
    // ->verify(false)
    // ->push(
    //     GuzzleHttp\Middleware::log(
    //         new Psr\Log\NullLogger,
    //         new GuzzleHttp\MessageFormatter(GuzzleHttp\MessageFormatter::DEBUG)
    //     ),
    //     'log'
    // )
    // ->before(
    //     'log',
    //     GuzzleHttp\Middleware::mapRequest(
    //         static fn (Psr\Http\Message\RequestInterface $request) => $request
    //     ),
    // )
    ->send($message)
    ->dump()
    // ->throw()
    ->json();

异步请求

$promise = $client->sendAsync($message);
$response = $promise->wait();

并发请求

/** @var iterable<array-key, \Guanguans\Notify\Foundation\Contracts\Message> $messages */
/** @var array<array-key, \Guanguans\Notify\Foundation\Response|\Psr\Http\Message\ResponseInterface> $responses */
$responses = $client->pool($messages);

Hyperf 集成

use Guanguans\Notify\Foundation\Client;
use GuzzleHttp\HandlerStack;
use Hyperf\Guzzle\CoroutineHandler;
use Hyperf\Guzzle\HandlerStackFactory;
use Hyperf\Guzzle\PoolHandler;

// Set Handler directly
// $client->setHandler(make(CoroutineHandler::class));
// $client->setHandler(make(PoolHandler::class));
$client->setHandler((fn () => $this->getHandler($this->option))->call(new HandlerStackFactory));

// Or set HandlerStackResolver
$client->setHandlerStackResolver(static fn (Client $client): HandlerStack => array_reduce(
    $client->defaultMiddlewares(),
    static fn (HandlerStack $handlerStack, callable $middleware) => tap($handlerStack)->push($middleware),
    (new HandlerStackFactory)->create()
));

补全

Tip

需要安装 Laravel Idea 插件。

completion

Composer 脚本

composer app:generate-ide-json
composer app:platform-lint
composer checks:required
composer php-cs-fixer:fix
composer test

基准测试

composer benchmark
+---------------------+--------------------------+-----+-------+-----+----------+-----------+--------+
| benchmark           | subject                  | set | revs  | its | mem_peak | mode      | rstdev |
+---------------------+--------------------------+-----+-------+-----+----------+-----------+--------+
| SendMessageBench    | benchSendMessage         |     | 10000 | 3   | 6.432mb  | 156.609μs | ±0.33% |
| CreateInstanceBench | benchCreateAuthenticator |     | 10000 | 3   | 5.208mb  | 0.657μs   | ±0.68% |
| CreateInstanceBench | benchCreateMessage       |     | 10000 | 3   | 5.208mb  | 1.769μs   | ±0.20% |
| CreateInstanceBench | benchCreateClient        |     | 10000 | 3   | 82.791mb | 13.827μs  | ±0.40% |
+---------------------+--------------------------+-----+-------+-----+----------+-----------+--------+

更新日志

有关近期变更的更多信息,请参阅 CHANGELOG

贡献指南

详情请参见 CONTRIBUTING

安全漏洞

请查看 我们的安全政策,了解如何报告安全漏洞。

贡献者

鸣谢

许可证

MIT 许可证(MIT)。有关更多信息,请参见 许可证文件

项目介绍

推送通知SDK(Bark、Chanify、钉钉、Discord、电子邮件、飞书、Gitter、Google Chat、iGot、Logger、Mattermost、微软团队、Now Push、Ntfy、PushBack、Push、PushDeer、Pushover、PushPlus、QQ频道机器人、Rocket Chat、ServerChan、Showdoc Push、Slack、Telegram、Webhook、企业微信、稀释、易风传话、Zulip)。【此简介由AI生成】

定制我的领域