hubot+slack安装及配置
slack安装配置见hubot+slack(slack部分)
hubot安装配置见本博客
hubot安装及配置
一二个教程可用于hubot和slack的关联和搭建上,第一二个教程最好放在一起看,某一个的命令没有效果可以看看另外一边是怎么操作的,如果不行看看是不是我踩的坑,应该就能解决问题。
第三个教程全是在讲slack的,在看完第一二个之后可以看第三个,重点在于如何编写脚本
教程一:用 slack 和 hubot 搭建运维机器人【ubuntu】
教程二: Hubot + Slack 入门
教程三:打造自己的聊天机器人Hubot
最后在放一个 hubot官方文档 网址
hubot教程一、二中遇到的问题及解决办法
教程很不错,需要说的几点(踩的坑):
1. hubot目录问题
第一个教程把hubot放在了root目录,没有这个必要,随便新建个文件夹就行。
2. 让npm下载看得到进度
有些npm下载速度会很慢,以至于以为没有在下载,可以使用npm config set loglevel=http命令显示npm的下载进度。
3.hubot和slack的关联–互相关联,token的使用
hubot和slack的互相关联:既需要hubot下载slack的load adapter:sudo npm install -g hubot-slack --save,也需要在启动hubot客户端的时候在下面的“APPs”里面下载hubot(注意:这是需要记住这个API TOKEN,后面会用到,如下:
4.heroku卸载建议
虽然教程中的heroku的uninstall只是建议卸载,但是最好卸载了,不然后面可能会报错warning:Heroku alive exclusion 。而且记得在uninstall之后,要删除external-scripts.json文件中的hubot-heroku-keepalive。然后重新启动bin/hubot
5. 8080端口被占用的解决办法
8080端口被占用,不影响程序运行,如果还是不想看到,可以使用下面方法:
- ERROR Error: listen EADDRINUSE: address already in use 0.0.0.0:8080
报错解决办法:①第一种方法:先查看8080端口的是被那个程序占用lsof -i tcp:8080 然后根据自己的PID执行kill -9 PID如kill -9 9471`。②第二种方法:改变EXPRESS_PORT or PORT环境变量,把8080改成其他端口即可。(其实不删除不影响程序运行,如果没有成功运行肯定是因为其他问题。) - 在./bin/hubot前面加入PORT=?来修改端口号,如修改为8888:
PORT=8888 ./bin/hubot
6. 让hubot保持在线
教程使用的方法是tmux,但是教程给的不清不楚,其实只要了解tmux的使用方法即可。
通常本地连接远程linux服务器以后我们需要服务器一直执行程序,即使我们本地电脑关机或者断开连接,此时我们需要用到开后台神器tmux。
- 安装tmux。
使用yum安装:yum install tmux。yum安装有可能会出现问题。
apt-get安装:直接使用sudo apt-get install tmux - 运行tmux。新建一个后台运行程序,命名为hubot:
tmux new -s hubot - 保持后台:在tmux中执行
env HUBOT_SLACK_TOKEN=xoxb-你的token ./bin/hubot --adapter slack - 退出tmux:ctrl+b然后再按d可以退出tmux。
- 关闭会话(想要关闭tmux后台工作时):tmux kill-session -t demo #关闭demo会话
这时候可以关闭终端,在slack和hubot对话,hubot依旧在运行:
教程三出现的问题及解决办法
- greet.coffee文件的正确内容如下,教程三中没有换行,容易造成误会。
module.exports = (robot) ->
robot.hear /greet/i, (res) ->
res.send "Hello,My Master"
- weather.coffee文件的正确内容如下,同上。
# Description:
# Tells the weather
#
# Configuration:
# HUBOT_WEATHER_API_URL - Optional openweathermap.org API endpoint to use
#
# Commands:
# weather in <location> - Tells about the weather in given location
#
# Author:
# Corner
process.env.HUBOT_WEATHER_API_URL ||= 'https://openweathermap.org/data/2.5/weather?units=imperial&appid=[your appid]&q='
module.exports = (robot) ->
robot.hear /weather in (\w+)/i, (msg) ->
city = msg.match[1]
url = process.env.HUBOT_WEATHER_API_URL + city
msg.robot.http(url).get() (err, res, body) ->
data = JSON.parse(body)
weather = [ "#{Math.round(data.main.temp)} degrees" ]
for w in data.weather
weather.push w.description
msg.send "It's #{weather.join(', ')} in #{data.name}, #{data.sys.country}"
参考链接
Linux服务器后台继续执行程序tmux方法
打造自己的聊天机器人Hubot
用 slack 和 hubot 搭建你自己的运维机器人