2014-09-29 72 views
1

我遇到了通過我的SideKiq後臺工作人員發送Twilio文本的問題。工作人員應該發送文本,然後發送電子郵件(與Mandrill)。 電子郵件工作正常。 文字從未發生過。爲什麼我的Twilio短信不會在Sidekiq後臺工作人員發送?

  • 我還沒有與其他工作(包括也涉及使用環境變量 )的問題。
  • 我沒有問題發送Twilio文本以外的背景工作者。
  • 我正在使用工頭開始我的申請。
  • 在控制檯中,運行UserNotifier.new.perform(1)正常工作 - 發送電子郵件和文本。

下面是一些有問題的代碼:

這是我使用的是送我的短信類:

(我的Gemfile包括twilio-紅寶石寶石)

class SendSMS 
    def initialize 
     @twilio_client = Twilio::REST::Client.new "#{ENV['TWILIO_SID']}", "#{ENV['TWILIO_TOKEN']}" 
    end 

    def send(message, user) 
     @twilio_client.account.sms.messages.create(
     :from => "+1#{ENV['TWILIO_PHONE_NUMBER']}", 
     :to => user.phone_number, 
     :body => message 
    ) 
    end 
end 

我的工作人員是這樣的:

class UserNotifier 
    include Sidekiq::Worker 
    sidekiq_options queue: :immediate 

    def perform(user_id) 
    user = User.find(user_id) 
    message = "Hi #{user.name}!" 
    SendSMS.new.send(message, user) 
    UserMailer.send(message, user).deliver 
    end 
end 

任何人都可以看到我的代碼有問題嗎?請讓我知道是否還有其他我應該發佈的內容,或者是否有任何我可以做出的澄清。

我的服務器顯示工作日誌,它似乎沒有運行到錯誤。

有關如何調試後臺工作者的任何建議,也將不勝感激。

回答

1

嘗試從Twilio捕獲REST錯誤並記錄一些調試信息。您可以發現可能阻止郵件發送的錯誤,或通過其sid(Twilio的內部ID)查看Twilio帳戶日誌中發送的郵件。還更新了您的創建調用以使用消息資源而不是棄用的短信/消息。

begin 
    message = @twilio_client.account.messages.create(
     :from => "+1#{ENV['TWILIO_PHONE_NUMBER']}", 
     :to => user.phone_number, 
     :body => message 
    ) 
    logger.debug "sent #{message.sid}" 
rescue Twilio::REST::RequestError => e 
    logger.debug "error: #{e.message}" 
end 
+0

剛剛解決了我的問題與你建議的策略。我不知道爲什麼我找不到[sidekiq的日誌記錄文檔](https://github.com/mperham/sidekiq/wiki/Logging)。事實證明,錯誤與發送符號作爲參數有關,當然,我沒有在上面的代碼中加入...... *慢速拍手* – QuillyT 2014-09-30 14:43:18