如何结合现有fetchAll函数与Twilio预约提醒教程实现就诊短信通知
完全可以结合实现,但你现有fetchAll函数不能直接复用,需要做针对性调整,核心原因是你当前的fetchAll是前端浏览器环境的代码,依赖浏览器localStorage对象获取JWT令牌,而Twilio的预约提醒教程基于Node.js后端环境运行,服务端不存在浏览器的localStorage API,直接照搬会报错。
调整方案与实现步骤
1. 改造就诊数据拉取逻辑
你可以二选一实现服务端可用的拉取逻辑:
- 方案一:给现有Java后端新增专供内部服务调用的就诊数据查询接口,不用前端JWT校验,改用固定内部密钥做权限校验,在Node服务中重写数据拉取方法,调用该接口获取就诊数据
- 方案二:直接在Node服务中连接MySQL数据库,编写查询逻辑直接过滤出距离当前时间2天的待提醒就诊记录,比调用Java接口性能更高、链路更短
2. 实现定时轮询逻辑
在Node服务中安装node-cron依赖配置定时任务,可根据你的业务需求设置执行频率(比如每天凌晨执行一次,或每小时执行一次),每次任务触发时执行以下逻辑:
- 拉取符合时间条件的就诊记录
- 校验就诊状态,排除已取消、已完成的就诊
- 对符合发送条件的记录触发短信发送
3. 对接Twilio短信发送逻辑
参考Twilio教程的初始化方法,在Node服务中初始化Twilio客户端:
const twilio = require('twilio'); const client = twilio('你的TWILIO_ACCOUNT_SID', '你的TWILIO_AUTH_TOKEN');
拿到就诊记录后,拼接短信内容,调用发送接口:
client.messages .create({ body: `您好,您的就诊预约将在2天后开始,请提前做好准备。`, from: '你的Twilio发送号码', to: '用户手机号(需符合E.164格式,比如+8613xxxxxxxxx)' }) .then(message => { // 发送成功后,更新就诊记录的提醒发送状态,避免重复发送 });
注意事项
- 需统一服务端和就诊时间的时区,避免时间差计算错误
- 新增异常捕获逻辑,对数据拉取失败、短信发送失败的场景记录日志,方便后续排查
- 提前校验用户手机号格式,确保符合Twilio要求的E.164标准
- 如果就诊数据量较大,不要全量拉取后再过滤,直接在数据库查询阶段就加上时间条件,减少性能消耗
内容的提问来源于stack exchange,提问作者Lindsey
相关产品推荐
相关产品推荐

