簡體   English   中英

Rails發送多個短信

[英]Rails send multiple SMS

我有一個應每5分鍾向用戶發送一條SMS的應用(該值稍后會更改)。

目前,我的應用正在運行,每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模型中,並對“收件人”號碼進行硬編碼時,它將3次SMS發送到該號碼,因為3個用戶的day_sms為true。 奇怪的。

Twilio開發人員布道者在這里。

我相信,根據我們在評論中的討論,您仍在使用Twilio試用帳戶。 從試用帳戶發送SMS消息時,您只能發送到已驗證的號碼。 這包括您的號碼,您在注冊時會進行驗證。 但是,可能不會包括其他數字。

要解決此問題,您可以通過轉到帳戶中的以下頁面來驗證要測試的其他號碼: https : //www.twilio.com/user/account/phone-numbers/verified

否則,您將要升級您的帳戶,然后就可以將消息發送給任何人。

您可以通過查看帳戶內“監視器”中的“警報”部分,來檢查嘗試向未驗證的號碼發送消息時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

在上面添加了初始化程序之后,您需要確保重新啟動服務器。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM