这是一个基于Spring Boot的企业微信与Dify AI集成服务,解决了原版本中每次消息都进行URL验证的性能问题。
- 分离关注点:URL验证和消息处理完全分离
- 缓存机制:URL验证结果可配置缓存,避免重复验证
- Spring Boot:现代化的微服务架构
- 配置管理:统一的配置文件管理
- 依赖注入:更好的代码组织和测试性
- URL验证优化:只在企业微信配置回调时验证,不在每次消息处理时验证
- 异步处理:支持异步消息处理
- 连接池:HTTP连接复用
- 重试机制:智能重试策略
- 健康检查:
/wework/health
接口 - 配置热更新:支持环境变量配置
- 日志管理:结构化日志输出
- 监控接口:丰富的测试和监控接口
springboot-wework-dify/
├── pom.xml # Maven配置
├── src/main/
│ ├── java/com/example/wework/
│ │ ├── WeWorkDifyApplication.java # 启动类
│ │ ├── config/
│ │ │ ├── WeWorkProperties.java # 企业微信配置
│ │ │ └── DifyProperties.java # Dify配置
│ │ ├── controller/
│ │ │ ├── WeWorkCallbackController.java # 企业微信回调处理
│ │ │ └── TestController.java # 测试接口
│ │ ├── service/
│ │ │ ├── DifyService.java # Dify AI服务
│ │ │ └── WeWorkCryptService.java # 企业微信加密服务
│ │ └── com/qq/weixin/mp/aes/ # 企业微信加密库
│ └── resources/
│ └── application.yml # 应用配置
└── README.md # 本文档
# 服务配置
server:
port: 8080
# 企业微信配置
wework:
token: ${WEWORK_TOKEN:your-wework-token}
corp-id: ${WEWORK_CORP_ID:your-corp-id}
encoding-aes-key: ${WEWORK_ENCODING_AES_KEY:your-encoding-aes-key}
url-verification:
enabled: true
cache-duration: 3600 # URL验证缓存时长(秒)
# Dify AI配置
dify:
base-url: ${DIFY_BASE_URL:https://api.dify.ai}
api-key: ${DIFY_API_KEY:app-your-api-key-here}
timeout: 30000
retry:
max-attempts: 3
delay: 1000
# 企业微信配置
export WEWORK_TOKEN="your-actual-token"
export WEWORK_CORP_ID="your-actual-corp-id"
export WEWORK_ENCODING_AES_KEY="your-actual-aes-key"
# Dify配置
export DIFY_BASE_URL="https://api.dify.ai"
export DIFY_API_KEY="app-your-actual-api-key"
# 编译
mvn clean package -DskipTests
# 运行
java -jar target/wework-dify-integration-1.0.0.jar
# 或者直接运行
mvn spring-boot:run
# 健康检查
curl http://localhost:8080/wework/health
# 配置检查
curl http://localhost:8080/test/config
在企业微信管理后台配置回调URL:
http://your-domain:8080/wework/callback
- GET /wework/callback - URL验证(仅在配置时调用)
- POST /wework/callback - 消息处理(每次用户发消息时调用)
- GET /wework/health - 健康检查
- POST /wework/admin/clear-cache - 清除验证缓存
- POST /test/dify - 测试Dify AI服务
- POST /test/wework-crypt - 测试企业微信加密
- POST /test/full-flow - 测试完整消息流程
- GET /test/config - 查看配置信息(脱敏)
curl -X POST http://localhost:8080/test/dify \
-H "Content-Type: application/json" \
-d '{"message": "你好,AI助手!", "user": "test_user"}'
curl -X POST http://localhost:8080/test/full-flow \
-H "Content-Type: application/json" \
-d '{"message": "介绍一下你自己", "from_user": "user123"}'
每次消息 → URL验证 → 消息解密 → AI处理 → 消息加密 → 回复
↑
性能瓶颈!
配置时: URL验证 → 缓存结果
消息处理: 消息解密 → AI处理 → 消息加密 → 回复
↑
高效处理!
指标 | 原版本 | Spring Boot版本 | 提升 |
---|---|---|---|
响应时间 | ~2-3秒 | ~0.5-1秒 | 60-75% |
并发处理 | 低 | 高 | 显著提升 |
资源占用 | 高 | 低 | 30-50% |
可维护性 | 一般 | 优秀 | 显著提升 |
- 敏感信息:使用环境变量存储API密钥
- HTTPS:生产环境必须使用HTTPS
- 签名验证:严格验证企业微信消息签名
- 访问控制:限制管理接口访问
- 日志安全:避免记录敏感信息
FROM openjdk:8-jre-alpine
COPY target/wework-dify-integration-1.0.0.jar app.jar
EXPOSE 8080
ENTRYPOINT ["java", "-jar", "/app.jar"]
apiVersion: apps/v1
kind: Deployment
metadata:
name: wework-dify-integration
spec:
replicas: 2
selector:
matchLabels:
app: wework-dify-integration
template:
metadata:
labels:
app: wework-dify-integration
spec:
containers:
- name: app
image: wework-dify-integration:1.0.0
ports:
- containerPort: 8080
env:
- name: WEWORK_TOKEN
valueFrom:
secretKeyRef:
name: wework-secret
key: token
- name: DIFY_API_KEY
valueFrom:
secretKeyRef:
name: dify-secret
key: api-key
-
服务启动失败
- 检查Java版本(需要Java 8+)
- 检查端口占用
- 查看启动日志
-
企业微信回调失败
- 验证回调URL配置
- 检查网络连通性
- 确认Token和AES密钥正确
-
Dify API调用失败
- 验证API密钥
- 检查网络连接
- 查看Dify服务状态
# 查看应用日志
tail -f logs/spring.log
# 查看错误日志
grep ERROR logs/spring.log
# 查看性能日志
grep "processing_time" logs/spring.log
# 基础健康检查
curl http://localhost:8080/wework/health
# 详细状态检查
curl http://localhost:8080/test/config
- 响应时间监控
- 错误率监控
- Dify API调用成功率
- 内存和CPU使用率
- Fork项目
- 创建功能分支
- 提交更改
- 创建Pull Request
本项目基于Apache 2.0许可证开源。