Files
GX-gp-notify/README_企业微信.md
T

232 lines
5.4 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. 应用菜单
系统提供以下菜单功能:
#### 操作菜单
- **立即爬取**:执行一次完整的公告爬取
- **今日总结**:查看今日公告统计(开发中)
- **自定义爬取**:输入关键词进行搜索
#### 帮助菜单
- **使用说明**:显示详细使用指南
- **联系我们**:联系信息
### 3. 文本交互
支持以下文本命令:
```
# 关键词搜索
直接发送关键词,如:大化、信息化
# 手动爬取
爬取 [关键词] # 如:爬取 大化
# 获取帮助
帮助 # 显示使用说明
help
# 查看总结
总结 # 查看今日统计
```
## 部署和运行
### 1. 安装依赖
```bash
pip install -r gx_gp_monitor/requirements.txt
```
### 2. 测试功能
```bash
# 测试企业微信模块
python test_wechat_server.py
```
### 3. 启动回调服务器
```bash
# 方法1:使用专用启动脚本
python start_wechat_server.py
# 方法2:使用主程序
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. 网络连接和配置