运行 hubot 作为 Express 应用程序的一部分

Run hubot as a part of express app

我有一个非常标准的 express 应用程序,使用 express-generator 构建。现在,我想使用 hubot 使应用程序中的某些事情自动化,并且我已经成功地执行了测试,并且 运行 hubot 使用 slack 适配器。但是,我想让该机器人成为常规应用程序的一部分。

如何更改应用程序的结构(我有一个非常标准的 routes.js 导入,其中包含应用程序的所有路由)以允许两者一起 运行?

这是 运行ning 在 azure 作为 WebApp 并且我已经设置了与 GitHub 的持续集成,所以我几乎只是推送代码和它部署后,我不会 运行 在实际服务器上手动执行任何操作。如果它是常规 VPS,我将能够 运行 hubot 并将其服务器放在应用程序的不同子域或路径上,但由于 azure 正在处理在这些东西中,我需要 hubot 以某种方式在实际的 express 应用程序中烘焙。

据我所知,Hubot 有一个内置的 express web 框架,可以处理 HTTP 请求。所以理论上你可以通过路由器将 hubot 与你的 express webapp 集成,在 express 应用程序和 hubot 之间分配不同的 url。

作为参考,有一个实验包项目 hubot-express 表明 hubot 作为一个快速应用程序启动。可以尝试参考代码https://github.com/hubot-scripts/hubot-express/blob/master/src/hubot-express.coffee实现集成

The key code: robot.express = app = express();

文章 "Automation and Monitoring with Hubot" 显示了如何为 http 请求提供服务的代码,请移至 https://leanpub.com/automation-and-monitoring-with-hubot/read#leanpub-auto-serving-http-requests 查看它。

The key code: robot.router.post('/hubot/notify/:room', function(req, res) {...});

除此之外,最后我转向了 botkit 库,它提供了一种更简单、更集成的方式来同时拥有服务器和实际应用程序。