Hubot 是一个极为出色的聊天机器人框架,在自己公司内部也是广泛应用的,但是它要对原生协议都需要进行一定的包装,对于开放式协议系统,只能使用 puppet 外挂,hubot 最常用的 puppet 是 irc,但是如果你的公司没有人用 irc 那么也只能自己造轮子了。
这里介绍一款 npm 包 Hubot-puppet-utils,它是 Hubot 的协议转化桥梁,通过它,使用者可以将自己的 Hubot 部署到使用不同协议的场景下,并且无需知晓原始协议的信息。
安装
使用 npm 包管理工具安装即可轻松部署:
npm install hubot-puppet-utils
使用方法
我们这里以微信协议为例,说明如何使用 Hubot-puppet-utils。
首先,我们需要先安装 Wechaty, 它是一个开放的聊天机器人框架,能够支持多个微信号的同时操作。
要将 Hubot 与 Wechaty 集成,需要先在项目中引入 Wechaty:
const { Wechaty } = require('wechaty');
引入 puppet 之后,如下所示即可完成协议的转化:
-- -------------------- ---- ------- ----- - ----- - - ---------------- ----- - ------------- - - ------------------------- ----- - --------------------- - - ------------------------------- ----- ----- - ------------ ----- ------ - --- -------------------- ----- ------- - --- ----------------------- ------ -- ----- ----- - --- --------------
当用户发送消息时,可以通过如下代码进行处理:
robot.router.post('/endpoint', (req, res) => { const message = req.body.message robot.adapter.receive(new TextMessage(user, message, 'id')) res.end('') })
当然,用户也可以使用闲聊的方式启用 Hubot,只需要执行:
$ HUBOT_ADAPTER=wechaty HUBOT_WECHATY_TOKEN=123:Yeaskjr2jjioicndnePnk youbot
例子
下面举一个具体的例子,演示如何使用 Hubot-puppet-utils。
准备工作
首先,我们需要上文中提到的 WechatyPuppet,它需要一个 token 作为身份验证,并且它支持多种协议,包括 wechat4u 和 padplus 等。
创建 WechatyPuppet 示例:
const { WechatyPuppet } = require('wechaty-puppet') const token = 'your_token' const puppet = new WechatyPuppet(token)
接着,我们还需要创建一个 Hubot 实例:
const { Hubot } = require('hubot') const adapter = new WechatyPuppet() const robot = new Hubot(adapter)
消息处理
为了方便起见,我们这里使用了 express 作为 web 应用框架。
在消息到达的时候,通过如下代码进行处理:
-- -------------------- ---- ------- ----- - ----------- - - ---------------- ----- ------- - ------------------ ----- ---------- - ---------------------- ----- --- - --------- ------------------------------- --------- ---- --- -------------------------- ----------------------------- ----- ---- -- - ----- ------- - ------------- ----- ---- - ------------------------------------ ------------------------- ----------------- -------- ------------- ------------ -- ---------------- ------------------ --------- -- ---- ------
这样用户便可以通过微信消息发送信息到我们的 API 系统中。
命令处理
在上述代码的基础之上,我们还可以为 Hubot 编写命令以处理用户的输入,如:
robot.respond(/hello/, (res) => { res.reply(`Hello, ${res.message.user.name}`) })
当用户发送消息 /hubot hello
时,系统将回复 Hello, xxx
。
总结
通过 Hubot-puppet-utils,我们可以将 Hubot 部署到不同的聊天机器人协议平台中,并且只需要通过配置来完成协议的转换。
如果您的公司已经在使用 Chatbot 或者是进行 Chatbot 相关的业务研究,那么使用 Hubot-puppet-utils 将会是极大地减少研发成本并且提高效率的选择。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/6005596181e8991b448d6d3b