簡體   English   中英

如何使用Twilio on Rails發送順序短信?

[英]How to send sequential SMS using Twilio on Rails?

我使用React作為前端,Rails使用后端。 我有一系列電話號碼,我想發送短信。

在前端,我有這個方法:

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

我通過兩次將它發送到我的電話號碼來測試它,但是我只收到一個文本。 然后我讀了這篇SO帖子 ,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秒?

編輯:

這是工作。 邁克爾的回答給了我很大的洞察力。 似乎問題是,sidekiq的執行時間為10秒,我幾乎從同一點開始10秒鍾,並且由於Twilio的1個SMS / s限制,它將無法工作。

我編輯了我的React端來發送一個電話陣列而不是迭代它:

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

在Rails方面,我知道我將收到一系列電話(和一條消息),所以我編輯了我的控制器以遵循韋斯利的回答。 另外,我需要有一系列手機,所以我做了:

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

你需要單獨發送消息,每個消息都有不同的延遲:

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

在我看來,HardWorker延遲需要在發送的消息之間變化。 Hardworker代碼所做的就是在收到所有消息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

將隨機化延遲,這應該允許您發送多個測試。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM