Twilio 11200 Heroku 上的 Node 应用程序的 HTTP 检索失败



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,看看会发生什么。