我在通过我的SideKiq后台工作人员向Twilio发送文本时遇到问题。工作人员应该发送文本,然后发送电子邮件(使用Mandrill)。 电子邮件工作正常。 文本永远不会发生。
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
任何人都可以看到我的代码存在问题吗?如果我还有其他任何内容要发布,或者我可以做出任何澄清,请告诉我。
我的服务器正在显示工作日志,但似乎没有遇到错误。
关于如何调试后台工作人员的任何建议也将受到赞赏。
答案 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