为什么我的Twilio短信不会发送到Sidekiq后台工作人员?

时间:2014-09-29 21:50:06

标签: ruby-on-rails ruby backgroundworker twilio sidekiq

我在通过我的SideKiq后台工作人员向Twilio发送文本时遇到问题。工作人员应该发送文本,然后发送电子邮件(使用Mandrill)。 电子邮件工作正常。 文本永远不会发生。

  • 我还没有遇到其他工作的问题(包括那些也涉及使用的工作) 环境变量)。
  • 我没有在背景工作者之外发送Twilio文本的问题。
  • 我正在使用Foreman开始我的申请。
  • 在控制台中,运行UserNotifier.new.perform(1)工作正常 - 电子邮件和文本都会发送。

以下是一些有问题的代码:

这是我用来发送短信的课程:

(我的Gemfile包含twilio-ruby gem)

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 个答案:

答案 0 :(得分:1)

尝试从Twilio捕获REST错误并记录一些调试信息。您可以通过其sid(Twilio的内部ID)发现可能阻止邮件发送或调查Twilio帐户日志中已发送邮件的错误。还更新了您的create调用以使用消息资源而不是已弃用的短信/消息。

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