# AI-service **Repository Path**: lxcsGit/ai-service ## Basic Information - **Project Name**: AI-service - **Description**: 企业微信 ai微信客服 - **Primary Language**: Python - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-07-21 - **Last Updated**: 2025-09-13 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 企业微信群机器人 - 对接通义千问 这是一个企业微信群机器人,可以接收群消息并调用通义千问API进行智能回复。 ## 功能特性 - 🤖 自动接收企业微信群消息 - 🧠 调用通义千问API进行智能回复 - 🔒 支持企业微信签名验证和消息加密 - 📝 支持文本、图片、语音、视频、位置等多种消息类型 - 🚀 基于Flask的Web服务 - 📊 完整的日志记录 - 🧪 内置测试功能 ## 文件结构 ``` AIService/ ├── wechat_bot.py # 主程序文件 ├── wx_crypto.py # 企业微信加解密工具 ├── config.py # 配置文件 ├── llm.py # 通义千问配置(现有) ├── start.py # 启动脚本 ├── test_bot.py # 测试脚本 ├── test_wechat_receive.py # 企业微信消息接收测试 ├── requirements.txt # Python依赖 ├── env_example.txt # 环境变量示例 └── readme.md # 说明文档 ``` ## 快速开始 ### 1. 安装依赖 ```bash pip install -r requirements.txt ``` ### 2. 配置环境变量 复制 `env_example.txt` 为 `.env` 文件,并填入实际配置: ```bash cp env_example.txt .env ``` 编辑 `.env` 文件: ```env # 企业微信群机器人Webhook地址(用于发送消息) WEBHOOK_URL=https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=YOUR_WEBHOOK_KEY # 企业微信机器人签名密钥(可选) SECRET=your_secret_key # 企业微信应用配置(用于接收消息) # 在企业微信管理后台 -> 应用管理 -> 自建应用 -> 设置API接收 WX_TOKEN=your_token WX_AES_KEY=your_encoding_aes_key WX_CORPID=your_corp_id # 服务器配置 HOST=0.0.0.0 PORT=5005 # 通义千问API密钥 QIANWEN_API_KEY=your_qianwen_api_key ``` ### 3. 获取配置信息 #### 企业微信群机器人配置(发送消息) 1. 登录企业微信管理后台 2. 进入应用管理 → 机器人 3. 创建或选择一个机器人 4. 获取Webhook地址 5. 配置安全设置(可选) #### 企业微信应用配置(接收消息) 1. 登录企业微信管理后台 2. 进入应用管理 → 自建应用 3. 创建或选择一个应用 4. 在应用设置中配置API接收: - 获取Token、EncodingAESKey、CorpID - 设置接收消息的URL为:`http://你的服务器IP:5005/webhook` - 选择消息加密方式(推荐选择加密) #### 通义千问API配置 1. 访问 [阿里云通义千问控制台](https://dashscope.console.aliyun.com/) 2. 创建API密钥 3. 将密钥填入 `.env` 文件 ### 4. 启动服务 ```bash python start.py ``` 或者直接运行主程序: ```bash ``` ### 5. 测试功能 运行测试脚本检查配置: ```bash # 测试基本功能 python test_bot.py # 测试企业微信消息接收功能 python test_wechat_receive.py ``` ## 使用方法 ### 在群聊中使用 1. 在企业微信群中@机器人 2. 输入你的问题 3. 机器人会自动调用通义千问API进行回复 示例: ``` @机器人 你好,请介绍一下Python编程语言 ``` ### 消息类型支持 机器人支持以下消息类型: - **文本消息**:直接回复AI生成的文本 - **图片消息**:识别为"[图片消息]" - **语音消息**:识别为"[语音消息]" - **视频消息**:识别为"[视频消息]" - **位置消息**:识别为"[位置消息]" ## API接口 ### Webhook接收接口 - **URL**: `/webhook` - **方法**: `GET` (URL验证) / `POST` (消息接收) - **功能**: - GET: 企业微信URL验证 - POST: 接收企业微信发送的消息 ### 健康检查接口 - **URL**: `/health` - **方法**: `GET` - **功能**: 检查服务状态 ### 首页接口 - **URL**: `/` - **方法**: `GET` - **功能**: 显示服务状态和配置信息 ## 企业微信消息接收流程 ### 1. URL验证 企业微信在配置API接收时会发送GET请求进行URL验证: ``` GET /webhook?msg_signature=xxx×tamp=xxx&nonce=xxx&echostr=xxx ``` 服务器需要: 1. 验证签名 2. 解密echostr 3. 返回解密后的内容 ### 2. 消息接收 企业微信发送消息时会发送POST请求: ``` POST /webhook?msg_signature=xxx×tamp=xxx&nonce=xxx ``` 请求体为XML格式: ```xml ``` 服务器需要: 1. 验证签名 2. 解密消息内容 3. 解析XML获取消息详情 4. 调用AI API生成回复 5. 通过Webhook发送回复 ## 部署说明 ### 本地部署 1. 确保Python 3.7+ 2. 安装依赖:`pip install -r requirements.txt` 3. 启动服务:`python run_bot.py` ### 服务器部署 #### 使用Docker(推荐) 创建 `Dockerfile`: ```dockerfile FROM python:3.9-slim WORKDIR /app COPY requirements.txt . RUN pip install -r requirements.txt COPY . . EXPOSE 5005 CMD ["python", "run_bot.py"] ``` 构建和运行: ```bash docker build -t wechat-bot . docker run -p 5005:5005 --env-file .env wechat-bot ``` #### 使用Nginx反向代理 ```nginx server { listen 80; server_name your-domain.com; location / { proxy_pass http://127.0.0.1:5005; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; } } ``` ### 使用systemd服务 创建服务文件 `/etc/systemd/system/wechat-bot.service`: ```ini [Unit] Description=WeChat Bot Service After=network.target [Service] Type=simple User=your-user WorkingDirectory=/path/to/your/bot Environment=PATH=/path/to/your/bot/venv/bin ExecStart=/path/to/your/bot/venv/bin/python run_bot.py Restart=always [Install] WantedBy=multi-user.target ``` 启动服务: ```bash sudo systemctl enable wechat-bot sudo systemctl start wechat-bot ``` ## 配置说明 ### 环境变量配置 所有配置统一在 `run_bot.py` 中管理,无需手动创建 `.env` 文件。主要配置项包括: | 变量名 | 说明 | 必需 | 默认值 | |--------|------|------|--------| | `WEBHOOK_URL` | 企业微信机器人Webhook地址(发送消息) | 是 | 在run_bot.py中配置 | | `SECRET` | 企业微信机器人签名密钥 | 否 | 在run_bot.py中配置 | | `WX_TOKEN` | 企业微信应用Token(接收消息) | 是 | 在run_bot.py中配置 | | `WX_AES_KEY` | 企业微信应用EncodingAESKey(接收消息) | 是 | 在run_bot.py中配置 | | `WX_CORPID` | 企业微信应用CorpID(接收消息) | 是 | 在run_bot.py中配置 | | `HOST` | 服务器监听地址 | 否 | 0.0.0.0 | | `PORT` | 服务器端口 | 否 | 5005 | | `LOG_LEVEL` | 日志级别 | 否 | INFO | ### 机器人行为配置 - `MAX_MESSAGE_LENGTH`: 最大消息长度(默认2000) - `RESPONSE_TIMEOUT`: API响应超时时间(默认30秒) ## 故障排除 ### 常见问题 1. **机器人不回复** - 检查Webhook URL是否正确 - 确认服务器可以访问 - 查看日志文件 2. **企业微信消息接收失败** - 检查WX_TOKEN、WX_AES_KEY、WX_CORPID配置 - 确认URL验证通过 - 查看企业微信应用设置 3. **API调用失败** - 检查通义千问API密钥 - 确认网络连接正常 - 查看API配额 4. **签名验证失败** - 检查SECRET配置 - 确认时间戳同步 ### 日志查看 ```bash tail -f bot.log ``` ### 测试命令 ```bash # 测试基本功能 python test_bot.py # 测试企业微信消息接收 python test_wechat_receive.py # 测试加解密功能 python wx_crypto.py ``` ## 开发说明 ### 添加新功能 1. 在 `WeChatBot` 类中添加新方法 2. 在 `process_message` 中处理新消息类型 3. 更新测试脚本 ### 自定义回复 修改 `call_ai_api` 方法中的系统提示词: ```python prompt = "你的自定义提示词。用户问题:{user_message}" ``` ### 扩展消息类型支持 在 `parse_xml_message` 方法中添加新的消息类型处理: ```python elif msg_type == 'new_type': # 处理新消息类型 content = f"[新消息类型]" ``` ## 许可证 MIT License ## 贡献 欢迎提交Issue和Pull Request! ## 更新日志 - v1.1.0: 添加企业微信消息接收功能,支持URL验证和消息解密 - v1.0.0: 初始版本,支持基本的消息发送和回复功能