5.7 KiB
5.7 KiB
广西政府采购网公告监控系统 - 企业微信集成
概述
本系统已集成企业微信功能,支持:
- 企业微信应用消息推送
- 回调服务器处理用户交互
- 应用菜单管理
- 实时爬取和自定义搜索
配置要求
1. 企业微信应用配置
在 config/config.yaml 中配置企业微信信息:
# 企业微信应用配置
wechat_app:
enabled: true # 是否启用企业微信通知
corp_id: "ww69e8e44636f47780" # 企业ID
agent_id: "1000007" # 应用ID
secret: "SmelCwKFoL0E9ATWFzr-w7gsfXBTN72lT1UqnNd0HpI" # 应用Secret
token: "DmvL98cAF6x9CFtQZwqD2emGL8S7HxA" # Token
encoding_aes_key: "yAc4OoSCP92YTefHXYfw27WeG9oF11W9d6nw6QYlU3D" # 消息加密Key
port: 18001 # 服务端口
2. 企业微信管理后台设置
-
设置回调URL
- 在企业微信管理后台的应用设置中
- 设置回调URL为:
http://your-server-ip:18001/api/v1/wechat/callback - Token和EncodingAESKey需要与配置文件一致
-
设置应用可见范围
- 配置应用对哪些部门或成员可见
- 确保有基础接口权限
功能说明
1. 消息推送
系统会在以下情况下自动推送消息到企业微信:
- 爬取完成通知:每次执行爬取后,推送筛选结果
- 关键词匹配通知:发现匹配关键词的公告时推送
- 系统状态通知:系统启动、错误等重要事件
消息格式参考 企业微信消息示例.md
2. 应用菜单
系统提供以下菜单功能:
操作菜单
- 立即爬取:执行一次完整的公告爬取
- 今日总结:查看今日公告统计(开发中)
- 自定义爬取:输入关键词进行搜索
帮助菜单
- 使用说明:显示详细使用指南
- 联系我们:联系信息
3. 文本交互
支持以下文本命令:
# 关键词搜索
直接发送关键词,如:大化、信息化
# 手动爬取
爬取 [关键词] # 如:爬取 大化
# 获取帮助
帮助 # 显示使用说明
help
# 查看总结
总结 # 查看今日统计
部署和运行
1. 安装依赖
pip install -r gx_gp_monitor/requirements.txt
2. 测试功能
# 测试企业微信模块
python test_wechat_server.py
3. 启动回调服务器
方法1:使用 uWSGI(推荐生产环境)
# 使用启动脚本
./start_uwsgi_server.sh
# 或直接启动
uwsgi --ini uwsgi_wechat.ini
方法2:使用 Gunicorn
# 使用启动脚本
./start_wechat_server.sh
# 或直接启动
gunicorn --bind 0.0.0.0:18001 app:app
方法3:开发环境启动
# 使用专用启动脚本
python wechat_server.py
# 或使用主程序
python gx_gp_monitor/main.py wechat-server
4. 管理菜单
# 创建菜单
python gx_gp_monitor/main.py wechat-menu --action create
# 删除菜单
python gx_gp_monitor/main.py wechat-menu --action delete
# 获取菜单信息
python gx_gp_monitor/main.py wechat-menu --action get
# 测试菜单操作
python gx_gp_monitor/main.py wechat-menu --action test
5. 正常爬取
# 执行爬取(会自动推送消息)
python gx_gp_monitor/main.py crawl
技术实现
1. 回调服务器
- 框架:Flask
- 端口:18001
- 路径:
/api/v1/wechat/callback - 功能:处理企业微信的回调消息和URL验证
2. 消息加解密
- 库来源:企业微信官方Python示例
- 位置:
gx_gp_monitor/wechat/WXBizMsgCrypt.py - 功能:实现消息加密、解密和签名验证
3. 消息处理
- 事件处理:关注、取消关注、菜单点击
- 文本处理:关键词搜索、手动命令
- 响应格式:XML格式的企业微信消息
4. 菜单管理
- 创建菜单:自动创建预定义菜单
- 删除菜单:清理现有菜单
- 获取菜单:查看当前菜单配置
故障排除
1. 回调URL验证失败
- 检查Token和EncodingAESKey是否正确配置
- 确保服务器可从公网访问
- 检查端口18001是否开放
2. 消息推送失败
- 检查企业微信应用配置(corp_id, agent_id, secret)
- 确认应用有消息发送权限
- 查看应用可见范围设置
3. 菜单创建失败
- 检查应用是否有菜单管理权限
- 确认Token有效且有管理员权限
4. 导入错误
# 确保依赖已安装
pip install flask pycryptodome
# 测试导入
python -c "from gx_gp_monitor.wechat.callback_server import WeChatCallbackServer; print('OK')"
日志查看
系统会记录详细的企业微信操作日志:
# 查看日志
tail -f logs/gx_gp_monitor.log | grep wechat
安全注意事项
- 保护配置文件:不要将包含密钥的配置文件提交到版本控制
- 网络安全:确保回调服务器只接受来自企业微信的请求
- 权限控制:合理设置应用可见范围和权限
- 定期更新:定期更新企业微信应用Secret
开发说明
项目结构
gx_gp_monitor/wechat/
├── __init__.py # 模块初始化
├── callback_server.py # Flask回调服务器
├── message_handler.py # 消息处理逻辑
├── menu_manager.py # 菜单管理
├── WXBizMsgCrypt.py # 企业微信加密库
└── ierror.py # 错误码定义
扩展功能
如需添加新功能,可以:
- 在
message_handler.py中添加新的消息处理逻辑 - 在
menu_manager.py中修改菜单配置 - 在
callback_server.py中添加新的路由
联系支持
如有问题,请检查:
- 系统日志
- 企业微信管理后台错误信息
- 网络连接和配置