我正在访问Twilio API,向我的数据库中的所有用户发送每日消息。消息对每个人来说应该是相同的,并且来自我已经放在一起的一系列消息。我使用Heroku Scheduler来触发我构建的rake任务,该任务将在每天的某个小时运行任务。但是,由于我的Twilio客户端模型的设置方式,每次运行任务时都会创建一个新的模型实例,因此总是在数组中发送第一条消息(而不是连续地通过数组,因为它'设置做)。有没有人知道重新排列或重新编码我的模型或rake任务的方法,所以这不会发生?它理想情况下应该自行运行。
twilio_client.rb型号:
class TwilioClient
require 'twilio-ruby'
def initialize
@client = Twilio::REST::Client.new ENV["TWILIO_ACCOUNT_SID"], ENV["TWILIO_AUTH_TOKEN"]
@index = 0
end
def notify
all_phone_numbers.each do |number|
@client.account.messages.create(
from: '+1401XXXXXXX',
to: number,
body: daily_text
)
end
end
private
def daily_text
@message = [
"1", "2", "3"
]
@index += 1
if @index >= @message.length
@index = 0
end
@message[@index]
end
def all_phone_numbers
User.pluck(:phone_number)
end
end
rake任务:
desc "This task is called by the Heroku scheduler add-on"
task notify: :environment do
client = TwilioClient.new
client.notify
end