ruby-on-rails - 从 Hubot 向本地 Rails 应用程序发送 HTTP 请求时出现 EHOSTUNREACH 错误
问题描述
我正在开发一个 Slack 机器人(使用Hubot)以及一个 Rails 应用程序,它将接收来自它的 HTTP 请求并相应地处理它们。基本上,我想做的高级步骤是这样的:
- 一个松弛的用户向机器人发送一个触发词(假设触发器是“再见”)。
- Hubot 拿起触发器,然后向 Rails 应用程序发送请求。
- Rails 应用程序将 Slack 用户标记为不在办公室。
我似乎遇到了某种路由问题,因为EHOSTUNREACH
当我尝试在启动两个应用程序(rails s
Rails 和./bin/hubot --adapter slack
Hubot)的情况下执行此流程时出现错误。我猜 Hubot 根本无法访问 Rails 应用程序。我在这里错过了什么吗?我需要使用什么 URL 才能使这些应用程序相互发送请求?
我也试过换掉127.0.0.1:3000
with localhost:3000
,但结果保持不变。
哈博特代码
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'
当我向机器人发送触发词时记录结果
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")
确保您在开始时拥有协议。
推荐阅读
- c++ - 在 C++ 中初始化变量 r 值引用
- flutter - 单行文本和一行中的多个文本
- javascript - bootstrap 5 关闭模式与香草 javascript
- powershell - 使用 powershell 函数 Send-MailMessage 收到错误:找不到“PSCredential”的重载
- python - 如何在时间序列线图上绘制回归线
- algorithm - 导航矩阵的算法
- r - R中是否有显示建筑物的基本地图包?
- spring - 是否可以将 Spring 控制器请求参数绑定到具有多个构造函数的对象?
- python - 您如何配置您的 settings.py 文件以将文件上传到 Amazon S3 数据库而不是本地文件夹?
- php - 电子邮件未发送