企业 其他

Odoo 企业版预约 WhatsApp 提醒为什么不能只靠群发:Appointment、Calendar 与 WhatsApp attendee 上下文讲透

基于 whatsapp_calendar、appointment 与 whatsapp 源码,讲清预约提醒、改期后通知与 attendee 责任人选择怎样共享日程上下文。

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

预约提醒如果只靠群发工具,改期、取消或主办方变更时很容易乱套。Odoo 企业版的 whatsapp_calendar 则把提醒消息绑在 calendar.attendee 上,再让 Appointment 继续提供会议语境。这样消息不是“发给一个手机号”,而是“发给某场预约中的某位参与者”。

## 1. 提醒配置先落在 calendar.alarm,而不是落在联系人层

enterprise/whatsapp_calendar/models/calendar_alarm.py 给 alarm type 增加了 whatsapp,并要求选择 calendar.attendee 模型对应且已审批的 WhatsApp 模板。提醒先跟时间规则绑定,而不是先跟某个联系人绑定。

2. 真正执行时,系统会按事件与参与者过滤消息接收人

calendar_alarm_manager.py_send_reminder() 先拿到 events_by_alarm,再过滤是否通知 organizer,并通过 whatsapp.composer 针对 attendee 发送模板消息。也就是说,消息接收对象来自 event/attendee 关系,而不是短信群发式的一维名单。

3. Appointment 的价值,是把 booking slot 持续映射回 calendar event

虽然 WhatsApp 提醒发生在 calendar 子系统,但 Appointment 场景里,这个 event 来自预约 slot 的创建与更新。因此改期、取消、重新安排主持人时,WhatsApp 侧仍能沿着 event/attendee 读到最新信息。

4. 企业里最危险的做法,是把预约提醒和聊天运营拆成两条线

一旦聊天侧自维护收件人与时间,和 Appointment/Calendar 不同步,no-show 恢复、改期确认、主持人是否也要通知就都会错位。企业版这里坚持一条 event 主链,正是为了保证消息行为总是附着在最新日程事实之上。

## 结论

所以,Odoo 企业版预约 WhatsApp 提醒的核心不是“用 WhatsApp 代替邮件”,而是让 Appointment、Calendar alarm 与 attendee 责任人选择共享同一份日程上下文。

主要源码锚点:

- `enterprise/whatsapp_calendar/models/calendar_alarm.py`
  • enterprise/whatsapp_calendar/models/calendar_alarm_manager.py
  • enterprise/whatsapp_calendar/models/calendar_attendee.py
  • enterprise/appointment

DISCUSSION

评论区

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