这是一个用于将E云管家消息转发到DifyAI并返回AI回答的后端服务程序。
E云管家 -> 回调接口 -> Redis队列 -> 后台工作进程 -> DifyAI -> 回复消息
↓
MySQL数据库
确保已安装以下软件:
- Python 3.11+
- Docker & Docker Compose
- MySQL 8.0+
- Redis 7+
复制环境变量模板:bash cp .env.example .env
编辑 .env
文件,配置以下参数:
```env
DATABASE_URL=mysql+pymysql://username:password@localhost:3306/ecloud_dify
REDIS_URL=redis://localhost:6379/0
ECLOUD_BASE_URL=http://your-ecloud-domain.com
ECLOUD_AUTHORIZATION=your-authorization-token
DIFY_BASE_URL=https://api.dify.ai/v1
DIFY_API_KEY=your-dify-api-key
```
# 启动所有服务
docker-compose up -d
# 查看日志
docker-compose logs -f app
# 安装依赖
pip install -r requirements.txt
# 启动MySQL和Redis(或使用Docker)
docker-compose up -d mysql redis
# 初始化数据库
python app/utils/database_init.py
# 启动应用
python main.py
POST /api/v1/callback
接收E云管家的消息回调。
请求体示例:json { "account": "17200000000", "messageType": "80001", "wcId": "wxid_phyyedw9xap22", "data": { "content": "消息内容", "fromGroup": "25411981800@chatroom", "fromUser": "wxid_ynu1tgjz156j22", "memberCount": 8, "msgId": 1685074592, "newMsgId": 1497474118261484795, "self": false, "timestamp": 1640772092, "toUser": "wxid_phyyedw9xap22", "wId": "12491ae9-62aa-4f7a-83e6-9db4e9f28e3c" } }
GET /api/v1/health
检查服务运行状态。
id
: 主键wc_id
: 微信ID/群ID(唯一)nick_name
: 昵称user_name
: 微信用户名id
: 主键user_conversation_key
: 用户对话唯一键from_user
: 发送用户微信IDconversation_id
: Dify对话IDuser_question
: 用户提问ai_answer
: AI回答is_processed
: 是否已处理is_sent
: 是否已发送主要配置项在 config.py
中:
max_retry_count
: 最大重试次数(默认3次)retry_delay
: 重试延迟(默认5秒)queue_timeout
: 队列超时时间(默认300秒)日志文件位置:
- 应用日志: logs/app.log
- 错误日志: logs/app_error.log
日志级别可通过环境变量 LOG_LEVEL
配置。
# 连接Redis查看队列
redis-cli
> KEYS ecloud_queue:*
> LLEN ecloud_queue:用户ID
> KEYS ecloud_processing:*
> GET ecloud_processing:用户ID
├── app/
│ ├── api/ # API接口
│ ├── models/ # 数据模型
│ ├── services/ # 业务服务
│ ├── utils/ # 工具函数
│ └── workers/ # 后台工作进程
├── logs/ # 日志文件
├── tests/ # 测试文件
├── config.py # 配置文件
├── main.py # 应用入口
└── requirements.txt # 依赖包
pytest tests/
MIT License