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

Posted

技术标签:

【中文标题】Rails 和 Api.ai 的“找不到 404 帖子”【英文标题】:"Post 404 not found" with Rails and Api.ai 【发布时间】:2019-01-07 23:12:29 【问题描述】:

我正在使用 Ruby on Rails 制作一个 webhook,以将 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

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

【问题讨论】:

如果你运行rake routes,你会得到什么?,你在那个输出中看到/webhook吗?。 webhook POST /webhook(.:format) chatbot_users#webhook 【参考方案1】:

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

我建议在声明路径时在routes.rb 中使用:asas 选项允许您覆盖实际生成路径的正常命名。

post "/#Chamber.env.dialogflow.route" =&gt; 'chatbot_users#webhook', :as =&gt; 'webhook'

【讨论】:

以上是关于Rails 和 Api.ai 的“找不到 404 帖子”的主要内容,如果未能解决你的问题,请参考以下文章

Ruby Rails在HTTP GET请求中找不到404

将 Flask 和 Ngrok 用于 http://127.0.0.1:5000 时找不到 404

在 phpmyadmin 上找不到 404 - nginx docker

Laravel 未在 Ubuntu 中加载内页 - 找不到 404

使用 Laravel 路由时找不到 404 错误

Nestjs:无法输入,无法删除(找不到404)