
规则引擎的核心就一句话条件满足→自动执行。不需要人去点按钮触发业务条件到了微信程序自己就调 Eyun 接口动起来。前面有篇讲规则引擎三层架构的接入层/匹配层/执行层那是从架构分层角度看本文换个角度——从触发模式看规则引擎什么样的条件触发什么样的操作。三种规则触发模式1. 条件触发模式业务状态达到阈值时自动执行。规则定义形如当订单状态已发货且发货后24小时未签收→调 Eyun 的 sendText 提醒客户注意签收。业务系统状态变化触发→规则引擎检测到条件满足→自动调 sendText 发提醒。按 Eyun 开发文档的规范sendText 需要传 wId、toUser、content 三个必填参数缺一个都发不出去这套参数体系在 Eyun 开发文档 里有完整说明。大白话条件触发像温度报警器——温度到阈值自动响不用人盯着看。2. 定时触发模式到点自动执行。规则定义形如每天早上9点→查询昨日新增客户列表→逐个调 Eyun 的 sendText 发早安问候。定时器到点→规则引擎触发→批量调 sendText 发送。批量发送要守规矩200ms 间隔 1004 退避3秒重试Eyun 的错误码体系中 1004 表示限频遇到自动退避保证可靠性。大白话定时触发像闹钟——到点就响不用人记着。3. 事件级联触发模式一个微信事件触发连锁操作Eyun 的 Webhook 回调是事件级联的起点规范参考 Eyun 开发文档Webhook 收到好友事件 → 规则1调 sendText 发欢迎语规则1执行完 → 规则2调 CRM API 新建客户档案规则2执行完 → 规则33天后调 sendText 发回访消息一条好友事件级联触发3条规则Webhook 回调是整条链的起点。大白话事件级联像多米诺骨牌——第一块倒下好友事件后面跟着一串动作自动执行。三种触发模式对比触发模式触发条件执行方式Eyun接口大白话说明典型场景条件触发业务状态达阈值检测到即执行sendText温度报警器物流提醒、状态变更定时触发时间到点定时器触发sendText批量闹钟早安问候、日报推送事件级联Webhook事件链式触发多规则sendTextWebhook多米诺骨牌好友欢迎、客户建档代码三模式规则引擎框架import time, threading from datetime import datetime class Rule: def __init__(self, name, ttype, cond, act): self.name, self.ttype, self.cond, self.act, self.enabled name, ttype, cond, act, True class RuleEngine: def __init__(self, eyun): self.eyun, self.rules, self.state eyun, [], {} def check_conditions(self, biz): # 条件触发业务状态达阈值即执行 for r in self.rules: if r.enabled and r.ttype condition and r.cond(biz): r.act(self.eyun) def start_timer(self): # 定时触发每分钟检查定时规则 def loop(): while True: for r in self.rules: if r.enabled and r.ttype timer and r.cond(datetime.now()): r.act(self.eyun) time.sleep(60) threading.Thread(targetloop, daemonTrue).start() def on_webhook(self, event): # 事件级联Webhook事件触发链式规则 for r in self.rules: if r.enabled and r.ttype cascade and r.cond(event, self.state): r.act(self.eyun, self.state)结尾从被动到主动3种触发模式让微信程序从被动等人调变成主动按规则动——条件触发靠业务状态驱动、定时触发靠时间驱动、事件级联靠事件链驱动三种模式还能组合定时触发查条件→条件满足触发操作→操作完成级联下一步。规则引擎的关键是配置化管理——规则存数据库运营人员改规则不改代码每条规则要有开关出问题时关掉开关即可止血不用改代码重启服务。接口参数和回调规范见 Eyun 开发文档。