从 Hubot 向本地 Rails 应用程序发送 HTTP 请求时出现 EHOSTUNREACH 错误

EHOSTUNREACH error while sending HTTP request from Hubot to Rails app locally

我正在开发一个 Slack 机器人(使用 Hubot)以及一个 Rails 应用程序,它将接收来自它的 HTTP 请求并相应地处理它们。基本上,我想做的事情的高级步骤是这样的:

  1. 一个 slack 用户向机器人发送了一个触发词(假设触发是 "bye")。
  2. Hubot 拾取触发器,然后向 Rails 应用程序发送请求。
  3. Rails 应用将 Slack 用户标记为外出。

我似乎遇到了某种路由问题,因为当我尝试在启动两个应用程序的情况下执行此流程时出现 EHOSTUNREACH 错误(rails s 对于 Rails 和 ./bin/hubot --adapter slack 用于 Hubot)。我猜 Hubot 根本无法访问 Rails 应用程序。 我在这里错过了什么吗?我需要使用什么 URL 才能让这些应用程序相互发送请求?

我也试过将 127.0.0.1:3000 换成 localhost:3000,但结果还是一样。

Hubot代码

module.exports = (robot) ->
  robot.respond /bye/i, (res) ->
    res.reply('Later alligator')
    robot.logger.info 'Will proceed to clock out user'

    data = JSON.stringify({
      slack_user_id: res.message.user.id
    })
    robot.http("127.0.0.1:3000/")
      .header('Content-Type', 'application/json')
      .post(data) (err, resp, body) ->
        if err
          robot.logger.info "Encountered an error: #{err}"
        else
          robot.logger.info 'Successfully sent HTTP request to Rails app'

当我向 bot 发送触发词时记录结果

INFO Will proceed to clock out user
INFO Encountered an error: Error: connect EHOSTUNREACH 0.0.11.184:80 - Local (192.168.91.168:60029)

Rails服务器日志(肯定是3000端口)

* Listening on tcp://localhost:3000

将请求更改为 robot.http("http://localhost:3000") 确保您在开头有协议。