2015-02-04 2 views
3

Моя команда и я используем twilio для отправки sms-сообщений. Кажется, что все отлично работает на локальной машине каждого пользователя (с тем же самым точным кодом), за исключением того, что twilio всегда возвращает мне аутентификационную ошибку. Я отправляю сообщения на их «специальный номер», поэтому он фактически не отправляет реальное текстовое сообщение, но он все равно возвращает ошибку аутентификации.Twilio возвращает ошибку аутентификации только для моей локальной машины

вот некоторые из нашего кода, чтобы отправить сообщение:

def send_sms 
    self.from_phone_number = CONFIG['live_twilio'] ? self.customer.assigned_phone_number : CONFIG['test_phone_number'] 
    self.to_phone_number = CONFIG['live_twilio'] ? self.customer.customer_phone_number : CONFIG['test_phone_number'] 

    begin 
    report_to_new_relic_insights 
    send_message_with_twilio! 
    rescue Twilio::REST::RequestError => e 
    self.error_description = e.message 
    end 

    self.dispatched_at = Time.now 
    self.save(validate: false) 

    return e 
end 

def send_message_with_twilio! 
    unless self.customer.example_customer? 
    twilio_params = { 
     from: "+1#{from_phone_number}", 
     to: "+1#{to_phone_number}", 
     body: self.text 
    } 

    if ENV['RECORD_TWILIO_STATUSES'].in?(['1', 'true']) 
     twilio_params[:status_callback] = "#{CONFIG['secure_domain']}/messages/#{id}/update_status" 
    end 

    client.account.messages.create(twilio_params) 
    else 
    # @onboarding_flow 
    # don't send the actual SMS to the example customer 
    self.customer.send_reply_as_example_customer! if self.customer.first_reply? 
    end 
end 

def client 
    @client ||= begin 
    account_sid = ENV['ACCOUNT_SID'] || CONFIG['account_sid'] 
    auth_token = ENV['AUTH_TOKEN'] || CONFIG['auth_token'] 
    Twilio::REST::Client.new account_sid, auth_token 
    end 
end 

каждый раз, когда проходит эта линия: client.account.messages.create(twilio_params)

он возвращает ошибку AUTHENTICATE. он работает на любой другой локальной машине, кроме моей. весь код точно такой же, токены auth точно такие же. какие идеи могут быть проблемы? (В Auth жетоны становятся вытащило из config.yml

Больше информации: даже при запуске голых костей Twilio клиента в консоли с той же точной информацией в обеих машинах, мой возвращает ошибку и мои коллеги возвращают действительный

ответ

5

Twilio евангелист здесь.

Это может быть одна из многих вещей, но единственная причина, Twilio будет жаловаться на проверку подлинности, если у вас есть неправильный SID учетной записи или токен аутентификации.

Так может в значительной степени гарантировать это бит, который идет не так:

def client 
    @client ||= begin 
    account_sid = ENV['ACCOUNT_SID'] || CONFIG['account_sid'] 
    auth_token = ENV['AUTH_TOKEN'] || CONFIG['auth_token'] 
    Twilio::REST::Client.new account_sid, auth_token 
    end 
end 

Мое предложение здесь для вас, чтобы открыть свой терминал и выполните команду:

$ printenv 

Это должно напечатать все переменные среды для вас. Вы заинтересованы в ACCOUNT_SID и auth_token, чтобы вы могли получить эти конкретные значения из терминала следующим образом:

$ printenv | grep "ACCOUNT_SID\|AUTH_TOKEN" 

Затем проверьте с вашими коллегами, если вы используете одни и те же значения. Пожалуйста, дайте мне знать результат.

+1

Вы также можете остановить отладчик перед вызовом 'Twilio :: REST :: Client.new' и проверить значение account_sid и auth_token. –

+0

True @SteveWilhelm, это будет особенно полезно, если вы используете CONFIG ['account_sid'] вместо переменных окружения. –

Смежные вопросы