我正在使用 Ruby on Rails 创建一个 Webhook,以将 Dialogflow (api.ai) 和 Telegram 与我的应用程序连接。我还在 webhook 上使用 Ngrok。
每次我向 Telegram 机器人写入内容(在 Dialogflow fullfilment 中设置 token )时,文本都会发送到 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
如果需要更多代码,请询问。 谢谢建议。
最佳答案
首先,您可以运行rake paths
,以查看生成的路径是否具有实际的命名。
我建议在声明路径时在 routes.rb
中使用 :as
。 as
选项允许您覆盖实际生成路径的正常命名。
post "/#{Chamber.env.dialogflow.route}" => 'chatbot_users#webhook', :as => 'webhook'
关于ruby-on-rails - "Post 404 not found"与 Rails 和 Api.ai,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51615361/