使用Twilio将消息发送到收件人列表

时间:2016-01-30 02:45:58

标签: javascript json node.js api twilio

我试图遍历带有姓名和电话号码的对象的本地JSON文件。在我的循环中,我调用Twilio的sendMessage函数向我的Twilio号码中的每个号码发送一条消息。下面的代码运行但只向JSON文件中的第一个数字发送消息。我的方法有问题,还是由于Twilio API的限制?如果是这样,有解决方法吗?谢谢。

  admins.forEach(function(admin) {
      var phoneNum = admin.phoneNumber;
      var adminName = admin.name;
      var messageBody = "Hello there, " + adminName;
      client.sendMessage({
        to: phoneNum, // Any number Twilio can deliver to
        from: TWILIO_NUMBER, 
        body: messageBody // body of the SMS message

    }, function(err, responseData) { 
        if (!err) {

            console.log(responseData.from);
            console.log(responseData.body); 

        }
    });
    })

2 个答案:

答案 0 :(得分:1)

常规循环不起作用,因为它不会等待所有异步请求sendMessage()调用完成。其中一个简单的方法是使用一些可以控制循环流的库,例如async.each()。以下是使用async.each()的修订代码:

var async = require('async');


async.each(admins, function(admin, eachCb) {
    var phoneNum = admin.phoneNumber;
    var adminName = admin.name;
    var messageBody = "Hello there, " + adminName;
    client.sendMessage({
        to: phoneNum, // Any number Twilio can deliver to
        from: TWILIO_NUMBER,
        body: messageBody // body of the SMS message

    }, function(err, responseData) {
        if (!err) {

            console.log(responseData.from);
            console.log(responseData.body);

        }
        eachCb(null);
    });
}, function(err) {
    console.log('all done here')
});

答案 1 :(得分:1)

Twilio开发者传道者在这里。

该循环应该有效,但我在你对Ben的答案的评论中注意到你仍在从试用帐户发送这些消息。试用帐户存在限制,因此您只能将邮件发送到您已使用Twilio验证为您的号码(以避免垃圾邮件)。

我的猜测是您只验证了列表中的第一个号码,因此剩余的消息无法在API级别发送。

您需要验证您正在使用的其他一些号码或升级您的帐户,以便向您想要的所有号码发送消息。

让我知道这是否有帮助。