Ruby on rails 设置Twilio客户端
我正在访问TwilioAPI,向数据库中的所有用户发送每日消息。对于每个人来说,消息应该是相同的,并且来自我整理的一系列消息。我正在使用Heroku调度程序触发我构建的rake任务,该任务将在每天的某个小时运行。但是,由于我的Twilio客户端模型是如何设置的,因此每次运行任务时都会创建一个新的模型实例,因此总是发送数组中的第一条消息,而不是像设置的那样连续遍历数组。有没有人知道如何重新安排或重新编码我的模型或rake任务,这样就不会发生这种情况?理想情况下,它应该自行运行 twilio_client.rb型号:Ruby on rails 设置Twilio客户端,ruby-on-rails,ruby,methods,twilio,rake-task,Ruby On Rails,Ruby,Methods,Twilio,Rake Task,我正在访问TwilioAPI,向数据库中的所有用户发送每日消息。对于每个人来说,消息应该是相同的,并且来自我整理的一系列消息。我正在使用Heroku调度程序触发我构建的rake任务,该任务将在每天的某个小时运行。但是,由于我的Twilio客户端模型是如何设置的,因此每次运行任务时都会创建一个新的模型实例,因此总是发送数组中的第一条消息,而不是像设置的那样连续遍历数组。有没有人知道如何重新安排或重新编码我的模型或rake任务,这样就不会发生这种情况?理想情况下,它应该自行运行 twilio_cli
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
您是只安排一项工作还是为每个用户电话号码安排一项工作?@Matt只安排一项工作。在上面的模型中,我的notify方法正在迭代我的整个数字列表。听起来您需要在迭代结束时保留索引的值。然后在随后的作业运行中查找该值,以了解您在哪里中断了。即使您可以让调度程序持久化您的任务并在内存中执行,如果您的服务器节点被循环,它将失去它的位置,并且您将向用户发送大量重复消息。