为什么我无法接收Twilio和Parse的短信?

时间:2014-08-21 06:45:43

标签: javascript twilio

我正在尝试使用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”。响应成功,我收到消息“收到一个新文本:未定义”。所以看起来我能够检测到发送了一条新的短信,但是我得到的是未定义的,而不是短信的来源。我也想得到这个消息。我究竟做错了什么?感谢

1 个答案:

答案 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', { ... }),那么您的回复应该是您收到短信的号码列表。希望你可以在此基础上继续发展。

如果有帮助,请告诉我。