企业 营销短信自动化

Odoo 企业版营销自动化短信为什么不是“流程里加一个 SMS 节点”:trace 状态、失败回写与 trigger 重排讲透

基于 marketing_automation_sms 源码,讲清 SMS 节点为什么要和 marketing trace、bounce 事件与未点击重排逻辑一起理解。

企业 其他
进阶 开发者 1 分钟阅读
0 评论 0 点赞 0 收藏 4 阅读

在 Marketing Automation 里增加一个短信节点,很多人会把它当作“多一种触达渠道”。但 enterprise/marketing_automation_sms/models/marketing_activity.pymarketing_trace.pysms_tracker.py 说明,短信一旦进入自动化,它就不再只是消息发送,而是完整 trace 图的一部分。

一、SMS 活动会改变 activity 和 trigger 的分类体系

_compute_mass_mailing_id_mailing_type()activity_type == 'sms' 时把 mailing type 设成 sms_compute_trigger_category() 则把 sms_clicksms_not_clicksms_bounce 归到短信类别。也就是说,短信节点并不是沿用邮件自动化的旧模型,而是拥有自己的一套触发语义。

这很重要,因为自动化引擎要区分“短信未点击”和“邮件未打开”,两者不是同一类业务事件。

二、未点击短信可以触发重排,不是一次性结束

_get_reschedule_trigger_types()sms_not_click 加进了可重排 trigger 集。也就是说,短信活动不是发完就结束;如果客户没点击,系统允许把后续动作重新安排在未来某个时间点继续尝试。

这正是自动化与群发的分水岭。群发只关心有没有发出去,自动化则关心“接下来该不该继续追”。

三、执行短信前先校验权限,失败后要把 trace 写成 error

_execute_sms() 一开始就检查用户是否是管理员或营销自动化组成员,然后才通过 mass_mailing_id.sudo().action_send_sms(res_ids) 发送。如果过程中异常,源码会记录 warning,并把 traces 写成 state = error

这说明短信自动化不是一个“后台偷偷发”的黑盒:谁有权启动、失败后 trace 进入什么状态,都被纳入了正式流程控制。

四、点击和退信会反向改写子 trace 的命运

marketing_trace.py 里的 process_event() 在收到 sms_click 时,会取消那些等待 sms_not_click 的子 trace;收到 sms_bounce 时,则会取消其他不该继续跑的子 trace。sms_tracker.py_update_sms_traces() 也会在 bounce 时主动把事件传播到 marketing trace。

这表示自动化树并不是“每个节点各跑各的”,而是一个有因果关系的状态图:父短信点击了,等待“未点击”的分支就该关掉;父短信退信了,其他依赖正常送达的后续也要停。

实战注意事项

  1. 把短信节点放进完整自动化图里设计:不要只看发送动作。
  2. 认真定义 click / not click / bounce 分支:这直接决定后续客户旅程。
  3. 监控 error traces:发送异常不会自动消失,它们是流程质量的重要信号。
  4. 限制操作权限:源码先验权再 sudo,说明短信自动化是高影响动作。

新手误区

  • 误以为短信节点只是邮件节点的轻量版。
  • 误以为短信发出后流程就结束。
  • 误以为 bounce 只影响发送报表,不影响自动化分支。
  • 误以为失败 trace 不需要运营关注。

主要源码参考

  • enterprise/marketing_automation_sms/models/marketing_activity.py
  • enterprise/marketing_automation_sms/models/marketing_trace.py
  • enterprise/marketing_automation_sms/models/sms_tracker.py

DISCUSSION

评论区

想参与讨论?先 登录 再发表评论。
还没有评论,你可以成为第一个留言的人。