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

在NextJs项目中如何使用Twilio延迟48小时发送短信?

Next.js 集成 Twilio 发送短信实现指南

1. 准备 Twilio 基础配置

  • 注册 Twilio 账号后,在控制台获取 Account SID 和 Auth Token(位于 Dashboard 页面)
  • 购买一个支持短信发送的 Twilio 电话号码(格式需带国际区号,如 +123456789)
  • 在 Next.js 项目根目录创建 .env.local 文件,存入敏感信息:
    TWILIO_ACCOUNT_SID=你的Account SID
    TWILIO_AUTH_TOKEN=你的Auth Token
    TWILIO_PHONE_NUMBER=你的Twilio电话号码
    

2. 安装 Twilio SDK

在项目根目录执行命令:

npm install twilio
# 或使用 yarn
yarn add twilio

3. 创建后端 API 路由(避免密钥泄露)

前端不能直接调用 Twilio API,必须通过 Next.js 的 API 路由中转:

App Router 版本(Next.js 13+)

在 app/api/send-sms/route.js 创建文件:

import twilio from 'twilio';

export async function POST(request) {
  const { to, message } = await request.json();

  const client = twilio(
    process.env.TWILIO_ACCOUNT_SID,
    process.env.TWILIO_AUTH_TOKEN
  );

  try {
    const result = await client.messages.create({
      body: message,
      from: process.env.TWILIO_PHONE_NUMBER,
      to: to // 接收号码需带国际区号,如 +8613xxxxxxxxx
    });
    return Response.json({ success: true, messageSid: result.sid });
  } catch (error) {
    return Response.json({ success: false, error: error.message }, { status: 500 });
  }
}

Pages Router 版本

在 pages/api/send-sms.js 创建文件:

import twilio from 'twilio';

export default async function handler(req, res) {
  if (req.method !== 'POST') {
    return res.status(405).json({ success: false, error: '仅支持POST请求' });
  }

  const { to, message } = req.body;
  const client = twilio(
    process.env.TWILIO_ACCOUNT_SID,
    process.env.TWILIO_AUTH_TOKEN
  );

  try {
    const result = await client.messages.create({
      body: message,
      from: process.env.TWILIO_PHONE_NUMBER,
      to: to
    });
    res.status(200).json({ success: true, messageSid: result.sid });
  } catch (error) {
    res.status(500).json({ success: false, error: error.message });
  }
}

4. 按条件触发短信发送

以「用户未完成注册」场景为例,编写触发逻辑:

// 检查用户注册状态并发送提醒短信
async function triggerRegistrationReminder(userId, userPhone) {
  // 替换为你的注册状态检查逻辑
  const isRegistrationComplete = await checkUserRegistrationStatus(userId);

  if (!isRegistrationComplete) {
    const reminderMessage = '您好,您的注册流程尚未完成,请尽快完成剩余步骤。';
    try {
      const response = await fetch('/api/send-sms', {
        method: 'POST',
        headers: { 'Content-Type': 'application/json' },
        body: JSON.stringify({ to: userPhone, message: reminderMessage })
      });
      const data = await response.json();
      data.success ? console.log('提醒短信发送成功') : console.error('短信发送失败:', data.error);
    } catch (error) {
      console.error('请求发送短信API失败:', error);
    }
  }
}

// 调用示例(可在用户登录、页面加载等触发点执行)
// triggerRegistrationReminder('用户ID', '+8613xxxxxxxxx');

5. 关键注意事项

  • 确认你的 Twilio 号码支持发送到目标地区的短信(部分地区需额外配置)
  • 部署项目时,需在托管平台(Vercel/Netlify 等)配置对应的环境变量
  • 绝对不要在前端代码中暴露 Twilio 的 Account SID 和 Auth Token
  • 可根据不同场景自定义短信模板,提升用户体验

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 18:40:39