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
添加上面的初始化程序后,您需要确保重新启动服务器。