开发者学堂课程【阿里云 ChatOps 实战:Hubot 实战】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/536/detail/7281
Hubot 实战
内容介绍:
一、倍洽
二、HuBot
三、实战:如何配置机器人
四、引入流程
五、Hubot-Conversation
一、倍洽
倍洽是团队的一种沟通工具,提供了在线沟通方式且更加独立。
选择倍洽的关键原因在于倍洽是由国内服务商提供的。
可以根据实际需要选择版本。
倍洽提供了非常多的客户端,如 ios、Windows、linux、Android 等等都有相对于的客户端,即使没有客户端也可以直接使用网页版。
在集成方面,倍洽提供了非常多的工具,如新浪微博的监控、为知笔记的绑定、Mailgun 的邮箱等等,满足了绝大多数情况下的沟通需求。不管是公网的服务还是自建内网的服务,都是可以运行的。
想要更好地使用 ChatOps 一定要集成许多工具,这也是选择倍洽的原因之一,而选择倍洽而不是 Hubot 的原因是应该更加关注业务,如 GitHub、Coding 这样的业务如果能够直接对接,则节省了对接成本,能够专注于核心逻辑。
二、HuBot
官方主页为 hubot.github.com。
如果想要配置 HuBot,电脑中一定要有 npm 以及 hubot 的生成器,也就是要配置 node.js 的环境,如果没有则需要配置相应的环境,点击 node.js and npm 进入官方文档进行建立环境以及安装包管理器 npm。
script 部分是重要的,在这部分中主要介绍了如何使用 HuBot 接收消息并执行对应的响应。而 Hubot 支持coffee script 和 js script,一般情况下推荐 coffee script。
而主要使用的是 Hearing 和 responding,表示接收用户消息并返回用户消息,如在 Send&reply 中,使用robot.hear 去接收消息,接收消息后使用 Send 发送消息,就完成了与机器人的信息交互。
此外还会用到 HTTP 请求的,如建立一些后台后就可以使用 HTTP 请求去发送消息,对数据进行解码,从而在后台进行数据处理,展示在聊天窗口中。
三、实战:如何配置机器人
初始化机器人首先要做的是创建一个 acebot 目录,要注意在创建目录时不能使用 HuBot 目录,会导致模块之间的冲突。
如果没有安装 npm 和 Hubot 生成器,则可以复制 npm install -g yo generator-hubot,跟上《》 fetchMetadata:sill resolveWithNewModule ansi-regex@0.2.1 chec 两条命令进行安装。安装过后执行 yo Hubot 去生成新的Hubot,会提醒要进行初始化的命令等等。
首先是 Owner,Owner 可以直接进行回车,因为会直接读取 Git 和 npm 的一些设置,然后机器人的名称(Bot name)在这里可以设置为 acbot,机器人的名称设置与使用沟通的机器人名称要一致,同时 Description 要根据实际需要进行设置,而 adapter 填写时要注意填写的是 bearychat ,表示使用倍洽的适配器,则会自动安装一些依赖,可以直接运行。
由于适配器是 bearychat 直接提供的,所以可以直接登录平台去查看,首先在 GitHub 找到适配器,再找到bearychat,然后找到名字为 hubot-bearychat 的适配器,点击中文文档进行生成,这时 bearychat 可以直接运行,再进行删除修改进行进一步优化。首先进行编辑,因为是生成器生成的,所以里面有一些内容是不需要的,如 redis-brain、heruku-keepalive 等进行删除。
也可以将项目进行初始化,会自动忽略一些文件,这时可以直接启动 hubot,输入 bin/hubot。
四、引入流程
首先在 BearyChat 的后台点击机器人管理,就可以添加机器人,点击自定义进行添加 Hubot,可以进行设置名称,然后保存配置,此时会生成 Hubot Token。然后复制前面的内容进行粘贴,然后将 Token 也复制粘贴进行回车,输出模式。
然后再执行 bin/hubot -a bearychat 来启动机器人,这时 Hubot 机器人就会进行连接,这时开启对话 ace 会显示为在线模式,也可以将其取消掉变为离线,再将其变为在线,此时输入 help 则会有相应的反馈,输入 echo“123”,则会得到“123”,会打印相应的内容。
大部分的命令都是基于 scripts 的文件来执行反馈的,取消其中的一行注释再进行重启,复制文字,输入命令则会回应对应的内容,此时可以根据自己的实际需要去改成需要的样式。此时可以输入 send、reply、emote 命令再进行重启执行,则会显示三条相应内容,send 和 emote 在展示效果上是一致的,而 reply 则会引用所发送的消息。还可以请求聊天室的信息等。
在开发中,目前的模式还是存在一定问题的。问题是使用者必须发送特定的信息且必须私聊,然后选择或者新建一个讨论组为 acetest,会发现发送的内容是得不到回复的,此时在机器人中添加 chatbot,将机器人添加进来就可以进行使用,并且可以在特定的群组中工作,这次就可以实现私聊,完成后续工作内容。
五、Hubot-Conversation
目前的模式都是依赖于说明一条命令,机器人去执行一条命令。但在真实的场景下,可能会出现会与机器人沟通的情况,这时需要使用 Hubot-Conversation,则会实现与机器人沟通的效果。
首先进行安装 Hubot-Conversation,创建一个新的 js 文件,然后机器人会进行读取,直接复制使用的代码进行粘贴,再重新运行,则运行完成,此时回到机器人之中,就可以实现与机器人进行沟通。而代码中首先使用 respond 来接收消息,放入到内部处理中,则会创建一个 dialog,dialog 是基于 switchBoard 的新的交谈,在交谈中创建一组对话,然后就可以为 dialog 添加选项。
这时 @ace 输入 clean the house,则会进行选择 kitchen 或 bathroom,选择后会再次询问是否执行。除此之外还有许多插件。