【问题标题】:Why am I unable to receive text messages with Twilio and Parse?为什么我无法使用 Twilio 和 Parse 接收短信?
【发布时间】:2014-08-21 06:45:42
【问题描述】:

我正在尝试使用 Parse 和 Parse 的云代码 Twilio 模块接收发送到我的 Twilio 号码的短信。我已按照here 的说明进行操作。

我为我想要接收短信的 Twilio 号码设置了 SMS 请求 URL 到

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

【问题讨论】:

  • 嘿,我是一名 Twilio 开发人员布道师。我想帮忙,但在我自己之前还没有真正使用过 Parse。看起来你有 95% 在那里。如果您尝试注销整个 request.params 对象会发生什么?是否可以将参数名称从“From”缩小为“from”?
  • 嗨,我没有使用 express 选项。我按照它所说的说明进行操作:“或者,也可以创建一个云函数来接收来自 Twilio 的请求。这不需要使用 Twilio 云模块,因为端点是在 Twilio 网站上设置的。首先定义一个新的云函数。”可以在here 找到说明。无论如何,我确实尝试将 From 更改为 from,但什么也没发生。
  • 我明白了,这不是 Express。您是否设法注销了整个 request.params 对象?阅读 Cloud Function 文档后,云函数似乎期望发送给它们的参数采用 JSON 格式,而 Twilio 将参数作为普通 POST 参数传递,就像来自表单一样。因此,尽管这与 Twilio 实现的文档所说的相反,但我只是担心参数根本无法通过。您能否发布记录request.params 的结果的要点?
  • From logs: I2014-08-21T15:56:55.901Z] v91: Ran cloud function receiveSMS with: Input: {} 结果: {} I2014-08-21T15:56:55.943Z] 收到新文本:[object Object]
  • 当使用 request.params.from I2014-08-21T16:45:57.656Z] v95: Ran cloud function receiveSMS with: Input: {} 结果: undefined I2014-08-21T16:45:57.689 Z] 收到新文本:未定义

标签: javascript twilio


【解决方案1】:

好的,我知道现在发生了什么,感谢您在 cmets 中为我提供更多详细信息。

您以两种方式调用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', { ... }),那么您的回复应该是您收到 SMS 消息的号码列表。希望您能以此为基础。

如果这有帮助,请告诉我。

【讨论】:

    猜你喜欢
    • 2014-08-11
    • 2020-08-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多