我建了一個twilio-powered rails app是具有發送帶有參數的SMS(於從,體)的方法。該應用程序在本地使用ngrok在開發和生產模式下工作正常。Rails的Twilio應用程序發送在運行的Heroku文本時掛起,但(在所有環境和當地)在Heroku在軌控制檯進行
Heroku是一個不同的故事。一旦到達構建文本消息的部分,它就不會越過它,並且日誌不會顯示任何問題。這就像它停滯不前,twilio放棄等待15秒後的迴應。這裏是正在發送具有SMS類:
需要「twilio-紅寶石」
class SmsActions
def self.compose_message(to, from, body)
account_sid = Rails.application.secrets.twilio_account_sid
auth_token = Rails.application.secrets.twilio_auth_token
@client = Twilio::REST::Client.new(account_sid, auth_token)
message = @client.account.messages.create({
from: from,
to: to,
body: body,
statusCallback: "http://fptracker.herokuapp.com/twilio/callback"
})
end
我曾用「放」語句來登錄並確認它看到account_sid和AUTH_TOKEN。同樣的事情發現,它不會在消息塊下面運行任何東西。
奇怪的是,我可以運行hoerku運行軌道,輸入發送文本(硬編碼account_sid和令牌)和它的工作原理完全相同的代碼。
所以我不認爲它缺少憑據,我不認爲這是中間件(因爲它的工作原理手動Heroku的),它不是生產包膜,因爲它在生產本地工作。我一直在爲此工作30多個小時,而且完全陷入了困境。
--edit 我發現我沒有所需的代碼在我的通知控制器的頂部,這是在本教程中,如:
require 'twilio-ruby'
class NotificationsController < ApplicationController
include Webhookable
after_filter :set_header
skip_before_action :verify_authenticity_token
但添加後,它仍然無法正常工作。
我注意到的第二件事是,當我把代碼直接在控制器創建SMS,它工作在Heroku。我把這個方法放在同一個notifications_controller文件的不同類中,然後調用它。
但是,當它被調用的預期方式的路徑是這樣的:
- 路線命中通知#解析
- 解析正則表達式的消息開始「測試」
- 解析方法,然後調用模型方法留言.auto_reply
- Message.auto_reply從祕密中獲取我的twilio號碼並有幾個puts語句,然後調用SmsActions.compose_message
- 撰寫郵件是列出的類bove並創建短信。
所以compose_message是在本地環境中工作但不在heroku上的類。它確實受到了打擊,因爲日誌顯示了我放在那裏的put語句,但它凍結/停止了在heroku中創建的Twilio消息。控制器和該方法之間發生了某些事情。
這很奇怪,你是否在[Twilio日誌](https://www.twilio.com/console/sms/logs)中看到任何東西? – philnash
好的,所以我注意到的一件事是我沒有在這個控制器的頂部調用這個所需的twilio代碼。 –
哪些需要Twilio代碼?這是否有所作爲? – philnash