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

Node.js环境下Twilio短信接收接口如何记录入站消息内容

Twilio入站短信提取、存储与定制回复实现

核心可获取字段

Twilio将用户发送的短信转发到你的/sms回调接口时,会以表单格式在请求体中携带标准化参数,所有需要的数据均可从req.body中读取:

  • From:发送方的完整国际格式手机号
  • Body:用户发送的短信原文,是消息存储、规则匹配的核心依据
  • MessageSid:单条短信的唯一标识,可用于日志去重、链路追踪
  • To:你侧接收短信的Twilio号码

必要配置

想要正常读取请求体参数,必须在路由注册前添加Express内置的URL编码解析中间件,否则会出现req.body为空的问题:

app.use(express.urlencoded({ extended: false }))

接口改造实现

按照「提取入站字段→存储消息日志→匹配回复规则→构造合法Twiml响应」的流程调整现有代码,完整实现逻辑如下:

app.post('/sms', async (req, res) => {
  // 读取入站消息核心字段
  const sender = req.body.From
  const userMessage = req.body.Body.trim()
  const messageUniqueId = req.body.MessageSid
  const receiveNumber = req.body.To

  // 替换为你实际的数据库写入逻辑
  await messageLog.save({
    unique_id: messageUniqueId,
    sender: sender,
    receiver: receiveNumber,
    content: userMessage,
    receive_time: new Date()
  })

  // 替换为你实际的匹配规则查询逻辑
  const defaultReply = 'The Robots are coming! Head for the hills!'
  const matchedRule = await replyRule.find({
    keyword: userMessage.toLowerCase()
  })
  const finalReply = matchedRule ? matchedRule.reply_content : defaultReply

  // 构造Twilio要求的XML格式响应
  const twiml = new MessagingResponse()
  twiml.message(finalReply)

  res.writeHead(200, {'Content-Type': 'text/xml'})
  res.end(twiml.toString())
})

落地注意事项

  • Twilio传递的请求字段大小写严格敏感,不要将From、Body写为全小写格式,否则会读取到空值
  • 改造完成后,需将公网可访问的/sms接口地址绑定到Twilio控制台对应号码的入站短信回调配置中,否则无法收到任何转发的用户消息
  • 做关键词匹配时可对用户输入做标准化处理(统一转小写、去除首尾特殊字符、全半角转换),提升规则命中的容错率

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.22 10:06:09