企业 协同办公

Odoo 企业版预约短信为什么不是“发个提醒”而已:预约、短信与日历跟进链路讲透

基于 appointment_sms、appointment 与 calendar_sms 源码,讲清预约 slot 确认、手机号采集与短信提醒如何沿着日历事件上下文闭环。

企业 协同办公
进阶 开发者 1 分钟阅读
0 评论 0 点赞 0 收藏 5 阅读

预约场景里最常见的误解,是把短信看成会后加上的“提醒插件”。Odoo 企业版 appointment_sms 的做法完全相反:短信提醒从预约类型配置、网站表单采集到 calendar alarm 都是同一条链。

## 1. 预约类型先绑定 reminder,再决定前台要不要问手机号

enterprise/appointment_sms/data/calendar_data.xml 与 demo 数据里,appointment type 直接关联 calendar.alarm,并把 alarm type 设成 sms。前端模板 appointment_templates_registration.xml 还会在 appointment type 启用了短信提醒时,明确告诉用户手机号将用于提醒。也就是说,前台表单字段是否重要,是由后台 alarm 配置反推出来的。

2. 预约确认后并不是自己发短信,而是借 calendar alarm 体系触发

模块依赖写得很清楚:appointment_sms 依赖 appointmentcalendar_sms。这意味着 Appointment 负责生成日历事件与预约上下文,真正负责触发短信的是 Calendar 的 alarm 子系统。预约模块并没有再发明一套 reminder cron。

3. 短信提醒依赖的是 event/attendee 上下文,而不是一张独立短信表

一旦预约转成 calendar event,提醒就自然拥有开始时间、参与人、提醒提前量等上下文。相比单独在预约模块里记“某时某刻给某号码发短信”,这种设计更稳,因为改期、取消与参与人变化都能沿着 calendar 主对象传递。

4. 企业实施时,别把短信和预约表单拆开维护

如果前台手机号采集逻辑、后台 alarm 配置和 event 更新不在同一条链,改期后短信就会发错人或错时。Odoo 企业版通过 appointment → calendar event → sms alarm 的一条主线,避免了这种碎片化。

## 结论

所以,Odoo 企业版预约短信不是单独外挂,而是预约类型、网站表单、calendar event 与 SMS reminder 共用一份预约上下文的结果。

主要源码锚点:

- `enterprise/appointment_sms/__manifest__.py`
  • enterprise/appointment_sms/data/calendar_data.xml
  • enterprise/appointment_sms/views/appointment_templates_registration.xml
  • enterprise/appointment

DISCUSSION

评论区

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