2014-09-29 2 views
1

내 SideKiq 백그라운드 작업자를 통해 Twilio로 텍스트를 보내는 데 문제가 있습니다. 작업자가 텍스트를 보낸 다음 전자 메일을 보내야합니다 (Mandrill 사용). 이메일이 정상적으로 작동합니다. 텍스트는 절대로 발생하지 않습니다.내 Twilio SMS가 Sidekiq 백그라운드 작업자로 전송되지 않는 이유는 무엇입니까?

  • 다른 작업 (환경 변수 사용 포함)과 관련된 문제가 없습니다.
  • Twilio 텍스트를 배경 작업자 외부로 보내는 데 문제가 없었습니다.
  • Foreman을 사용하여 응용 프로그램을 시작합니다.
  • 콘솔에서 UserNotifier.new.perform(1)을 실행하면 전자 메일과 텍스트가 모두 전송됩니다.

    (내 Gemfile이 twilio - 루비 보석 포함)

    :

    이 내 SMS를 보낼 사용하고 클래스입니다 : 여기

문제의 코드의 일부입니다

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 오류를 포착하고 디버그 정보를 기록해보십시오. 메시지 전송을 방해하는 오류를 발견하거나 Twilio 계정 로그의 보낸 메시지를 sid (Twilio의 내부 ID)를 통해 조사 할 수 있습니다. 더 이상 사용되지 않는 SMS/메시지 대신 메시지 리소스를 사용하도록 만들기 호출을 업데이트했습니다.

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

관련 문제