Rails发送多条短信

时间:2015-07-24 14:32:04

标签: ruby-on-rails ruby twilio

我有一个应用程序应该每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 < Textris::Base

  def send_daily_sms(user)

    @user = user

    # put your own credentials here 
    account_sid = 'AC25xxx' 
    auth_token = '059xxx' 

    # set up a client to talk to the Twilio REST API 
    @client = Twilio::REST::Client.new account_sid, auth_token 

    @client.account.messages.create({
        :from => '+14234350632', 
        :to => '+' + @user.phone, 
        :body => 'SMS journalier',  
    })
  end
end

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

编辑: 当我将send_daily_sms方法放在user.rb模型中时,硬编码&#34; To&#34;数字,它发送短信3次到这个号码,因为3个用户的daily_sms为真。怪异。

2 个答案:

答案 0 :(得分:0)

Twilio开发者传道者在这里。

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

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

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

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

希望这有帮助!

答案 1 :(得分:0)

您在这里直接与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

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

相关问题