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

如何在Node.js应用中实现并插值Twilio库的参数?

如何在Node.js Twilio应用中获取并使用请求参数(如FromCountry)

嘿,我完全懂被这个问题卡5小时的挫败感——别慌,解决方法其实比你想的简单!Twilio触发你的webhook时,会把所有短信相关参数(包括FromCountry)通过POST请求的请求体发送给你,你只需要确保Express能正确解析这些数据,就能轻松获取并插值使用了。

第一步:添加表单解析中间件

默认情况下,Express不会自动解析x-www-form-urlencoded格式的POST请求体(这正是Twilio发送的格式),所以首先得补上这个关键中间件:

const http = require('http');
const express = require('express');
const MessagingResponse = require('twilio').twiml.MessagingResponse;
const app = express();

// 核心:添加解析表单数据的中间件,否则拿不到Twilio的参数
app.use(express.urlencoded({ extended: false }));

第二步:获取参数并插值到回复中

现在你可以在/sms路由里,通过req.body直接访问Twilio发送的所有参数,比如FromCountry、From、Body等,然后把这些参数插值到回复消息里:

app.post('/sms', (req, res) => {
  // 从请求体中提取Twilio的参数
  const fromCountry = req.body.FromCountry;
  const senderPhone = req.body.From;
  const incomingText = req.body.Body;

  // 创建Twiml响应实例
  const twiml = new MessagingResponse();
  // 把FromCountry参数插值到回复内容里
  twiml.message(`嗨!你的短信来自${fromCountry},号码是${senderPhone},你发送的内容是:${incomingText}`);

  // 返回Twiml格式的响应给Twilio
  res.writeHead(200, {'Content-Type': 'text/xml'});
  res.end(twiml.toString());
});

// 启动服务器监听端口
http.createServer(app).listen(3000, () => {
  console.log('服务器运行在端口3000');
});

为什么之前拿不到参数?

你之前的代码里漏掉了express.urlencoded()中间件,导致Express无法解析Twilio发送的POST请求体,所以req.body会是undefined,自然获取不到FromCountry这类参数。

查看所有可用参数

如果你想确认Twilio到底发送了哪些参数,可以先在路由里打印整个请求体:

app.post('/sms', (req, res) => {
  console.log('Twilio发送的所有参数:', req.body);
  // 后续逻辑...
});

控制台会输出所有可用参数,方便你按需调用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 03:41:40