Сообщение 404 не найдено с помощью Rails и Api.ai

Я делаю веб-перехватчик с помощью Ruby on Rails для подключения Dialogflow (api.ai) и Telegram к моему приложению. Я также использую Ngrok для веб-перехватчика.

Каждый раз, когда я пишу боту Telegram (токен установлен в полном заполнении Dialogflow), текст отправляется в Dialogflow для создания запроса JSON с параметрами, которые я хочу. Это работает.

Проблема начинается, когда я хочу получить этот JSON в своем приложении. Я получаю сообщение об ошибке: Конфигурация Ngrok

Вот мой routes.rb:

   # Telegram
   post "/#{Chamber.env.dialogflow.route}" => 'chatbot_users#webhook'

Вот мой dialogflow.yml:

  dialogflow:
    url: 'https://XXXXXac.ngrok.io'
    route: 'webhook'

Вот мой chatbot_users_controller

class ChatbotUsersController < ApplicationController
  skip_before_filter :verify_authenticity_token

  def webhook
    p "-----------------------NOT REACHING THIS POINT--------------------"
    if request.headers['Content-Type'] == 'application/json'
      data = JSON.parse(request.body)
    else
      data = params.as_json
    end  
  end
end

Если требуется больше кода, просто спросите. Спасибо в совете.


person Fran Blázquez Matías    schedule 31.07.2018    source источник
comment
если вы запустите rake routes, что вы получите? Вы видите /webhook в этом выводе?.   -  person fanta    schedule 31.07.2018


Ответы (1)


Во-первых, вы можете запустить rake routes, чтобы увидеть, имеет ли сгенерированный путь это реальное имя.

Я бы предложил использовать :as в routes.rb при объявлении пути. Параметр as позволяет переопределить обычное имя для фактически сгенерированных путей.

post "/#{Chamber.env.dialogflow.route}" => 'chatbot_users#webhook', :as => 'webhook'

person John Baker    schedule 31.07.2018