My Node.js应用程序设置为响应通过付费Twilio号码收到的短信。我使用 ngrok 对其进行了测试,一切正常。但是,一旦我将应用程序部署到 Heroku,我就开始在 Twilio 控制台中看到 11200 HTTP 检索失败错误。
Heroku 中是否有我需要设置的配置设置?
// Twilio Credentials
const accountSid = 'xxx';
const authToken = 'xxx';
const client = require('twilio')(accountSid, authToken);
const MessagingResponse = require('twilio').twiml.MessagingResponse;
var express = require('express');
var app = express();
var bodyparser = require('body-parser');
app.use(bodyparser.urlencoded({extended: true}));
app.set('port', (process.env.PORT || 3000));
app.use('/', function(request, response){
response.send();
});
app.post('/sms', function(req, res) {
const twiml = new MessagingResponse();
twiml.message('Hi, this is Culpability. Your incident has been logged. Your
unique id # XXXX');
res.writeHead(200, {'Content-Type': 'text/xml'});
res.end(twiml.toString());
});
app.listen(app.get('port'), function() {
// console.log('Node app is running on port', app.get('port'));
});
Twilio开发者布道者在这里。
我认为问题主要出在您用于发送响应的方法上。目前,/sms
路线的最后一行是res.end(twiml.toString());
Response#end
用于"在没有任何数据的情况下快速结束响应"。
我认为您对res.writeHead()
的使用现在可能也已经过时了。
我会将您的/sms
路线更改为如下所示:
app.post('/sms', function(req, res) {
const twiml = new MessagingResponse();
twiml.message('Hi, this is Culpability. Your incident has been logged. Your unique id # XXXX');
res.set('Content-Type', 'text/xml');
res.status(200).send(twiml.toString());
});
然后尝试重新部署到 Heroku,看看会发生什么。