如何在Rails上使用Twilio发送连续短信?

问题描述:

我使用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

您需要seperately发送邮件,各有不同的延迟:

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

完美的工作!我编辑了我的schedules_controller和voila !! - 我的手机只振动了三次,非常感谢! – Iggy

我看来像在工作刻苦的延迟需要的信息之间的变化被发送。所有的工作刻苦的代码做的是发送所有短信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 

会随机的延迟,这应该让你发送多个测试。