错过的预约每年给服务行业带来数千美元的损失。提前一天发送一条简单的短信提醒可以将爽约率降低 30-50%。但为此设置 Twilio 感觉像是杀鸡用牛刀——而且费用会不断累积。

以下是如何使用您自己的手机作为短信网关,构建一个超级简单的预约提醒系统。

为什么不直接使用 Twilio?

对于每月发送 200 条提醒的小型诊所或沙龙,Twilio 的费用如下:

  • 短信:200 × $0.0079 = $1.58
  • 运营商附加费:200 × $0.003 = $0.60
  • 电话号码:$1.15/月
  • 10DLC 注册:$2/月 + $15 一次性费用
  • 设置时间:1-2 小时(SDK、验证、注册)

总计:每月约 $5.33 + 设置的麻烦。而且如果注册被拒绝(小型企业常遇到),您就会陷入困境。

使用 MySMSGate:200 × $0.03 = 每月 $6.00。无需注册,没有设置麻烦,5 分钟内即可运行。您的患者会看到您的真实电话号码——而不是一个随机的 Twilio 号码。

选项 1:Google 表格 + Apps Script(无需代码)

最简单的方法——如果您已经在电子表格中跟踪预约,这是完美的选择。

设置您的表格

创建一个包含以下列的 Google 表格:

A: 患者姓名B: 电话C: 日期D: 时间E: 已提醒
Sarah Johnson+120255512342026-03-103:00 PM
Mike Chen+120255556782026-03-104:30 PM

添加脚本

转到“扩展程序”→“Apps Script”,粘贴以下代码:

function sendReminders() {
  var sheet = SpreadsheetApp.getActiveSheet();
  var data = sheet.getDataRange().getValues();
  var tomorrow = new Date();
  tomorrow.setDate(tomorrow.getDate() + 1);
  var tomorrowStr = Utilities.formatDate(tomorrow, "GMT", "yyyy-MM-dd");

  for (var i = 1; i < data.length; i++) {
    var name = data[i][0];
    var phone = data[i][1];
    var date = Utilities.formatDate(new Date(data[i][2]), "GMT", "yyyy-MM-dd");
    var time = data[i][3];
    var reminded = data[i][4];

    if (date === tomorrowStr && !reminded) {
      var message = "Hi " + name + ", reminder: your appointment is tomorrow at " + time + ". Reply YES to confirm or call to reschedule.";

      UrlFetchApp.fetch("https://mysmsgate.net/api/v1/send", {
        method: "post",
        headers: {
          "Authorization": "Bearer YOUR_API_KEY",
          "Content-Type": "application/json"
        },
        payload: JSON.stringify({to: phone, message: message})
      });

      sheet.getRange(i + 1, 5).setValue("Yes");
    }
  }
}

安排运行

在 Apps Script 中,转到“触发器”→“添加触发器”:

  • 函数:sendReminders
  • 事件:时间驱动 → 日定时器 → 上午 9 点至 10 点

完成。每天早上,脚本都会检查第二天的预约并自动发送提醒。

选项 2:Python 脚本(开发者)

如果您有带数据库的预订系统:

import requests
import sqlite3
from datetime import date, timedelta

API_KEY = "YOUR_API_KEY"
tomorrow = date.today() + timedelta(days=1)

db = sqlite3.connect("bookings.db")
appointments = db.execute(
    "SELECT name, phone, time FROM appointments WHERE date = ? AND reminded = 0",
    (tomorrow.isoformat(),)
).fetchall()

for name, phone, time in appointments:
    message = f"Hi {name}, reminder: your appointment is tomorrow at {time}. Reply YES to confirm."

    response = requests.post(
        "https://mysmsgate.net/api/v1/send",
        headers={"Authorization": f"Bearer {API_KEY}"},
        json={"to": phone, "message": message}
    )

    if response.json().get("success"):
        db.execute("UPDATE appointments SET reminded = 1 WHERE phone = ? AND date = ?",
                   (phone, tomorrow.isoformat()))

db.commit()

使用 cron 运行:0 9 * * * python3 /path/to/reminders.py

选项 3:Zapier / Make(无需代码)

如果您使用 Calendly、Google Calendar 或任何支持 Zapier 集成的预订工具:

  1. 触发器:“Google 日历中的新事件”(或 Calendly、Acuity 等)
  2. 操作:延迟至事件发生前 1 天
  3. 操作:Zapier 的 Webhooks → POST 到 https://mysmsgate.net/api/v1/send

设置请求头:Authorization: Bearer YOUR_API_KEY

设置请求体:{"to": "{{phone}}", "message": "Hi {{name}}, reminder: your appointment is tomorrow at {{time}}."}

有效提醒的技巧

  • 提前 24 小时发送 — 给患者重新安排时间的机会
  • 包含具体时间 — “明天下午 3 点”比“明天”更好
  • 请求确认 — “回复 YES 确认”可以提高互动率
  • 保持简短 — 1 条短信(160 个字符)是理想选择
  • 使用您的企业名称 — 患者会认出您的号码,因为那就是您的号码

免费开始 — 在 10 分钟内设置好提醒。