我认为 Twilio 请求参数的格式作为 JSON 序列化数据返回——根据响应回调部分列出的文档 ( http://twilio.github.io/twilio-node/#restResources )
如果是这种情况,我认为我可以使用 JSON.parse 访问请求参数(特别是文本的正文),如下所述......但是我没有得到任何类型的响应。
var http = require('http');
var twilio = require('twilio');
http.createServer(function (req, res) {
var body = '';
req.on('data', function(data) {
var messageBody = JSON.parse(data);
body += messageBody.body;
});
req.on('end', function() {
//Create TwiML response
var twiml = new twilio.TwimlResponse();
twiml.message('Thanks, your message of "' + body + '" was received!');
res.writeHead(200, {'Content-Type': 'text/xml'});
res.end(twiml.toString());
});
}).listen(8080);
在此之前,我曾尝试访问如下所示的参数......但正文始终返回“未定义”。
var http = require('http');
var twilio = require('twilio');
http.createServer(function (req, res) {
var body = '';
req.on('data', function(data) {
body += data.body;
});
req.on('end', function() {
//Create TwiML response
var twiml = new twilio.TwimlResponse();
twiml.message('Thanks, your message of "' + body + '" was received!');
res.writeHead(200, {'Content-Type': 'text/xml'});
res.end(twiml.toString());
});
}).listen(8080);
如果我只是这样做,body += data;
那么我会收到所有组合在一起的请求参数——我不需要这些参数。
想法?您能解释一下如何访问特定的请求参数吗?
** * ** * ***已更新* ** * ** * **在合并@hexacyanide 的建议后,我最终得到了以下有效的代码
var http = require('http');
var twilio = require('twilio');
var qs = require('querystring');
http.createServer(function (req, res) {
var body = '';
req.setEncoding('utf8');
req.on('data', function(data) {
body += data;
});
req.on('end', function() {
var data = qs.parse(body);
var twiml = new twilio.TwimlResponse();
var jsonString = JSON.stringify(data);
var jsonDataObject = JSON.parse(jsonString);
twiml.message('Thanks, your message of ' + jsonDataObject.Body + ' was received!');
res.writeHead(200, {'Content-Type': 'text/xml'});
res.end(twiml.toString());
});
}).listen(8080);