eonx-com / easy-notification
EonX 通知服务中的通知派发客户端
6.0.0
2024-08-15 12:18 UTC
Requires
- php: ^8.2
- aws/aws-sdk-php: ^3.269
- eonx-com/easy-utils: ^6.0
- nette/utils: ^4.0
- symfony/cache: ^7.0
- symfony/config: ^7.0
- symfony/contracts: ^3.5
- symfony/dependency-injection: ^7.0
- symfony/http-client: ^7.0
- symfony/http-kernel: ^7.0
Requires (Dev)
- laravel/lumen-framework: ^11.0
- phpunit/phpunit: ^10.2
- 6.x-dev
- dev-master / 6.1.x-dev
- 6.0.0
- 6.0.0-rc.1
- 6.0.0-alpha.5
- 6.0.0-alpha.4
- 6.0.0-alpha.3
- 6.0.0-alpha.2
- 6.0.0-alpha
- 5.13.2
- 5.13.1
- 5.13.0
- 5.12.1
- 5.12.0
- 5.11.3
- 5.11.2
- 5.11.1
- 5.11.0
- 5.10.5
- 5.10.4
- 5.10.3
- 5.10.2
- 5.10.1
- 5.10.0
- 5.9.3
- 5.9.2
- 5.9.1
- 5.9.0
- 5.8.0
- 5.7.5
- 5.7.4
- 5.7.3
- 5.7.2
- 5.7.1
- 5.7.0
- 5.6.16
- 5.6.15
- 5.6.14
- 5.6.13
- 5.6.12
- 5.6.11
- 5.6.10
- 5.6.9
- 5.6.8
- 5.6.7
- 5.6.6
- 5.6.5
- 5.6.4
- 5.6.3
- 5.6.2
- 5.6.1
- 5.6.0
- 5.5.0
- 5.4.0
- 5.3.2
- 5.3.1
- 5.3.0
- 5.2.2
- 5.2.1
- 5.2.0
- 5.1.7
- 5.1.6
- 5.1.5
- 5.1.4
- 5.1.3
- 5.1.2
- 5.1.1
- 5.1.0
- 5.0.3
- 5.0.2
- 5.0.1
- 5.0.0
- 4.x-dev
- 4.5.6
- 4.5.5
- 4.5.4
- 4.5.3
- 4.5.1
- 4.5.0
- 4.4.5
- 4.4.4
- 4.4.3
- 4.4.2
- 4.4.1
- 4.4.0
- 4.3.38
- 4.3.37
- 4.3.36
- 4.3.35
- 4.3.34
- 4.3.33
- 4.3.32
- 4.3.31
- 4.3.30
- 4.3.29
- 4.3.28
- 4.3.27
- 4.3.26
- 4.3.25
- 4.3.24
- 4.3.23
- 4.3.22
- 4.3.21
- 4.3.20
- 4.3.19
- 4.3.18
- 4.3.17
- 4.3.16
- 4.3.15
- 4.3.14
- 4.3.13
- 4.3.12
- 4.3.11
- 4.3.10
- 4.3.9
- 4.3.8
- 4.3.7
- 4.3.6
- 4.3.5
- 4.3.4
- 4.3.3
- 4.3.2
- 4.3.1
- 4.3.0
- 4.2.7
- 4.2.6
- 4.2.5
- 4.2.4
- 4.2.3
- 4.2.2
- 4.2.1
- 4.2.0
- 4.1.42
- 4.1.41
- 4.1.40
- 4.1.39
- 4.1.38
- 4.1.37
- 4.1.36
- 4.1.35
- 4.1.34
- 4.1.33
- 4.1.32
- 4.1.31
- 4.1.30
- 4.1.29
- 4.1.28
- 4.1.27
- 4.1.26
- 4.1.25
- 4.1.24
- 4.1.23
- 4.1.22
- 4.1.21
- 4.1.20
- 4.1.19
- 4.1.18
- 4.1.17
- 4.1.16
- 4.1.15
- 4.1.14
- 4.1.13
- 4.1.12
- 4.1.11
- 4.1.10
- 4.1.9
- 4.1.8
- 4.1.7
- 4.1.6
- 4.1.5
- 4.1.4
- 4.1.3
- 4.1.2
- 4.1.1
- 4.1.0
- 4.1.0-rc1
- 4.0.15
- 4.0.14
- 4.0.13
- 4.0.12
- 4.0.11
- 4.0.10
- 4.0.9
- 4.0.8
- 4.0.7
- 4.0.6
- 4.0.5
- 4.0.4
- 4.0.3
- 4.0.2
- 4.0.1
- 3.x-dev
- 3.4.29
- 3.4.28
- 3.4.27
- 3.4.26
- 3.4.25
- 3.4.24
- 3.4.24-beta1
- 3.4.23
- 3.4.22
- 3.4.21
- 3.4.20
- 3.4.19
- 3.4.18
- 3.4.17
- 3.4.16
- 3.4.15
- 3.4.14
- 3.4.13
- 3.4.12
- 3.4.11
- 3.4.10
- 3.4.9
- 3.4.8
- 3.4.7
- 3.4.6
- 3.4.5
- 3.4.4
- 3.4.3
- 3.4.2
- 3.4.1
- 3.4.0
- 3.3.15
- 3.3.14
- 3.3.13
- 3.3.12
- 3.3.11
- 3.3.10
- 3.3.9
- 3.3.8
- 3.3.7
- 3.3.6
- 3.3.5
- 3.3.4
- 3.3.3
- 3.3.1
- 3.3.0
- 3.2.14
- 3.2.13
- 3.2.12
- 3.2.11
- 3.2.10
- 3.2.9
- 3.2.8
- 3.2.7
- 3.2.6
- 3.2.5
- 3.2.4
- 3.2.3
- 3.2.2
- 3.2.1
- 3.2.0
- 3.2.0-alpha4
- 3.2.0-alpha3
- 3.2.0-alpha2
- 3.2.0-alpha1
- 3.1.9
- 3.1.8
- 3.1.7
- 3.1.6
- 3.1.5
- 3.1.5-alpha8
- 3.1.5-alpha7
- 3.1.5-alpha6
- 3.1.5-alpha5
- 3.1.5-alpha4
- 3.1.5-alpha3
- 3.1.5-alpha1
- 3.1.4
- 3.1.3
- 3.1.2
- 3.1.2-alpha4
- 3.1.2-alpha3
- 3.1.2-alpha2
- 3.1.2-alpha1
- 3.1.1
- 3.1.1-alpha2
- 3.1.1-alpha1
- 3.1.0
- 3.1.0-rc2
- 3.1.0-rc1
- 3.0.30
- 3.0.29
- 3.0.28
- 3.0.27
- 3.0.26
- 3.0.25
- 3.0.24
- 3.0.23
- 3.0.22
- 3.0.21
- 3.0.20
- 3.0.19
- 3.0.18
- 3.0.17
- 3.0.16
- 3.0.15
- 3.0.14
- 3.0.14-alpha3
- 3.0.14-alpha2
- 3.0.14-alpha1
- 3.0.13
- 3.0.12
- 3.0.11
- 3.0.10
- 3.0.9
- 3.0.8
- 3.0.7
- 3.0.6
- 3.0.5
- 3.0.5-alpha4
- 3.0.5-alpha3
- 3.0.5-alpha2
- 3.0.5-alpha1
- 3.0.4
- 3.0.3
- 3.0.2
- 3.0.1
- 3.0.0
- 3.0.0-alpha2
- 3.0.0-alpha1
- 2.5.33
- 2.5.32
- 2.5.31
- 2.5.30
- 2.5.29
- 2.5.28
- 2.5.27
- v2.5.26
- v2.5.25
- v2.5.24
- v2.5.23
- v2.5.22
- v2.5.21
- v2.5.20
- v2.5.19
- v2.5.18
- v2.5.17
- v2.5.16
- v2.5.15
- v2.5.14
- v2.5.13
- v2.5.12
- v2.5.11
- v2.5.10
- v2.5.9
- v2.5.8
- v2.5.7
- v2.5.6
- v2.5.5
- v2.5.4
- v2.5.3
- v2.5.2
- v2.5.1
- v2.5.0
- v2.4.49
- v2.4.48
- v2.4.47
- v2.4.46
- v2.4.45
- v2.4.44
- v2.4.43
- v2.4.42
- v2.4.41
- v2.4.40
- v2.4.39
- v2.4.38
- v2.4.37
- v2.4.36
- v2.4.35
- v2.4.34
- v2.4.33
- v2.4.32
- v2.4.31
- v2.4.30
- v2.4.29
- v2.4.28
- v2.4.27
- v2.4.26
- v2.4.25
- dev-feature/swoole-error-response
- dev-hotfix/swoole-pdo-client-pool-own-implementation
- dev-np/investigate-swoole-errors-in-aws
- dev-feature/git-subtree-for-split-1
- dev-feature/git-subtree-for-split
- dev-feature/easy-async-refactor
- dev-3.x-split-test
- dev-feature/exception-to-status-code
- dev-feature/easy-request-id
- dev-feature/easy-bugsnag
- dev-feature/error-handler-framework-agnostic
- dev-integration/easy-api-token-and-easy-security
This package is auto-updated.
Last update: 2024-09-19 04:49:18 UTC
README
---eonx_docs--- 标题:简介 重量:0 ---eonx_docs---
此包旨在简化 EonX 通知服务内通知的派发,并且仅与此服务兼容。
依赖包(Composer)
安装此包的推荐方法是使用 Composer
$ composer require eonx-com/easy-notification
配置
为了使用 EonX 通知服务发送通知,您需要在服务中注册一个提供者。一旦创建提供者,请设置提供者注册的 API URL,并保留提供者 API 密钥和外部 ID,因为它们将用于发送消息。
请参阅您选择的框架的配置部分。(即将推出...)
CacheConfigFinder
此包将自动向 EonX 通知服务发送 API 请求以获取您的 ApiKey 和提供者的配置。这将确保您的应用程序具有最新的配置,但是,由于配置不经常更改,因此可以轻松地将此配置缓存。
这就是为什么此包为您提供了 EonX\EasyNotification\Config\CacheConfigFinder
,以便装饰默认的配置查找服务并缓存找到的配置。
EonX\EasyNotification\Config\CacheConfigFinder
实现依赖于 Symfony 缓存组件,因此请确保它在您的项目中已安装。
请参阅您选择的框架中如何覆盖配置缓存的说明。
用法
配置完成后,此包将从 EonX 通知服务获取所需的配置,并将 EonX\EasyNotification\Client\NotificationClientInterface
服务注册到您的 DI 容器中。然后,您可以将此客户端注入到自己的类中并发送通知。
// src/Listener/UserCreatedListener.php namespace App\Listener; use App\Entity\User; use EonX\EasyNotification\Client\NotificationClientInterface; use EonX\EasyNotification\Message\RealTimeMessage; use EonX\EasyNotification\Provider\ConfigProviderInterface; final class UserCreatedListener { /** * @var \EonX\EasyNotification\Provider\ConfigProviderInterface */ private $configFinder; /** * @var \EonX\EasyNotification\Client\NotificationClientInterface */ private $client; public function __construct(ConfigProviderInterface $configFinder, NotificationClientInterface $client) { $this->configFinder = $configFinder; $this->client = $client; } public function created(User $user): void { /** * In real use case, those values should come from configuration. * * For multi-tenancies application, it is a best practice to store those values against each tenancy. */ $config = $this->configFinder->provide('my-api-key', 'my-provider-external-id'); /** * Topics are "channels" to send notifications to. * Every clients subscribing to any of the topics will then receive the notification. */ $topics = [$user->getExternalId()]; // Good practice is to have 1 topic per user /** * Body is the notification contents each client will receive. * Its structure is completely up to the application but should negotiated with subscribers. */ $body = [ 'title' => 'Welcome!', 'body' => \sprintf('We are to have you onboard %s', $user->getUsername()), ]; $this->client ->withConfig($config) // Set config for next send ->send(RealTimeMessage::create($body, $topics)); // Send real time message } }