当前位置:网站首页 > 技术博客 > 正文

企业微信监控系统



这是「进击的Coder」的第 440 篇技术分享

作者:小富

来源:程序员内点事

最近接个任务,用做了个代码提交监听功能,就是有人向远程仓库提交代码后,会在企业微信群内发送一条消息,类似 这样的文案。

至于为啥要做这么个工具,没办法官大一级压死人,其实我内心是拒绝的,总像是被监视一样感觉怪怪的。难不成是发现了我平时偷偷提代码,悄无声息的修 Bug?

webhook

也就是我们经常说的,如果对钩子不熟悉,没关系那我们换一个概念,回调应该听说过吧,例如:微信支付这类的三方平台都支持配置回调URL,通知支付状态。

当一些事件触发,例如:"代码到远程仓库",或者"提一个"等,源网站可以发起一个请求到配置的URL。

下图是这个工具的工作流程,开发者向项目提交代码,会触发GitHub的,紧接着向GitHub webhook中配置的三方URL发送一个请求,这个三方平台可以是钉钉、飞书、企业微信这类平台。

下面我们以 + 企业微信 来实现代码提交监听,自动向企业微信群组推送消息。

配置GitHub webhook

首先进入GitHub对应项目的 ,做的基础配置。

主要配置四部分:

回调服务的地址;

回调请求头,建议格式;

为了做安全校验,设置后会在请求 中增加如下两个属性,用来区分请求的来源,避免暴露的请求被恶意访问;

最后我们选择由哪些事件来触发回调,(代码推送事件)、(所有事件)、某些特定事件三种。

我们可以在 查看回调记录,以及完整的请求和参数数据,还可以模拟发送请求。

配置企业微信

企业微信的配置其实更简单,我们先创建一个群组,在群组右键有个选项,添加成功后会生成地址。我们只要向这个地址发送请求,群组内就会收到推送消息。

消息内容支持文本(text)、markdown(markdown)、图片(image)、图文(news)四种消息类型,而且还支持在群内 @ 群成员,下边以文本格式做示范。

直接请求 url 发现消息推送成功,说明配置的没问题。

但是到这大家发现一个问题没,和一个只管往出发请求,一个只管接受固定数据格式的请求,两个接口的数据根本无法兼容啊?

请求转发

既然他们之间不兼容,没办法,那就只能我们自己在中间做一层适配,谁让两边都惹不起呢!

转发的逻辑也比较简单,只需接受回调过来的请求数据,稍加修改组装成企业微信要求的数据格式,直接发送就可以了。

推送过来的数据包括,仓库、作者、提交者、提交内容等信息,基本上够用。

代码实现比较粗糙,将就看下吧

这里要提醒一下,GitHub webhook 回调过来的数据有些并不能直接拿来用,某些场景还是要调用来换取一些数据的。

文档地址:

上边的配置工作完成,再将转发的代码部署到服务器,测试下整个链路看看效果,故意修改文件提交,发现提交代码后成功向企业微信发送了消息,和我们预期的效果一致。

源码地址:

这个工程包含我过往文章里所有的案例,比如:、、以及、、等中间件的各种问题解决案例,感兴趣的同学可以个,实际开发一定会用得到。

End

「进击的Coder」专属学习群已正式成立,搜索「CQCcqc4」添加崔庆才的个人微信或者扫描下方二维码拉您入群交流学习。

看完记得关注@进击的Coder

及时收看更多好文

↓↓↓

你的每个赞和在看,我都喜欢!

  • 上一篇: http代理 dns
  • 下一篇: dbn-bp
  • 版权声明


    相关文章:

  • http代理 dns2025-05-31 17:01:04
  • 构造器和方法2025-05-31 17:01:04
  • ip工具是什么意思2025-05-31 17:01:04
  • json.cpp2025-05-31 17:01:04
  • rbf 神经网络2025-05-31 17:01:04
  • dbn-bp2025-05-31 17:01:04
  • leveldb lrucache2025-05-31 17:01:04
  • 常见的模型评估指标有哪些2025-05-31 17:01:04
  • 特征提取常用方法2025-05-31 17:01:04
  • java哈希码值2025-05-31 17:01:04