python+flask监控钉钉通讯录变更+webhook告警

Python工具开源专栏

Py0005 python+flask监控钉钉通讯录变更+webhook告警

前言

python+flask监听钉钉通讯录的变更,通过Webhook发送给钉钉群聊告警,以前端网站展示变更的详细数据。功能大致如下几点。(文末有github链接)

  1. 钉钉开放后台微应用配置事件订阅,通过公网调用本地网站的api。
  2. 通讯录的变更数据支持导出到Excel文档。
  3. 监听钉钉的通讯录事件,将事件内容写入MySQL,使用webhook发送告警到钉钉群聊。

版本迭代至V1.0

网站技术要点:面向对象、网络请求、轻量级Web应用框架flask、RESTful API、Webhook ,使用了py库requestsDingtalkChatbotFlaskPyMySQL

目录结构

源代码目录结构:

复制代码
Dingtalk-MonitorBook
 |--------- assets	# 存放资源文件
 |--------- logs	# 存放日志文件
 |--------- public	# 存放前端站点的资源文件
	  |--------- components			# php组件包
	  |--------- css					# css资源文件
	  |--------- js					# js资源文件
	  |--------- layui				# layui js框架资源文件
	  |--------- template				# php模板文件
	  |--------- 404.html
	  |--------- 500.html
	  |--------- index.php			# php站点访问入口
 |--------- src	# 存放后端站点的资源文件
	  |--------- api
	  	  |--------- callback_0001.py
	  	  |--------- getData.py
	  |--------- components
	  	  |--------- __init__.py			# 初始化模块包文件
  	  	  |--------- DingCallbackCrypto3.py		# 处理钉钉回调数据的加解密
	  	  |--------- DingtalkOpenAPI.py	# 调用钉钉通讯录的网络请求工具类
	  	  |--------- LocalOpenAPI.py		# 调用本地存储钉钉通讯录数据的工具类
	  	  |--------- MySQLHandle.py		# 处理MySQL数据库的工具类
	  |--------- cron
  	  	  |--------- cron_action_webhook.py		# 定时执行数据库记录和钉钉群聊通讯录变更告警推送
  	  	  |--------- cron_clear_tempfile.py		# 定时清除早于当前时间的temp缓存文件
	  |--------- utils
	  	  |--------- __init__.py			# 初始化模块包文件
  	  	  |--------- utils_config.py		# 参数配置表
  	  	  |--------- utils_const.py		# 常量表
  	  	  |--------- utils_func.py		# 常用函数工具类
  	  	  |--------- utils_logging.py		# log日志工具类
  	  	  |--------- utils_mysqli.py		# 操作mysql的函数工具类
 	  |--------- dingtalk_monitorbook_service.py	# py主程序源文件,启动flask Web框架
 	  |--------- getCallBack.py			# 处理钉钉事件订阅的回调数据
 |--------- readme.md
 |--------- LICENSE
 |--------- requirements.txt	# py项目的依赖项

执行文件的目录结构:

复制代码
 |--------- dingtalk_monitorbook_service.py	# py主程序源文件,启动flask Web框架

配置钉钉后台微应用的事件订阅


配置钉钉群聊机器人的Webhook

部分演示

前端的页面展示

webhook推送告警到钉钉群聊

完整代码已在GitHub上开源

源码已在GitHub上开源:Dingtalk-MonitorBook

参考来源:钉钉文档-事件订阅总览

相关推荐
七夜zippoe20 分钟前
Dask:超越内存限制的并行计算——从任务图到分布式调度的实战指南
python·集群·task·array·dataframe·dask
serve the people22 分钟前
python环境搭建 (五) Dockerfile 和 docker-compose.yml 核心作用
java·python·docker
维构lbs智能定位1 小时前
工厂人员定位(一)融合定位技术如何重构安全生产与效率管理?(含系统架构、技术选型对比、实际应用)
python·物联网·智慧工厂·厂区人员定位系统·工厂人员定位·工厂定位系统
yufuu981 小时前
进阶技巧与底层原理
jvm·数据库·python
2301_817497331 小时前
使用Flask快速搭建轻量级Web应用
jvm·数据库·python
Warren981 小时前
Allure 常用装饰器:实战用法 + 最佳实践(接口自动化)
运维·服务器·git·python·单元测试·自动化·pytest
2401_841495641 小时前
【LeetCode刷题】翻转二叉树
python·算法·leetcode··递归·节点·翻转二叉树
森爱。1 小时前
web开发全家桶(django+前端+数据库)
前端·python·django
七夜zippoe1 小时前
数据可视化高级技巧:Matplotlib + Seaborn实战大全
python·信息可视化·matplotlib·数据可视化·seaborn·gridspec
郝学胜-神的一滴1 小时前
线性判别分析(LDA)原理详解与实战应用
人工智能·python·程序人生·算法·机器学习·数据挖掘·sklearn