您的位置:首页 > 其它

如何通过QQ机器人技术实现禅道bug的自动提交功能

2018-01-11 13:46 1116 查看

零、写在前头

最近部门老大提到可以使用qq机器人实现bug自动提交禅道,好奇心趋势于是自告奋勇进行了一系列探索。qq机器人当然有很多种,这里选择基于smartQQ协议的qqbot作为模拟客户端。qqbot是用python写的,目前社区比较活跃,如果想要实现一些简单的功能的话,推荐使用qqbot。不过最近由于支付宝扫码红包事件,腾讯封掉了一些smartQQ的关键字段,所以qqbot以及所有基于smartQQ的框架的能力变得更有限。

流程图



一、qqbot 介绍

Github地址:https://github.com/pandolia/qqbot

qqbot特点

基于smartQQ协议

目前各种qq机器人库中最活跃的库之一

丰富的可配置项

可自定义插件进行消息的接收和处理

功能丰富

安装和使用(具体可参考qqbot的github)

安装:pip install qqbot
启动:qqbot
启动后自动弹出二维码,可以扫码登录


二、qqbot的插件机制

qqbot 支持自定义插件,它的插件机制是实现这个项目所依赖的基础。通过可以插件获取qq消息的内容,即可进行下一步操作。

具体可参考以下

实现你自己的-qq-机器人

三、禅道API简介

禅道也是一个开源的项目管理/bug管理工具,现在很火,具体就不多说了。禅道开放了一系列的接口支持通过http请求进行api的调用。这里是禅道API机制介绍的官网连接:http://devel.cnezsoft.com/book/extension/api-intro-43.html

如何实现bug的提交

禅道在每次请求的时候需要在cookie中设置一个zentaosid的参数,而这个参数是登录的时候获取到的,所以现在流程就很清清楚了

调用登录接口获取zentaosid

调用提交bug接口(将zentaosid设置到cookie中)

四、qqbot插件的实现

qqbot插件是用python写的,而我擅长的却是JavaScript,所以想了一个办法,把调用禅道API那块的程序写成命令行程序,然后用python直接执行命令行即可。甚至是,把qqbot的插件完全写成转发的功能,一旦有可用的消息就交给node命令行来处理,插件只负责消息的接收、转发和推送。

这里有几个细节需要注意

python执行完命令行如何获取返回值?

使用
os.popen
这个函数

t_f = os.popen(cmd)
print t_f.read()


如何实现node命令行程序

我是借助了commander.js,当然如果不复杂的话也可以自己写。

本地命令行程序如何全局安装

在package.json所在目录下使用npm install . -g可先在本地安装当前命令行程序,可用于发布前的本地测试。

代码

这块的代码已经提交到github上了,这是地址 https://github.com/brahmachen/zentao

如果能对你起到帮助的话顺便点个star也是极好的。

这块node命令行使用superagent发起http请求,使用Promise以及async/await进行异步的处理,使用commander.js实现命令的解析和处理。

五、成果





六、有什么收获?

熟悉python基本语法

了解node命令行程序制作方法

了解了禅道的API机制

了解了图灵机器人申请和调用流程

Commander.js

Superagent.js

七、使用qqbot的优缺点

优点

qqbot的一系列丰富的功能,包括自动重启、自动发送二维码到邮箱等,保证了程序的稳定性和可靠性

缺点

每隔1~2天cookie过期,需要QQ号扫码登录,需要专人维护。同样由于smartQQ协议的特点,提交bug时不支持图片的处理。如果对图片有需求的话,建议使用基于PCQQ/AndroidQQ/TimQQ等高级协议的框架,如myPCQQ、酷Q和Amanda等
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
相关文章推荐