Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/meteor/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Curl Twilio TWIML POST请求:文档分析错误_Curl_Meteor_Twilio_Webhooks_Twilio Twiml - Fatal编程技术网

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

Curl Twilio TWIML POST请求:文档分析错误,curl,meteor,twilio,webhooks,twilio-twiml,Curl,Meteor,Twilio,Webhooks,Twilio 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 这是完全相同的应用程序,只是配置为相应的URL

使用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

  • 这是完全相同的应用程序,只是配置为相应的URL
  • Twilio响应错误12100-文档解析失败
  • 响应主体相当于“未部署站点”,即使我请求的是服务器端路由
来自终端的Curl请求在两个站点上产生相同的结果。这是相关代码(其余是“单击按钮”示例的样板)。在我的例子中,单击按钮将触发下面的方法

//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;
        }
      });
    }
  });
}
//lib.js
路由器路由('/');
if(Meteor.isServer){
Router.route(“/SERVER\u SIDE\u URL”{
其中:'服务器',
行动:功能(){
console.log(this.request);
var xmlData=“”;
xmlData+=“请,请工作!”;
this.response.writeHead(200,{'Content-Type':'text/xml'});
this.response.end(xmlData);
}
});
流星法({
makeCall:function(){
twilio=twilio(“发布键”、“私钥”);
twilio.calls.create({
致:“我的电话号码”,
来自:“我的号码”,
url:“服务器端url”
},函数(错误,响应数据){
如果(!err&&!responseData.error_消息){
控制台日志(responseData);
返回响应数据;
}否则{
控制台日志(responseData);
返回响应数据;
}
});
}
});
}

这里是Twilio的Megan。尝试将版本和编码放在var xmlData的引号中

var xmlData = "<?xml version='1.0' encoding='UTF-8'?>";
var xmlData=”“;
希望这能奏效

另外,我正在测试这个本地运行的ngrok,它允许您将本地主机隧道到一个可公开访问的URL。这使得在开始部署之前确保代码正常工作变得很容易

如果你想了解更多关于ngrok如何工作的信息,你可以去看看