Rails和Api.ai的“找不到404后”

时间:2018-07-31 14:08:15

标签: ruby-on-rails webhooks dialogflow ngrok

我正在与 Ruby on Rails 进行网络连接,以将 Dialogflow (api.ai)和 Telegram 与我的应用程序连接。我还在Webhook上使用 Ngrok

每次我写给Telegram机器人(在Dialogflow fullfilment中设置的令牌)时,文本都会发送到Dialogflow以使用所需参数创建JSON请求。工作正常。

当我想在我的应用程序上接收此JSON时,问题就开始了。我收到此错误: Ngrok configuration

这是我的 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

如果需要更多代码,只需询问。 感谢您的建议。

1 个答案:

答案 0 :(得分:2)

首先,您可以运行rake routes,以查看生成的路径是否具有该实际名称。

我建议在声明路径时在:as中使用routes.rb。使用as选项,您可以覆盖实际生成的路径的常规命名。

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