Rails发送多条短信

我有一个应用程序应该每隔5分钟向用户发送一次短信(后来会改变的价值)。

目前,我的应用程序正在运行,它每5分钟发送一次短信,但只发送给一个用户。 我不知道为什么其他用户被忽略了。

我正在使用Twilio。

这是我的任务:

task :sms_sender_daily => :environment do |_, args| User.find_each do |user| UserTexter.send_daily_sms(user).deliver_now if user.daily_sms == true && user.phone.present? (I tried with deliver_later too, same result) end end 

这是我的UserTexter:

 class UserTexter  '+14234350632', :to => '+' + @user.phone, :body => 'SMS journalier', }) end end 

我只有3个用户,有3个不同的号码,但它只发送给一个。

编辑:当我将send_daily_sms方法放在user.rb模型中,并硬编码“To”号码时,它会将SMS发送3次到此号码,因为3个用户的daily_sms为true。 奇怪的。

Twilio开发者传道者在这里。

从我们在评论中的讨论中,我相信您仍在使用Twilio试用帐户。 从试用帐户发送短信时,您只能发送到已validation的号码。 这包括您在注册时validation的号码。 但是它可能不包括其他数字。

要解决此问题,您可以通过转到帐户中的此页面来validation您尝试对其进行测试的其他号码: https : //www.twilio.com/user/account/phone-numbers/verified

否则,您将需要升级您的帐户,然后您就可以向任何人发送消息。

当您尝试通过查看帐户中监视器中的警报部分向未validation的号码发送邮件时,您可以检查Twilio是否抛出错误。 您可以在此处访问: https : //www.twilio.com/user/account/monitor/alerts

希望这可以帮助!

你在这里直接与Twilio客户进行交互,但也使用Textris,这有点奇怪。 以下是我将如何做到这一点(基于textris自述文件)。

 # app/models/user.rb class User < ActiveRecord::Base scope :wanting_daily_sms, -> { with_phone.where(daily_sms: true) } scope :with_phone, -> { where(arel_table[:phone].not_eq(nil)) } end # task task :sms_sender_daily => :environment do |_, args| User.wanting_daily_sms.each { |u| UserTexter.send_daily_sms(u).deliver_now } end # config/initializers/twilio.rb Twilio.configure do |config| config.account_sid = 'AC25xxx' config.auth_token = '059xxx' end # Gemfile gem 'twilio-ruby' gem 'textris' # UserTexter class UserTexter < Textris::Base default from: "Our Team <+14234350632>" def send_daily_sms(user) @user = user text to: @user.phone end end # app/views/user_texter/send_daily_sms.text.erb SMS journalier 

添加上面的初始化程序后,您需要确保重新启动服务器。