2017-05-30 60 views
1

我使用React作爲前端,Rails後端。我有一系列我想要發送短信的電話號碼。如何在Rails上使用Twilio發送連續短信?

在前端,我有這樣的方法:

function postMessage(message, newWorkers){ 
    let phoneArray = newWorkers.map((worker) => {return PhoneHelper.condensePhone(worker.phone)}) //condensePhone converts input to +1PHONENUMBER 
    for (var i = 0; i < phoneArray.length; i++){ 

    return fetch(`text_it`, { 
     method: 'POST', 
     headers: { 
     'Content-Type': 'application/json', 
     }, 
     body: JSON.stringify({ 
     message: message, 
     phone: phoneArray[i] 
     }) 
    }) 
    } 
}; 

phoneArray看起來像["1234567890", "1112223333", "2223334444"]。我將發送相同的短信給所有這些號碼。

在後端,我有:

//routes 
post '/text_it' => 'schedules#text_dat_message' 

//schedules_controller 
def text_dat_message 
    TwilioSender.new.send_it(params[:message], params[:phone]) 
end 

我通過它發送給我的電話號碼兩次測試它,但是我只收到一個文本。然後我閱讀this SO post Twilio免費套餐(我現在免費試用)每秒消息1次。我安裝sidekiq,並增加了工作人員送它在幾秒鐘內,

def text_dat_message 
    HardWorker.perform_in(10.seconds, params[:message], params[:phone]) #HardWorker does TwilioSender.new.send_it(args[0], args[1]) 
    end 

它仍然只給我一個單一的文本,當我試圖發送文本2-3到我的電話號碼。

我該如何更改我的代碼,以便將文本消息按順序發送到指定的號碼,並在中間插入5秒鐘的間隔?

編輯:

這是工作。邁克爾的回答給了我一個巨大的見解。問題似乎是,在10分鐘內,我幾乎從同一點開始關閉了10分鐘,並且Twilio的1個短信/秒限制無法工作。

我編輯我的陣營一面派,而不是通過它迭代一個電話陣列:

... 
    body: JSON.stringify({ 
    message: message, 
    phones: phoneArray 
    }) 

,並在鐵軌上的一面,我知道我會被接收方的手機(和一個消息)的數組,所以我編輯我的控制器以跟隨韋斯利的回答。此外,我需要有手機的數組,所以我所做的:

phones = params[:phones] 
phones.each_with_index ... 
+0

'HardWorker.perform_in(10.seconds'不知道,如果你延遲10秒鐘發生到這兩個消息和結果,他們幾乎一起發送? – wesley6j

回答

2

您需要seperately發送郵件,各有不同的延遲:

phones.each_with_index do |number, index| 
    SomeWorker.perform_in(index*3, message, number) 
end 
+0

完美的工作!我編輯了我的schedules_controller和voila !! - 我的手機只振動了三次,非常感謝! – Iggy

1

我看來像在工作刻苦的延遲需要的信息之間的變化被髮送。所有的工作刻苦的代碼做的是發送所有短信10秒鐘,(在同一時間都還)收到後,他們 類似:

def text_dat_message 
    HardWorker.perform_in(rand(1..30).seconds, params[:message], params[:phone]) #HardWorker does TwilioSender.new.send_it(args[0], args[1]) 
end 

會隨機的延遲,這應該讓你發送多個測試。