我试图遍历带有姓名和电话号码的对象的本地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);
}
});
})
答案 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级别发送。
您需要验证您正在使用的其他一些号码或升级您的帐户,以便向您想要的所有号码发送消息。
让我知道这是否有帮助。