kosmosafive/kosmos.linemessage

Kosmos: 多通道消息发送传输

安装: 4

依赖: 0

建议者: 0

安全: 0

星星: 0

关注者: 1

分支: 0

开放问题: 0

类型:bitrix-d7-module

2.0.1 2024-08-17 13:16 UTC

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基本类。