在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
相关产品推荐
相关产品推荐

