如何在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 ...
您需要seperately发送邮件,各有不同的延迟:
phones.each_with_index do |number, index|
SomeWorker.perform_in(index*3, message, number)
end
完美的工作!我编辑了我的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
会随机的延迟,这应该让你发送多个测试。
'HardWorker.perform_in(10.seconds'不知道,如果你延迟10秒钟发生到这两个消息和结果,他们几乎一起发送? – wesley6j