我正在尝试使用Parse和Parse的云代码Twilio模块接收发送到我的Twilio号码的短信。我已按照here的说明进行操作。
我为要接收短信的Twilio号码设置短信请求网址
https://myAppID:javascript-key=myJavaScriptKey@api.parse.com/1/functions/receiveSMS
当然我使用了我的解析应用ID和我的解析javascript密钥。
然后我在Parse中创建了云函数:
Parse.Cloud.define("receiveSMS", function(request, response) {
response.success("Received a new text: " + request.params.From);
});
然后我有一个小网页,其中一些jquery调用了云功能
$('button').on('click', function() {
alert('button');
Parse.Cloud.run('receiveSMS', {
}, {
// Success handler
success: function(message) {
alert('Success: ' + message);
},
// Error handler
error: function(message) {
alert('Error: ' + message);
}
});
});
我尝试发短信我的Twilio号码,然后使用我的页面上面的代码来调用云代码函数“receiveSMS”。响应成功,我收到消息“收到一个新文本:未定义”。所以看起来我能够检测到发送了一条新的短信,但是我得到的是未定义的,而不是短信的来源。我也想得到这个消息。我究竟做错了什么?感谢
答案 0 :(得分:3)
好的,我知道现在发生了什么,感谢您在评论中向我提供更多详细信息。
您正在以两种方式呼叫receiveSMS
功能。首先,当您向Twilio号码发送短信时,它会被调用。收到该请求后,您确实会记录所有参数,并且您的日志将显示"Received a new text: +YOUR_PHONE_NUMBER"
。
问题在于您从网页调用receiveSMS
功能时。此时,请求中没有参数,这就是您在日志中看到undefined
的原因。 receiveSMS
功能真正适用于Twilio,因为您可以使用TwiML回复,告诉Twilio处理该消息。
如果您想要获取发送到Twilio号码的SMS消息的详细信息,您可以使用我们的REST API在不同的云功能中检索数据,如下所示:
var client = require('twilio')('TWILIO_SID', 'TWILIO_AUTH_TOKEN');
Parse.Cloud.define('fetchSMS', function(request, response) {
client.messages.list({ to: YOUR_TWILIO_NUMBER }, function(err, data){
numbers = data.messages.map(function(message){
return message.from;
}).join(', ');
response.success("Received messages from: " + numbers);
})
});
然后,如果您更改网页而不是拨打Parse.Cloud.run('fetchSMS', { ... })
,那么您的回复应该是您收到短信的号码列表。希望你可以在此基础上继续发展。
如果有帮助,请告诉我。