У меня есть платная учетная запись с Twilio. В моем приложении rails у меня очень простая настройка для ответа на входящий телефонный звонок в рельсах с twilio. В routes.rb
, у меня естьРельсы не маршрутизируются на мое действие контроллера Twilio
post 'communications/answer_phone' => 'communications#answer_phone'
В communications_controller.rb
, у меня есть
class CommunicationsController < ApplicationController
skip_before_action :verify_authenticity_token
def answer_phone
logger.debug '******** answered'
response = Twilio::TwiML::Response.new do |r|
r.Say "Yay! You’re on Rails!", voice: "alice"
end
render :xml => response.to_xml
end
end
Если я пытаюсь вызвать мой номер Twilio, ngrok говорит 500 Internal Server Error
, так что я знаю, что запрос на получение ngrok. Если я посмотрю на файл журнала рельсов, я вижу
Started POST "/communications/answer_phone" for xxx.xxx.xxx.xxx at 2017-02-02 21:47:06 +1100
поэтому запрос обращается к моей заявке. Я не получаю ******** answered
в своем файле журнала от logger.debug
. Запрос никогда не доходит до моего действия answer_phone
. Любые идеи, что может быть неправильным?
UPDATE
Я сделал rake routes
, и это дает мне
communications_receive_sms POST /communications/answer_phone(.:format) communications#answer_phone
Это выглядит правильно. Если я сознательно пишется маршрут неправильно в routes.rb
, я получаю эту ошибку
ActionController::RoutingError (No route matches [POST] "/communications/answer_phone"):
Так что я знаю, что запрос получает в моем приложении рельсы, и я знаю, что это найти маршрут. Что может привести к тому, что рельсы найдут подходящий маршрут, но не вызовет связанное действие.