remp / crm-scenarios-module
CRM 场景模块
Requires
- php: ^8.1
- dev-master
- 3.4.0
- 3.3.1
- 3.3.0
- 3.2.0
- 3.1.0
- 3.0.0
- 2.11.0
- 2.10.0
- 2.9.0
- 2.8.0
- 2.7.0
- 2.6.0
- 2.5.0
- 2.4.0
- 2.3.0
- 2.2.0
- 2.1.0
- 2.0.0
- 1.2.0
- 1.1.0
- 1.0.0
- 1.0.0-beta2
- 1.0.0-beta1
- 0.39.0
- 0.38.0
- 0.37.1
- 0.37.0
- 0.36.1
- 0.36.0
- 0.35.0
- 0.34.0
- 0.33.0
- 0.32.0
- 0.31.0
- 0.30.0
- 0.29.0
- 0.28.0
- 0.27.0
- 0.26.0
- 0.25.0
- 0.24.0
- 0.23.0
- 0.22.1
- 0.22.0
- 0.21.0
- 0.20.0
- 0.18.0
- 0.17.0
- 0.16.0
- 0.15.0
- 0.14.0
- 0.13.0
- 0.12.0
- 0.11.0
- 0.10.0
- 0.9.0
- 0.8.2
- 0.8.1
- 0.8.0
- 0.7.0
- dev-dependabot/npm_and_yarn/express-4.21.0
- dev-dependabot/npm_and_yarn/webpack-5.94.0
- dev-dependabot/npm_and_yarn/axios-0.28.0
This package is auto-updated.
Last update: 2024-09-21 12:37:20 UTC
README
场景模块的主要功能是场景构建器,这是一个用于在 CRM 系统中通过拖放 UI 工具包建模场景的工具。每个场景都通过一个图来直观表示,将各种事件(例如用户注册、订阅)与条件(例如用户细分检查)和操作(例如发送电子邮件、显示横幅)相连接。
场景构建器元素
场景构建器提供几种节点类型以构建图表。用户可以以任意方式连接节点,将一个节点的输出连接到另一个节点的输入。保存(并启用)场景后,每次触发场景触发器时都会执行该场景。
触发器
每个场景都必须从触发节点开始。目前有两种触发类型 - “事件”节点和“事件之前”。
事件
事件提供了与用户相关的更改的几个钩子。目前它支持以下事件类型
- 用户创建
- 新订阅
- 订阅结束
- 周期性付款续订
- 测试事件(由控制台命令
scenarios:test_user
触发)
每次用户触发指定的事件时,所有具有此事件的场景都将执行,将触发场景的用户(沿图向下传递)传递下去。
事件之前
“事件之前”需要两个参数 - 一个事件和一个时间间隔。时间间隔指定触发器启动场景之前实际事件发生的时间长度。目前它支持以下事件类型
- 订阅结束
- 周期性付款收费
- 周期性付款过期
条件
条件块允许根据指定的标准编辑图表的流程。一个条件块可以组合单个类型的多个标准。所有定义的标准都会一起评估,并根据结果,图表流程将遵循正方向或负方向。目前支持的标准类型
- 用户 - 用户标准是根据触发场景的用户参数评估的。标准类必须实现
ScenariosCriteriaInterface
。 - 支付 - 支付标准是根据场景触发器的支付参数评估的。此类标准只能在以与支付相关的触发器开始的场景中使用。某些触发器可能附有支付参数,也可能没有,例如“新订阅”触发器。在这种情况下,首先使用“触发器”标准(例如“有支付”)检查以确保支付参数存在,然后再使用支付标准。标准类必须实现
ScenariosCriteriaInterface
。 - 订阅 - 订阅标准是根据场景触发器的订阅参数评估的。此类标准只能在以与订阅相关的触发器开始的场景中使用。标准类必须实现
ScenariosCriteriaInterface
。 - 触发器 - 触发器标准是根据事件触发期间提供的参数评估的。标准类必须实现
ScenariosTriggerCriteriaInterface
和ScenariosCriteriaInterface
两个接口。
操作
发送电子邮件
此节点向触发场景并达到此节点的用户发送电子邮件。电子邮件列表从 CRM 中加载。
显示横幅
警告:仅当安装并集成 REMP-Campaign 模块时才启用。
此节点向触发节点的用户显示一次性横幅。可用的横幅从 Campaign 工具中加载。
运行通用操作
此节点在通用操作定义中的 createEvent
方法中发出指定的联盟事件。您可以指定自定义参数,这些参数将在 UI 中显示,并将作为选项传递给 createEvent
方法。
您可以通过在您的配置中注册 TestGenericEvent
来尝试此功能的工作方式。
services: scenariosGenericEventsManager: setup: - register('test_gen_event', Crm\ScenariosModule\Scenarios\TestGenericEvent())
操作
通常,场景动作只能通过触发初始场景触发的用户子集来访问。因此,构建器提供了几个元素来过滤用户或在图中延迟后续动作的执行。
段
段节点检查达到该节点的用户是否存在于指定的段中。根据结果,节点将执行流程重定向到正路径(用户在段中)或负路径(用户不在段中)。
等待
此节点简单地通过指定的时间间隔延迟图中下一个元素的执行。
目标
目标元素检查触发节点的用户是否已完成所选的入职目标。有关更多详细信息,请参阅“入职模块”文档。
A/B 测试
A/B 测试元素根据百分比分布从两个或更多变体中选择一个流程。
安装模块
我们建议使用 Composer 进行安装和更新管理。
composer require remp/crm-scenarios-module
启用模块
将已安装的扩展添加到您的 app/config/config.neon
文件中。
extensions: - Crm\ScenariosModule\DI\ScenariosModuleExtension
添加后,为新生成的模块生成 ACL。
php bin/command.php user:generate_access php bin/command.php api:generate_access php bin/command.php application:seed
构建资产
在模块文件夹内安装依赖项 yarn install
确保全局范围内已填充场景配置。它应该看起来像这样
window.Scenario = { config: { AUTH_TOKEN: '', CRM_HOST: '', CANCEL_PATH: '', SEGMENT_ID: null } };
如果您想为部署构建整个应用程序,请运行 yarn build-prod
。然后,在项目根目录中,使用以下命令复制资产
php bin/command.php application:install_assets
引擎
场景模块需要场景引擎工作器在后台单独运行以处理图执行流程。此外,它还需要 Hermes 工作器来处理异步任务。执行
php bin/command.php application:hermes_worker php bin/command.php scenarios:worker
确保在终止(例如,通过运行服务或监视器)后再次启动两个工作器。
引擎处理速度是可配置的。您可以在配置中指定处理轮次之间睡眠延迟的下限和上限(在每个轮次中,处理队列中的所有作业)
scenariosEngine: setup: # time in microseconds - setMinSleepTime(10000) #0.01s - setMaxSleepTime(10000000) # 10s
实际睡眠时间使用指数退避算法计算。默认值是 0.05 和 1 秒,用于最小/最大延迟。
计划命令
使用 from
选项聚合超过 5 天或特定日期的旧统计数据。设置 cron 每小时运行命令。
# Aggregate scenarios statistics
php bin/command.php scenarios:aggregate_stats
删除超过 31 天的旧统计数据。要指定确切日期,请使用 date-to
选项。每天运行命令的 cron。
# Remove old statistic data
php bin/command.php scenarios:remove_stats
事件前
为了生成“事件前”触发器,将以下命令添加到您的 crontab 中。可选地将其设置为每 10 分钟运行一次。
php bin/command.php scenarios:event_generator
优雅关闭工作器
要优雅地关闭两个工作器(application:hermes_worker
和 scenarios:worker
),请使用来自 ApplicationModule 的命令。
php bin/command.php application:hermes_shutdown
在 CRM 模块更新且需要重新加载工作器的情况下使用此方法。更多详细信息请参阅 ApplicationModule 的 README。