Files
GX-gp-notify/README_企业微信.md
T
2026-01-09 11:07:10 +08:00

309 lines
7.6 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 广西政府采购网公告监控系统 - 企业微信集成
## 概述
本系统已集成企业微信功能,支持:
- 企业微信应用消息推送
- 回调服务器处理用户交互
- 应用菜单管理
- 实时搜索和智能筛选
## 配置要求
### 1. 企业微信应用配置
`config/config.yaml` 中配置企业微信信息:
```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. 企业微信管理后台设置
1. **设置回调URL**
- 在企业微信管理后台的应用设置中
- 设置回调URL为:`http://your-server-ip:18001/api/v1/wechat/callback`
- Token和EncodingAESKey需要与配置文件一致
2. **设置应用可见范围**
- 配置应用对哪些部门或成员可见
- 确保有基础接口权限
## 功能说明
### 1. 消息推送
系统会在以下情况下自动推送消息到企业微信:
- **搜索完成通知**:每次执行搜索后,推送筛选结果
- **关键词匹配通知**:发现匹配关键词的公告时推送
- **系统状态通知**:系统启动、错误等重要事件
消息格式参考 `企业微信消息示例.md`
### 2. 应用菜单
系统提供全新的菜单结构,包含三大功能模块:
#### 🚀 监控操作
- **立即搜索**:执行一次完整的公告搜索,获取最新数据
- **今日统计**:查看今日公告统计信息和数据概览
- **关键词搜索**:输入关键词搜索相关公告
- **最新公告**:选择公告来源查看该来源的最新10条公告
#### ⚙️ 系统管理
- **关键词管理**:查看当前系统监控的关键词
- **系统状态**:查看各组件运行状态和系统信息
- **清理缓存**:清理系统缓存,提升性能
#### ❓ 帮助
- **使用说明**:查看详细功能介绍和使用指南
### 3. 文本交互
支持丰富的文本命令交互:
#### 🔍 搜索功能
```
# 直接关键词搜索
大化 # 搜索"大化"相关公告
信息化 政府采购 # 搜索多个关键词
# 关键词命令
关键词 大化 # 明确指定关键词搜索
搜索 政府采购 # 搜索政府采购相关公告
```
#### 📊 数据查询
```
# 统计信息
总结 # 查看今日统计
统计 # 查看系统统计信息
# 最新数据
最新公告 # 选择公告来源查看最新公告
最新 # 同上
# 公告来源选择 (发送数字)
1 # 查看采购公告
2 # 查看结果公告
3 # 查看更正公告
全部 # 查看全部公告
```
#### 🛠️ 系统管理
```
# 系统状态
系统状态 # 查看系统运行状态
状态 # 同上
# 缓存管理
清理缓存 # 清理系统缓存
清理 # 同上
# 关键词管理
查看关键词 # 查看当前监控关键词
添加关键词 [关键词] # 添加新关键词(开发中)
删除关键词 [关键词] # 删除关键词(开发中)
```
#### ️ 信息查询
```
# 帮助信息
帮助 # 显示详细使用说明
help # 同上
# 系统信息
关于系统 # 查看系统详细信息
关于 # 同上
# 联系方式
联系我们 # 查看联系信息
联系 # 同上
```
#### 💡 智能交互
- **自动识别**:直接发送关键词即可搜索
- **多关键词**:用空格分隔多个关键词
- **模糊匹配**:支持标题和内容搜索
- **实时反馈**:所有操作都有即时响应
## 部署和运行
### 1. 安装依赖
```bash
pip install -r gx_gp_monitor/requirements.txt
```
### 2. 测试功能
```bash
# 测试企业微信模块
python test_wechat_server.py
```
### 3. 启动回调服务器
#### 方法1:使用 uWSGI(推荐生产环境)
```bash
# 使用启动脚本
./start_uwsgi_server.sh
# 或直接启动
uwsgi --ini uwsgi_wechat.ini
```
#### 方法2:使用 Gunicorn
```bash
# 使用启动脚本
./start_wechat_server.sh
# 或直接启动
gunicorn --bind 0.0.0.0:18001 app:app
```
#### 方法3:开发环境启动
```bash
# 使用专用启动脚本
python wechat_server.py
# 或使用主程序
python gx_gp_monitor/main.py wechat-server
```
### 4. 管理菜单
```bash
# 创建菜单
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. 正常搜索
```bash
# 执行搜索(会自动推送消息)
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. 导入错误
```bash
# 确保依赖已安装
pip install flask pycryptodome
# 测试导入
python -c "from gx_gp_monitor.wechat.callback_server import WeChatCallbackServer; print('OK')"
```
## 日志查看
系统会记录详细的企业微信操作日志:
```bash
# 查看日志
tail -f logs/gx_gp_monitor.log | grep wechat
```
## 安全注意事项
1. **保护配置文件**:不要将包含密钥的配置文件提交到版本控制
2. **网络安全**:确保回调服务器只接受来自企业微信的请求
3. **权限控制**:合理设置应用可见范围和权限
4. **定期更新**:定期更新企业微信应用Secret
## 开发说明
### 项目结构
```
gx_gp_monitor/wechat/
├── __init__.py # 模块初始化
├── callback_server.py # Flask回调服务器
├── message_handler.py # 消息处理逻辑
├── menu_manager.py # 菜单管理
├── WXBizMsgCrypt.py # 企业微信加密库
└── ierror.py # 错误码定义
```
### 扩展功能
如需添加新功能,可以:
1.`message_handler.py` 中添加新的消息处理逻辑
2.`menu_manager.py` 中修改菜单配置
3.`callback_server.py` 中添加新的路由
## 联系支持
如有问题,请检查:
1. 系统日志
2. 企业微信管理后台错误信息
3. 网络连接和配置