2015-02-04 33 views
3

我的團隊和我正在使用twilio發送短信。似乎一切工作都很好在其他人的本地機器(具有相同的確切代碼)除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)

返回身份驗證錯誤。它適用於除我的其他本地機器。所有的代碼都完全一樣,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']而不是環境變量,那將會特別有用。 –