Twilio TWIML POST请求:文档分析错误

时间:2015-10-21 16:54:44

标签: curl meteor twilio webhooks twiml

使用Meteor构建一个简单的Twilio应用程序,获取调用但是XML没有被解析(得到通常的“抱歉,发生了应用程序错误”)

指向xxxxx.meteor.com/api/twiml/voice或xxxxx.meteor.com/voice.xml:

  • Twilio以错误11200响应 - HTTP检索失败(404)
  • 响应正文是“此地址未部署网站”

指向xxxxx.onmodulus.net/api/twiml/voice或voice.xml

  • 这是完全相同的应用程序,只是配置为相应的网址
  • Twilio以错误12100回复 - 文档解析失败
  • 即使我正在请求服务器端路由,响应正文也是“未部署站点”的模数'。

来自终端的卷曲请求在两个站点上产生相同的结果。这是相关的代码(其余的是样板'点击按钮'示例)。在我的例子中,单击按钮会触发下面的方法...

//lib.js
Router.route('/');

if (Meteor.isServer) {
  Router.route('/SERVER_SIDE_URL', {
     where: 'server',
     action: function() {
       console.log(this.request);
       var xmlData = "<?xml version=1.0 encoding=UTF-8?>";
       xmlData += '<Response><Say voice="man">Please, please work!</Say></Response>';

       this.response.writeHead(200, {'Content-Type': 'text/xml'});
       this.response.end(xmlData);
    }
  });

  Meteor.methods({
    makeCall: function(){
      twilio = Twilio("PUB_KEY", "PRIV_KEY");
      twilio.calls.create({
        to:'MY_PHONE_NUMBER',
        from: 'MY_TWILIO_NUMBER',
        url: 'SERVER_SIDE_URL'
      }, function(err, responseData) {
        if(!err && !responseData.error_message){
          console.log(responseData); 
          return responseData;
        } else{
          console.log(responseData);
          return responseData;
        }
      });
    }
  });
}

1 个答案:

答案 0 :(得分:3)

来自Twilio的梅根在这里。尝试将var xmlData中的版本和编码放在引号中。

var xmlData = "<?xml version='1.0' encoding='UTF-8'?>";

希望能有所作为。

此外,我正在测试这个本地运行的ngrok,它允许您将localhost隧道传输到可公开访问的URL。这样可以在进入部署之前轻松确保代码正常工作。

如果您想了解有关ngrok如何运作的更多信息,可以查看this post