如果 WhatsApp 只是“发出去然后看有没有读”,企业就很难把对话行为沉淀成真正可执行的自动化。Odoo 企业版的 marketing_automation_whatsapp 做得更深:它把点击、已读、回复、退信都写回 marketing.trace,再让自动化图里的后续节点根据这些事件分叉、取消或重排程。
1. WhatsApp 活动先成为 marketing.activity,而不是独立消息任务
在 enterprise/marketing_automation_whatsapp/models/marketing_activity.py,活动类型新增了 whatsapp,触发器也增加 whatsapp_click、whatsapp_read、whatsapp_replied、whatsapp_bounced 等状态。于是 WhatsApp 在自动化里不再只是一个发送渠道,而是一个带事件回调的分支节点。
2. 链接点击不会停在短链统计,而是继续回写 trace
link_tracker_click.py 与 controller /r/<code>/w/<whatsapp_id> 会把短链点击回写到 whatsapp.message,再由 set_clicked() 把事件推进到 marketing.trace.process_event('whatsapp_click')。这说明 click 不是营销报表里的一列数字,而是自动化图真正消费的状态变化。
3. 回复事件来自 discuss/channel,而不是只靠发送结果猜测
discuss_channel.py 会在收到回复型 WhatsApp 消息后,反查之前带模板且关联 trace 的 whatsapp.message,再对父 trace 调用 process_event('whatsapp_replied')。也就是说,系统并不把“客户回复了”理解为外部现象,而是显式地把它接回自动化主对象。
4. bounced、未读、未回复都能取消或改道后续节点
marketing_trace.py 会根据 action 取消对应的 child traces;marketing_activity.py 也把 whatsapp_not_read、whatsapp_not_replied、whatsapp_not_click 纳入可重排程类型。企业版真正关心的不是一次送达率,而是后续节点该继续、取消还是改道。
结论
所以,Odoo 企业版 WhatsApp 自动化的重点不是“群发能力”,而是把 click、read、reply、bounce 这些消息事件回写为 trace,再让自动化分支围绕这些事件自己生长。
主要源码锚点:
enterprise/marketing_automation_whatsapp/models/marketing_activity.pyenterprise/marketing_automation_whatsapp/models/marketing_trace.pyenterprise/marketing_automation_whatsapp/models/link_tracker_click.pyenterprise/marketing_automation_whatsapp/models/discuss_channel.pyenterprise/marketing_automation_whatsapp/models/whatsapp_message.py
DISCUSSION
评论区