agent_9art/backend/archive-service/SDK_SETUP.md
jiao d327826c78 chore: 完成项目整体打包与配置更新
1. 更新所有服务Dockerfile,切换到eclipse-temurin:17-jre-alpine镜像并调整服务端口
2. 配置前端项目基础路径与nginx代理
3. 新增数据库初始化编码设置与测试依赖
4. 添加部分服务的Servlet编码配置与JWT/LLM密钥配置
5. 完善话术实体类校验注解与Mapper接口
6. 新增密码生成工具类与部分测试文件配置
2026-05-21 11:40:22 +08:00

172 lines
4.9 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.

# 企微会话存档 SDK 对接指南
## 一、SDK 下载
### 官方下载地址
- 企微开发者中心:https://developer.work.weixin.qq.com/document/path/91774
- 下载页面:「获取会话内容」→ SDK 下载
### 下载版本选择
| 环境 | 推荐版本 | 说明 |
|------|---------|------|
| Windows x64 | SDK v3.0 (OpenSSL 3.0) | 2025-02-13 更新 |
| Linux x64 | SDK v3.0 (OpenSSL 3.0) | 2025-02-13 更新 |
### Windows SDK 文件清单
解压后 `financeWinSdk/java_sdk/WeWorkFinanceSdk/` 目录下包含:
| 文件 | 说明 |
|------|------|
| `WeWorkFinanceSdk.dll` | 主 SDK 动态库 |
| `libcrypto-3-x64.dll` | OpenSSL 3.0 依赖 |
| `libssl-3-x64.dll` | OpenSSL 3.0 依赖 |
| `libcurl-x64.dll` | libcurl HTTP 依赖 |
| `Finance.java` | 官方 JNI 封装(本项目使用 JNA,无需此文件) |
## 二、SDK 放置
### Windows 环境
将上述 4 个 DLL 文件放到项目目录:
```
backend/archive-service/
└── sdk/ <-- 新建此目录
├── WeWorkFinanceSdk.dll
├── libcrypto-3-x64.dll
├── libssl-3-x64.dll
└── libcurl-x64.dll
```
### Linux 环境
```bash
# 将 libWeWorkFinanceSdk_Java.so 重命名并放到系统库路径
sudo cp libWeWorkFinanceSdk_Java.so /usr/lib/libWeWorkFinanceSdk.so
sudo ldconfig
# 或者放到项目目录并通过环境变量指定
mkdir -p backend/archive-service/sdk
cp libWeWorkFinanceSdk_Java.so backend/archive-service/sdk/libWeWorkFinanceSdk.so
```
## 三、配置参数
### 环境变量方式(推荐)
```bash
# 企微会话存档 Secret
export WECOM_ARCHIVE_SECRET="your-archive-secret"
# RSA 私钥(PKCS#1 格式,Base64 编码)
export WECOM_ARCHIVE_RSA_KEY="-----BEGIN RSA PRIVATE KEY-----\nMIIE...\n-----END RSA PRIVATE KEY-----"
# 回调验证 Token(企微后台配置的 Token)
export WECOM_ARCHIVE_CALLBACK_TOKEN="your-callback-token"
# SDK 路径(指向存放 DLL/SO 的目录)
export WECOM_ARCHIVE_SDK_PATH="D:\www\agent_9art\backend\archive-service\sdk"
# Mock 模式(开发测试用,无真实 SDK 时设为 true)
export WECOM_ARCHIVE_MOCK=false
```
### application.yml 配置项
```yaml
wecom:
archive:
corp-id: wwd483c2fba24ae30a # 企业微信 CorpID
secret: ${WECOM_ARCHIVE_SECRET:} # 会话存档 Secret
rsa-private-key: ${WECOM_ARCHIVE_RSA_KEY:} # RSA 私钥
callback-token: ${WECOM_ARCHIVE_CALLBACK_TOKEN:} # 回调 Token
sdk-path: ${WECOM_ARCHIVE_SDK_PATH:} # SDK 目录路径
mock-mode: ${WECOM_ARCHIVE_MOCK:false} # Mock 模式开关
```
## 四、参数获取方式
### 1. CorpID
企微管理后台 → 「我的企业」→ 「企业ID」
### 2. 会话存档 Secret
企微管理后台 → 「管理工具」→ 「会话内容存档」→ 查看 Secret
### 3. RSA 密钥对
```bash
# 生成 RSA 私钥(PKCS#1 格式)
openssl genrsa -out private_key.pem 2048
# 提取公钥
openssl rsa -in private_key.pem -pubout -out public_key.pem
# 将公钥配置到企微后台
# 将私钥内容配置到 WECOM_ARCHIVE_RSA_KEY 环境变量
```
### 4. 回调 Token
企微后台配置接收消息时设置,用于验证回调请求签名。
## 五、Mock 模式(开发/测试)
当没有真实企微 SDK 或不想连接企微服务器时,启用 Mock 模式:
```bash
export WECOM_ARCHIVE_MOCK=true
```
Mock 模式下:
- 跳过 SDK 初始化,不会报错
- `pullMessages()` 返回 10 条模拟会话消息
- 完整的 `saveAndNotify()` 链路正常工作(入库 + MQ + Redis)
- 数据看板可以展示存档统计
**测试接口:**
```bash
# 手动触发拉取(Mock 模式下返回模拟数据)
curl -X POST "http://localhost:8082/api/v1/archive/pull" \
-d "seq=0&limit=10"
```
## 六、验证对接成功
### 1. 启动服务时日志
```
# 真实 SDK 模式
企微存档SDK初始化成功
# Mock 模式
企微存档Mock模式已启用,跳过SDK初始化
```
### 2. 手动拉取测试
```bash
curl -X POST "http://localhost:8082/api/v1/archive/pull" \
-d "seq=0&limit=5"
```
### 3. 回调测试(需配置可信域名)
企微后台配置回调 URL 为:
```
https://your-domain/api/v1/archive/callback
```
## 七、常见问题
### Q1: 启动报错 `UnsatisfiedLinkError: Unable to load library 'WeWorkFinanceSdk'`
- 检查 `WECOM_ARCHIVE_SDK_PATH` 是否指向正确的 DLL 目录
- 确认 DLL 文件名正确(Windows 为 `WeWorkFinanceSdk.dll`)
- 确认依赖库(libcrypto/libssl/libcurl)也在同一目录
### Q2: SDK 初始化返回非 0
- 检查 `corp-id` 和 `secret` 是否正确
- 确认企业已开通「会话内容存档」功能
### Q3: 回调签名验证失败
- 检查 `callback-token` 是否与企微后台配置一致
- 确认回调 URL 没有被中间件修改参数
### Q4: 数据库查询不到存档消息
- 检查 `archive_messages` 表是否有 `deleted` 字段(逻辑删除)
- MyBatis-Plus 全局配置 `logic-delete-field: deleted`