Twilio statusCallback实现遇到麻烦

时间:2018-06-06 08:39:56

标签: node.js twilio twilio-api

我是Twilio的初学者。我知道我可以通过statusCallback来获取SMS发送的状态,这样POST将发生在具有消息状态的callbackurl上。但是我在创建特定的POST端点时遇到了麻烦。 这就是我所拥有的:

  // Twilio API CALL
    client.sendMessage({
            to:userId, 
            from: metadata.myTwilioNumber,
            body: message, 
            StatusCallback:'POST URL'
                }, function(err, responseData) {
              if (!err) { 

               } else {
                 logger.info(err);
              }

我的POST端点是一个简单的节点js(请求,响应)端点。

    var server = http.createServer ( function(request,response){
          response.writeHead(200,{"Content-Type":"text\plain"});
        if(request.method == "GET")
            {
                response.end("received GET request.")
            }
        else if(request.method == "POST")
            {

                console.log(request.CallStatus);
    console.log(response);
                console.log('receivedRequest');
                response.end("received POST request.");
            }
        else
            {
                response.end("Undefined request .");
            }
    });

server.listen(4445);

有人可以帮助我获取响应的状态和messageID吗?目前,POST已被调用,但我无法获取消息详细信息和状态。

1 个答案:

答案 0 :(得分:2)

Twilio开发者传道者在这里。

您正在使用基本的Node.js标准库http模块,该模块将从POST请求中提取信息。我是否可以建议您尝试使用express代替body-parser

您可以通过使用npm:

安装这两个模块来实现
npm install express body-parser

然后你可以像这样重写传入的消息应用程序:

const express = require('express');
const bodyParser = require('body-parser');

const app = express();

app.use(bodyParser.urlencoded({ extended: false }));

app.post('/', (req, res) => {
  console.log(req.body.CallStatus);
  res.sendStatus(200);
});

app.listen(4445, () => {
  console.log('Application running on localhost:4445');
});

所有parameters that Twilio sends都可以在req.body对象上使用。

查看此tutorial on receiving SMS messages with Twilio in Node以获取更多详细信息。