You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何基于Twilio实现术后多时段定时Drip SMS疼痛调研工作流?

解决方案:术后定时疼痛调研短信(Twilio + 现有工具)

为什么你的setTimeout方案不可行

首先明确:Twilio Functions的最大执行超时时间为10分钟,免费版限制更严格。你提供的setTimeout代码仅适用于几秒到几分钟的短延迟,完全无法支撑7天、14天这类长周期延迟——函数会在超时后被强制终止,根本无法触发后续短信发送。

推荐方案1:Twilio原生定时消息(Scheduled Messages)

这是最匹配你需求的原生方案,无需额外开发,操作简单:

  • 核心逻辑:在发送手术当晚首条短信的同时,通过Twilio API创建3条定时消息,分别对应术后7/14/21天的指定时间(比如晚上6点)

  • 具体操作步骤:

    1. 在你的Twilio Studio流程中,添加「Make HTTP Request」组件,放在发送首条短信的组件之后
    2. 配置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:fixed
        • SendAt:术后7天晚上6点的ISO 8601格式时间(比如手术日期为2024-05-10,对应2024-05-17T18:00:00Z,注意时区要匹配你所在地区)
    3. 复制2次该HTTP请求组件,分别修改Body内容(对应术后14/21天)和SendAt的时间值
    4. 保存并发布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);
}
  • 配置步骤:

    1. 打开你的Google Sheets,点击「扩展程序」→「Apps Script」
    2. 粘贴上述代码,替换配置参数为你的Twilio信息
    3. 设置时间驱动触发器:点击左侧「触发器」→「添加触发器」,选择sendPainSurveys函数,触发事件选「时间驱动」,类型选「每天」,时间选你希望发送短信的时段(比如晚上6点前10分钟)
    4. 授权脚本访问权限,测试时可手动运行一次函数验证
  • 优势:

    • 完全基于现有Google Sheets数据,无需修改现有工作流
    • 自动匹配随访日期,避免时段错配
    • 全程使用同一Twilio号码发送

关键注意事项

  • 时区问题:无论用哪种方案,都要确保计算的发送时间时区正确,避免短信在错误时段发送
  • 测试验证:正式使用前,一定要用测试数据验证发送时间和内容是否正确
  • Twilio配额:注意查看你的Twilio账号短信发送配额,避免超出限制

内容的提问来源于stack exchange,提问作者bsh3p

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.20 10:20:40