# 企业微信机器人 **Repository Path**: wenzj-code/enterprise-wechat-robot ## Basic Information - **Project Name**: 企业微信机器人 - **Description**: 企业微信的基础功能 - **Primary Language**: Python - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-11-06 - **Last Updated**: 2025-11-25 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 企业微信@机器人服务 这是一个基于Python Flask的企业微信机器人服务,支持接收和回复企业微信消息。 ## 功能特性 - ✅ 消息接收和验证 - ✅ 消息加密/解密 - ✅ 智能回复功能 - ✅ 事件处理 - ✅ 健康检查接口 - ✅ 日志记录 - ✅ 进程管理 ## 配置信息 当前配置的TOKEN和EncodingAESKey: - **TOKEN**: `xxxxx` - **EncodingAESKey**: `xxxxxxxx` ## 快速开始 ### 1. 安装依赖 ```bash pip3 install -r requirements.txt ``` ### 2. 启动服务 ```bash # 方式1:使用启动脚本(推荐) chmod +x start.sh ./start.sh # 方式2:直接运行 python3 wechat_bot.py ``` ### 3. 停止服务 ```bash chmod +x stop.sh ./stop.sh ``` ## 服务接口 ### 主要接口 - **首页**: `GET /` - **微信回调**: `GET|POST /wechat` - **健康检查**: `GET /health` ### 接口说明 #### 1. 首页接口 ``` GET / ``` 返回服务状态信息。 #### 2. 微信回调接口 ``` GET /wechat?msg_signature=xxx×tamp=xxx&nonce=xxx&echostr=xxx ``` 用于微信服务器验证URL有效性。 ``` POST /wechat?msg_signature=xxx×tamp=xxx&nonce=xxx ``` 接收微信消息并返回响应。 #### 3. 健康检查接口 ``` GET /health ``` 返回服务健康状态。 ## 机器人功能 ### 支持的命令 | 命令 | 功能 | 示例 | |------|------|------| | hello/hi | 问候 | 发送"hello"获得问候回复 | | 你好 | 中文问候 | 发送"你好"获得中文回复 | | help/帮助 | 帮助信息 | 查看支持的功能列表 | | time/时间 | 时间查询 | 获取当前时间 | ### 消息处理流程 1. **接收消息** - 从企业微信接收POST请求 2. **验证签名** - 验证消息来源的合法性 3. **解密消息** - 使用AES解密消息内容 4. **解析XML** - 解析消息的XML结构 5. **处理逻辑** - 根据消息类型和内容生成回复 6. **构造回复** - 生成XML格式的回复消息 7. **返回响应** - 发送回复给企业微信 ## 企业微信配置 ### 1. 创建机器人 1. 登录企业微信管理后台 2. 进入"应用管理" → "自建" → "创建应用" 3. 填写应用信息并创建 ### 2. 配置回调 1. 在应用详情页面,点击"接收消息" → "设置API接收" 2. 填写以下信息: - **URL**: `http://你的服务器地址:8080/wechat` - **Token**: `T4JNRxbglXflKKq3422Ca5tkn4Nrz` - **EncodingAESKey**: `bwGo0KtrMBuQU8yugQ9HacxaV93MFqL3PgOUxcu8SGe` 3. 点击保存 ### 3. 测试机器人 1. 在企业微信中找到你的应用 2. 发送消息测试机器人响应 3. 查看服务日志确认消息处理情况 ## 日志文件 - `wechat_bot.log` - 应用日志 - `logs/service.log` - 服务运行日志 ## 进程管理 - `wechat_bot.pid` - 存储服务进程ID ## 环境变量配置 可以通过环境变量覆盖默认配置: ```bash export WECHAT_TOKEN="your_token" export WECHAT_ENCODING_AES_KEY="your_aes_key" export HOST="0.0.0.0" export PORT="8080" export DEBUG="false" ``` ## 故障排除 ### 常见问题 1. **服务启动失败** - 检查端口8080是否被占用 - 确认Python依赖是否正确安装 - 查看日志文件排查错误 2. **消息接收失败** - 检查企业微信回调URL配置 - 验证TOKEN和EncodingAESKey是否正确 - 确认服务器网络连通性 3. **签名验证失败** - 检查TOKEN配置是否正确 - 确认时间戳和随机数参数 ### 调试模式 修改 `wechat_bot.py` 文件,将 `debug=False` 改为 `debug=True` 启用调试模式。 ## 扩展开发 ### 添加新的消息处理功能 在 `WeChatBot` 类的 `_handle_text_message` 方法中添加新的关键词和回复逻辑: ```python def _handle_text_message(self, content): # 添加新的关键词匹配 responses = { # 现有的关键词... '新功能': '这是新功能的回复', } # ... 其他逻辑 ``` ### 集成外部API 可以在消息处理函数中调用外部API获取数据: ```python import requests def get_weather_info(city): # 调用天气API response = requests.get(f'http://api.weather.com/v1/weather?city={city}') return response.json() ``` ## 安全注意事项 1. 确保TOKEN和EncodingAESKey的安全性 2. 在生产环境中关闭DEBUG模式 3. 使用HTTPS协议部署服务 4. 定期更新依赖包版本 5. 监控服务日志,及时发现异常 ## 技术栈 - **Python 3.x** - 主要开发语言 - **Flask** - Web框架 - **pycryptodome** - 加密解密库 - **xml.etree.ElementTree** - XML解析 - **hashlib** - 签名验证 ## 许可证 MIT License