kosmosafive / kosmos.linemessage
Kosmos: 多通道消息发送传输
2.0.1
2024-08-17 13:16 UTC
Requires
- php: >=8.3
- ext-json: *
- composer/installers: ^2
Requires (Dev)
- roave/security-advisories: dev-latest
This package is auto-updated.
Last update: 2024-09-17 13:32:16 UTC
README
介绍
向接收者发送消息涉及通过一个或多个通信渠道进行交付的可能性。在这种情况下,交付机制应该是隐藏的。
解决方案的想法是,基于某些配置和业务逻辑,形成一个潜在的通信渠道集合,这些渠道可以发送消息。同时,还形成最大可能的上下文——一个包括处理通信渠道所需必要字段(例如,用于发送电子邮件的接收者电子邮件地址)以及可能模板中使用的字段的数组。
接收者接收这些数据,并返回一个结果集合,从中可以获得整体结果以及每个通信渠道的特定结果。
模块不打算进行潜在日志记录。预计在调用构造和/或基础设施层进行日志记录。
安装
- 安装模块
通过composer安装
在项目的 composer.json(例如,对于本地目录)中添加
{ "require": { "wikimedia/composer-merge-plugin": "dev-master" }, "config": { "allow-plugins": { "wikimedia/composer-merge-plugin": true } }, "extra": { "merge-plugin": { "require": [ "../bitrix/composer-bx.json", "modules/*/composer.json" ], "recurse": true, "replace": true, "ignore-duplicates": false, "merge-dev": true, "merge-extra": false, "merge-extra-deep": false, "merge-scripts": false }, "installer-paths": { "modules/{$name}/": [ "type:bitrix-d7-module" ] } } }
使用
通过通信渠道发送消息
use Bitrix\Main\Loader; use Kosmos\LineMessage\Line; use Kosmos\LineMessage\Sender; Loader::requireModule('kosmos.linemessage'); $someTemplateLine = new Line\Email('SOME_TEMPLATE'); $anotherTemplateLine = new Line\Email('ANOTHER_TEMPLATE'); $lineCollection = new Line\Collection( $someTemplateLine, $anotherTemplateLine ); $oneMoreTemplateLine = new Line\Email('ONE_MORE_TEMPLATE', true); $lineCollection->add($oneMoreTemplateLine); $context = ['EMAIL' => 'test@email.com']; $lineResultCollection = (new Sender($lines, $context))->send();
处理LineResultCollection
$lineResultCollection->isSuccess(); // true, если все сообщения были отправлены $lineResultCollection->isHandled(); // true, если все каналы обработаны $lineResultCollection->getSuccessCollection(); // коллекция отправленных $lineResultCollection->getFailureCollection(); // коллекция неотправленных $lineResultCollection->getHandledCollection(); // коллекция обработанных $lineResultCollection->getUnhandledCollection(); // коллекция необработанных
获取特定Line的结果
$someTemplateLineResult = $lineResultCollection->findByLine($someTemplateLine);
处理LineResult
$someTemplateLineResult->isSuccess(); // true, если сообщение было отправлено $someTemplateLineResult->isHandled(); // true, если канал обработан
通信渠道
电子邮件
构造函数
- eventName – 事件名称
- immediately –(可选)立即发送
上下文
- EMAIL – 收件人电子邮件
- LID –(可选)网站标识符
添加自己的通信渠道
需要实现Kosmos\LineMessage\Line\LineInterface接口。可以继承Kosmos\LineMessage\Line\Line基本类。