前言
随着业务规模不断扩大,人们对于自动化运维的需求越来越高。而ChatOps,即Chat(聊天)+Ops(运维),则是一种以聊天工具为基础,将操作自动化的方式统称为ChatOps,其基础设施包括机器人、Webhook、聊天室和命令和事件处理器。
hubot-chatops-rpc是一个基于Hubot、Slack和RPC的机器人框架,可以帮助开发者快速实现聊天机器人的功能。
安装
在使用hubot-chatops-rpc之前,需要先在本地安装node.js和hubot。然后,使用npm安装hubot-chatops-rpc:
npm install hubot-chatops-rpc --save
配置
在安装完hubot-chatops-rpc后,需要对机器人进行相关配置。hubot-chatops-rpc的配置文件位于hubot的项目根目录下的.env文件中,可以根据需要设置以下属性:
- HUBOT_RPC_PORT - RPC服务器监听的端口
- HUBOT_CHATOPS_PORT - ChatOps服务器监听的端口
- HUBOT_CHATOPS_RPC_ACTION_TIMEOUT - RPC服务器响应超时时间(单位:毫秒)
- HUBOT_CHATOPS_RPC_ACTION_CACHE_SIZE - RPC服务器缓存的响应结果的数量
- HUBOT_CHATOPS_BOT_USERNAME - 机器人在Slack上的用户名
- HUBOT_CHATOPS_SLACK_TOKEN - 机器人在Slack上的Token
- HUBOT_CHATOPS_SLACK_CHANNELS - 机器人监听的Slack频道
用法
hubot-chatops-rpc的用法可以分为两个部分,即RPC服务器和ChatOps服务器的配置。下面对这两个部分进行详细说明。
RPC服务器
在使用hubot-chatops-rpc之前,需要先在hubot的脚本文件中添加以下代码:
var RPC = require('hubot-chatops-rpc'); var rpc = new RPC(robot, '/rpc');
这段代码创建了一个RPC服务器,该服务器监听端口为8022,并且支持以下命令:
-- -------------------- ---- ------- -------------------------- ----------- -- - ------ - - -- --- ------------------------------- ----------- -- - ------ - - -- --- ------------------------------- ----------- -- - ------ - - -- --- ----------------------------- ----------- -- - -- -- --- -- - ----- --- ------------- ------ -- ------- - ------ - - -- ---
其中,registerCommand()方法用来注册命令,第一个参数表示命令名称,第二个参数表示命令执行的函数。当Slack用户调用这些命令时,它们将会被自动转发给RPC服务器,服务器会执行对应的函数,并将结果返回给Slack用户。
RPC服务器还支持以下命令:
rpc.registerFunction('upper_case', function(str) { return str.toUpperCase(); }); rpc.registerFunction('lower_case', function(str) { return str.toLowerCase(); });
这些命令将在执行之前将输入参数转换为大写或小写。
ChatOps服务器
在RPC服务器配置好后,可以通过以下代码创建一个ChatOps服务器:
var ChatOps = require('hubot-chatops-rpc'); var chatops = new ChatOps(robot, '/chatops', rpc);
chatops使用rpc服务器作为输入参数,因此,当Slack用户调用命令时,chatops将会将请求转发给rpc服务器,并将结果返回给Slack用户。
在ChatOps服务器上,使用registerCommand()方法注册命令。例如,以下代码注册了一个“echo”命令,该命令将输入的字符串原样返回给调用者:
chatops.registerCommand('echo', function(input) { return input; });
ChatOps服务器还支持缓存响应,可以通过registerCommand()方法的第二个参数,传递一个cache对象,使服务器缓存响应。例如,以下代码将缓存“sum”命令的前10个响应:
chatops.registerCommand('sum', function(a, b) { return a + b; }, { cacheSize: 10 });
示例
以下代码展示了如何使用hubot-chatops-rpc来实现一个简单的计算器。
-- -------------------- ---- ------- -------------- - --------------- - --- --- - ----------------------------- --- ------- - ----------------------------- --- --- - --- ---------- -------- --- ------- - --- -------------- ----------- ----- -------------------------- ----------- -- - ------ - - -- --- ------------------------------- ----------- -- - ------ - - -- --- ------------------------------- ----------- -- - ------ - - -- --- ----------------------------- ----------- -- - -- -- --- -- - ----- --- ------------- ------ -- ------- - ------ - - -- --- ------------------------------ ----------- -- - ------ ------------------ --- ---- --- ----------------------------------- ----------- -- - ------ ----------------------- --- ---- --- ----------------------------------- ----------- -- - ------ ----------------------- --- ---- --- --------------------------------- ----------- -- - ------ --------------------- --- ---- --- --
结论
通过本文的介绍和示例,我们了解了如何使用hubot-chatops-rpc来实现一个简单的ChatOps服务器。使用hubot-chatops-rpc,可以大大简化ChatOps服务器的开发过程,希望可以对广大前端工程师有所帮助。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/60055b8681e8991b448d9211