hubot+slack(hubot部分)

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,后面会用到,如下:
hubot+slack(hubot部分)_第1张图片

4.heroku卸载建议

虽然教程中的heroku的uninstall只是建议卸载,但是最好卸载了,不然后面可能会报错warning:Heroku alive exclusion 。而且记得在uninstall之后,要删除external-scripts.json文件中的hubot-heroku-keepalive。然后重新启动bin/hubot
hubot+slack(hubot部分)_第2张图片

5. 8080端口被占用的解决办法

8080端口被占用,不影响程序运行,如果还是不想看到,可以使用下面方法:

  1. ERROR Error: listen EADDRINUSE: address already in use 0.0.0.0:8080报错解决办法:①第一种方法:先查看8080端口的是被那个程序占用lsof -i tcp:8080![在这里插入图片描述](https://img-blog.csdnimg.cn/2019041600165261.png) 然后根据自己的PID执行kill -9 PIDkill -9 9471`。②第二种方法:改变EXPRESS_PORT or PORT环境变量,把8080改成其他端口即可。(其实不删除不影响程序运行,如果没有成功运行肯定是因为其他问题。)
  2. 在./bin/hubot前面加入PORT=?来修改端口号,如修改为8888:PORT=8888 ./bin/hubot

6. 让hubot保持在线

教程使用的方法是tmux,但是教程给的不清不楚,其实只要了解tmux的使用方法即可。
通常本地连接远程linux服务器以后我们需要服务器一直执行程序,即使我们本地电脑关机或者断开连接,此时我们需要用到开后台神器tmux。

  1. 安装tmux。
    使用yum安装:yum install tmux。yum安装有可能会出现问题。
    apt-get安装:直接使用sudo apt-get install tmux
  2. 运行tmux。新建一个后台运行程序,命名为hubot:tmux new -s hubot
  3. 保持后台:在tmux中执行env HUBOT_SLACK_TOKEN=xoxb-你的token ./bin/hubot --adapter slack
  4. 退出tmux:ctrl+b然后再按d可以退出tmux。
  5. 关闭会话(想要关闭tmux后台工作时):tmux kill-session -t demo #关闭demo会话
    这时候可以关闭终端,在slack和hubot对话,hubot依旧在运行:
    hubot+slack(hubot部分)_第3张图片

教程三出现的问题及解决办法

  1. greet.coffee文件的正确内容如下,教程三中没有换行,容易造成误会。
module.exports = (robot) ->
	robot.hear /greet/i, (res) ->
		res.send "Hello,My Master"
  1. weather.coffee文件的正确内容如下,同上。
# Description:
# Tells the weather
#
# Configuration:
# HUBOT_WEATHER_API_URL - Optional openweathermap.org API endpoint to use
#
# Commands:
# weather in  - 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 搭建你自己的运维机器人

你可能感兴趣的:(运维机器人项目)