如何基于Twilio实现术后多时段定时Drip SMS疼痛调研工作流?
解决方案:术后定时疼痛调研短信(Twilio + 现有工具)
为什么你的setTimeout方案不可行
首先明确:Twilio Functions的最大执行超时时间为10分钟,免费版限制更严格。你提供的setTimeout代码仅适用于几秒到几分钟的短延迟,完全无法支撑7天、14天这类长周期延迟——函数会在超时后被强制终止,根本无法触发后续短信发送。
推荐方案1:Twilio原生定时消息(Scheduled Messages)
这是最匹配你需求的原生方案,无需额外开发,操作简单:
核心逻辑:在发送手术当晚首条短信的同时,通过Twilio API创建3条定时消息,分别对应术后7/14/21天的指定时间(比如晚上6点)
具体操作步骤:
- 在你的Twilio Studio流程中,添加「Make HTTP Request」组件,放在发送首条短信的组件之后
- 配置HTTP请求:
- 方法:
POST - URL:
https://api.twilio.com/2010-04-01/Accounts/{你的Account SID}/Messages.json - 身份验证:勾选「Basic Auth」,输入你的Account SID作为用户名,Auth Token作为密码
- 请求体(Form Data):
From:你的Twilio号码(确保和首条短信用同一个)To:患者手机号(从Studio触发事件中获取)Body:Hi {{患者姓名}}, 术后7天了,请回复1-10评估你的疼痛程度(替换变量为实际数据)ScheduleType:fixedSendAt:术后7天晚上6点的ISO 8601格式时间(比如手术日期为2024-05-10,对应2024-05-17T18:00:00Z,注意时区要匹配你所在地区)
- 方法:
- 复制2次该HTTP请求组件,分别修改
Body内容(对应术后14/21天)和SendAt的时间值 - 保存并发布Studio流程,测试时可将
SendAt设为几分钟后,验证定时发送是否正常
优势:
- 原生功能,无需额外工具,可在Twilio控制台「Messages」页面查看/修改所有定时消息
- 严格基于手术日期计算发送时间,不会出现时段错配
- 全程使用同一Twilio号码发送,符合要求
备选方案2:Google Apps Script + Twilio API(适合熟悉Google生态的用户)
如果你更习惯用Google工具,可基于现有Google Sheets数据,通过脚本自动触发定时短信:
- 核心逻辑:编写Google Apps Script函数,每天检查是否有患者到了术后7/14/21天,调用Twilio API发送对应短信
- 简化代码示例:
function sendPainSurveys() { // 配置参数 const TWILIO_ACCOUNT_SID = '你的Twilio Account SID'; const TWILIO_AUTH_TOKEN = '你的Twilio Auth Token'; const TWILIO_PHONE = '你的Twilio号码'; const SHEET_NAME = '患者数据'; const sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(SHEET_NAME); const rows = sheet.getDataRange().getValues(); const today = new Date(); today.setHours(0, 0, 0, 0); // 重置到当天0点,方便日期对比 // 遍历患者数据(跳过表头行) for (let i = 1; i < rows.length; i++) { const [name, phone, surgeryDateStr] = rows[i]; const surgeryDate = new Date(surgeryDateStr); // 计算术后7/14/21天的日期 const followUpDays = [7, 14, 21]; followUpDays.forEach(day => { const followUpDate = new Date(surgeryDate); followUpDate.setDate(followUpDate.getDate() + day); followUpDate.setHours(0, 0, 0, 0); // 如果今天是随访日,发送短信 if (followUpDate.getTime() === today.getTime()) { const messageBody = `Hi ${name}, 术后${day}天了,请回复1-10评估你的疼痛程度`; sendTwilioSMS(phone, messageBody); } }); } } // 封装Twilio短信发送函数 function sendTwilioSMS(to, body) { const url = `https://api.twilio.com/2010-04-01/Accounts/${TWILIO_ACCOUNT_SID}/Messages.json`; const payload = { From: TWILIO_PHONE, To: to, Body: body }; const options = { method: 'POST', headers: { Authorization: `Basic ${Utilities.base64Encode(`${TWILIO_ACCOUNT_SID}:${TWILIO_AUTH_TOKEN}`)}` }, payload: payload }; UrlFetchApp.fetch(url, options); }
配置步骤:
- 打开你的Google Sheets,点击「扩展程序」→「Apps Script」
- 粘贴上述代码,替换配置参数为你的Twilio信息
- 设置时间驱动触发器:点击左侧「触发器」→「添加触发器」,选择
sendPainSurveys函数,触发事件选「时间驱动」,类型选「每天」,时间选你希望发送短信的时段(比如晚上6点前10分钟) - 授权脚本访问权限,测试时可手动运行一次函数验证
优势:
- 完全基于现有Google Sheets数据,无需修改现有工作流
- 自动匹配随访日期,避免时段错配
- 全程使用同一Twilio号码发送
关键注意事项
- 时区问题:无论用哪种方案,都要确保计算的发送时间时区正确,避免短信在错误时段发送
- 测试验证:正式使用前,一定要用测试数据验证发送时间和内容是否正确
- Twilio配额:注意查看你的Twilio账号短信发送配额,避免超出限制
内容的提问来源于stack exchange,提问作者bsh3p
相关产品推荐
相关产品推荐

