使用Meteor构建一个简单的Twilio应用程序,获取调用但是XML没有被解析(得到通常的“抱歉,发生了应用程序错误”)
指向xxxxx.meteor.com/api/twiml/voice或xxxxx.meteor.com/voice.xml:
指向xxxxx.onmodulus.net/api/twiml/voice或voice.xml
来自终端的卷曲请求在两个站点上产生相同的结果。这是相关的代码(其余的是样板'点击按钮'示例)。在我的例子中,单击按钮会触发下面的方法...
//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;
}
});
}
});
}
答案 0 :(得分:3)
来自Twilio的梅根在这里。尝试将var xmlData中的版本和编码放在引号中。
var xmlData = "<?xml version='1.0' encoding='UTF-8'?>";
希望能有所作为。
此外,我正在测试这个本地运行的ngrok,它允许您将localhost隧道传输到可公开访问的URL。这样可以在进入部署之前轻松确保代码正常工作。
如果您想了解有关ngrok如何运作的更多信息,可以查看this post。