2016-01-30 3 views
0

Я пытаюсь выполнить итерацию через локальный файл JSON объектов с именами и номерами телефонов. В моем цикле я вызываю функцию SendMessage Twilio для отправки сообщения каждому номеру из моего Twilio Number. Следующий код запускается, но только отправляет сообщение на первое число в файле JSON. Что-то не так с моим подходом или это связано с ограничением API Twilio? Если да, есть ли обходной путь? Благодарю.Отправка сообщений в список получателей с Twilio

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); 

     } 
    }); 
    }) 

ответ

1

Регулярный цикл не будет работать, так как он не ждет, пока все запросы async sendMessage() будут завершены. Один из простых способов сделать это - использовать некоторую библиотеку, чтобы управлять потоком цикла, например async.each(). Вот переработанный код usning 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') 
}); 
+0

Привет, спасибо за ответ. Я попытался использовать этот подход, но, к сожалению, он имеет тот же результат: сообщение для первого объекта успешно отправлено, а другие объекты - нет. Я получаю: '+ 15551283122' ' Отправлено с вашей пробной учетной записи Twilio - Привет, Джон' 'все сделано здесь'. У вас есть представление о том, что еще может быть проблемой? Еще раз спасибо. –

+0

Я не уверен, что Twilio позволяет одновременно удалять все звонки. Возможно, вы можете попробовать eachSeries() вместо каждого() отправлять один за другим. – Ben

1

Twilio разработчик евангелист здесь.

Этот цикл должен работать, но я заметил в вашем комментарии к ответу Бена, что вы все еще отправляете эти сообщения из пробной учетной записи. Существуют ограничения для пробных учетных записей, так что вы можете отправлять сообщения только на номера, которые вы подтвердили с помощью Twilio (чтобы избежать спама).

Я предполагаю, что вы только что проверили первое число в своем списке, чтобы остальные сообщения не отправляли на уровне API.

Вам нужно будет подтвердить некоторые другие номера, которые вы используете или обновите свою учетную запись, чтобы отправлять сообщения на все нужные вам номера.

Дайте мне знать, если это поможет вообще.

Смежные вопросы