使用Slack和Hubot搭建自己的机器人
五一假期在微博上看到「湾区日报」用户发的「湾区日报是如何运作的?」,里面提到了他是如何使用Slack进行自动化的工作。
于是想着自己也搞一个自动化的机器人,本来想着使用微信公众号进行开发,但是苦于没有认证无法使用高级接口,遂作罢。
1. 在Slack上创建一个Bot帐号
进入Slack官网创建App页面。
机器人只给我们自己使用,点击右侧"Make a Custom Integration"链接创建。
点击Bots链接。
给机器人起个名字,点击Add按钮创建。
创建完成后,页面上会显示API Token,形如xoxb-xxxx-xxxx-xxx这样,记录下来,后面会用到。
至此,Slack上的机器人帐号创建完毕。
2. 安装Hubot
npm install -g hubot coffee-script yo generator-hubot
mkdir -p /path/to/hubot # 指定hubot文件目录
cd /path/to/hubot
yo hubot # 安装hubot,执行后需要输入一些配置信息
npm install hubot-slack --save # 安装hubot-slack适配器
启动我们的Hubot。
HUBOT_SLACK_TOKEN=第一步里的API Token ./bin/hubot --adapter slack
启动完成后,你在Slack的页面上可以看到这个机器人上线了。
3. 自定义开发
这里我将Hubot接受到的Slack消息,直接转发到了我的cgi上。
在cgi上根据不同的消息做不同的处理,返回不同的数据。
在script目录下新建一个文件,后缀名为.coffee,代码如下。
module.exports = (robot) ->
robot.listen(
(message) ->
message.user.name is "你的Slack用户名" #这里限制只对我的回复做响应
robot.brain.set 'message', message.rawText
(response) ->
req = "data=" + JSON.stringify({
message: robot.brain.get('message'),
})
robot.http("http://test.com/api") # 改为你自己的接口地址
.header('Content-Type: application/x-www-form-urlencoded;charset=utf-8')
.post(req) (err, res, body) ->
if err
response.reply "请求接口失败"
robot.emit 'error', err, res
return
if res.statusCode isnt 200
response.reply "接口返回非200"
return
response.send body
)
参考资料
HUBOT DOCUMENTATION
hubot docs
hubot-scripting
Slack! Hubot! Github!
感谢分享。
搭建过程不是很难,不熟练的情况下走了弯路,不知道是不是可以直接放到服务器上呢? 是不是可以同时搭建两个?是不是可以放到服务器上呢?
我已经放到服务器上跑了~ :)
多个应该也是可以的。
想接入微信的话 有hubot-weixin/WeChat 脚本