# we_work_msgaudit **Repository Path**: luweiss/we_work_msgaudit ## Basic Information - **Project Name**: we_work_msgaudit - **Description**: No description available - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-05-13 - **Last Updated**: 2026-05-14 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 企业微信-会话存档API中转服务 因为企业微信会话存档功能只提供了SDK,并且依赖特定运行库,所以使用Docker搭建一个API中转服务,以便在各个系统中都能方便使用。 ## 功能特性 - 提供RESTful API接口获取企业微信会话存档数据 - 支持多企业微信接入(通过API参数动态配置) - 支持代理配置 - 支持分页查询和seq断点续传 - 自动解密消息内容 - 并发安全,同一企业微信的请求串行处理 - Docker容器化部署,开箱即用 ## 环境要求 - Docker - Docker Compose - 企业微信会话存档接口权限(需企业管理员开通) ## 快速开始 ### 1. 配置环境变量 复制 `.env.example` 为 `.env`: ```bash cp .env.example .env ``` 编辑 `.env` 文件,配置以下参数: ```env WEWORK_PROXY= # 可选,代理地址,如:http://proxy:8080 WEWORK_PROXY_PASS= # 可选,代理认证账号密码 WEWORK_TIMEOUT=30 # 请求超时时间(秒) ``` ### 2. 构建并启动服务 ```bash make up ``` 服务启动后运行在 `http://localhost:8020` ### 3. 停止服务 ```bash make down ``` ### 4. 验证服务 访问健康检查接口: ```bash curl http://localhost:8020/health ``` 响应: ```json {"status":"ok"} ``` ## 配置说明 | 环境变量 | 必填 | 说明 | |---------|------|------| | WEWORK_PROXY | 否 | 代理地址,支持socks5和http代理 | | WEWORK_PROXY_PASS | 否 | 代理认证,格式:user_name:passwd | | WEWORK_TIMEOUT | 否 | 请求超时时间,默认30秒 | **注意**:`WEWORK_CORP_ID` 和 `WEWORK_SECRET` 不再通过环境变量配置,而是通过API参数动态提交。这允许同一个服务支持多个企业微信的接入。 ## API接口文档 详细接口文档请参见 [API.md](./API.md)。 ## 多企业微信支持 本服务支持同一个实例接入多个企业微信,每个请求独立配置: ```bash # 企业微信A curl -X POST http://localhost:8020/chatdata \ -H "Content-Type: application/json" \ -d '{ "corp_id": "ww_company_a", "secret": "secret_a", "seq": 0, "limit": 100 }' # 企业微信B curl -X POST http://localhost:8020/chatdata \ -H "Content-Type: application/json" \ -d '{ "corp_id": "ww_company_b", "secret": "secret_b", "seq": 0, "limit": 100 }' ``` 不同企业微信的请求可以完全并行处理,每个企业使用独立的 SDK 实例,互不影响。 ## 测试脚本 测试脚本位于 `test-scripts/` 目录下: | 脚本 | 说明 | |------|------| | `health.sh` | 健康检查 | | `chatdata.sh` | 获取聊天记录 | **使用示例:** ```bash # 健康检查 ./test-scripts/health.sh # 获取聊天记录 ./test-scripts/chatdata.sh # 获取媒体文件 curl -X POST http://localhost:8020/mediadata \ -H "Content-Type: application/json" \ -d '{ "corp_id": "wwxxxxxxxxxxxxxxxx", "secret": "xxxxxxxxxxxxxxxx", "sdkfileid": "xxxxxxxxxxxxx" }' ``` ## 目录结构 ``` . ├── lib/ # 企业微信SDK动态链接库(构建时根据架构复制) │ ├── amd64/ # x86_64架构版本 │ │ ├── gson-2.10.1.jar │ │ └── libWeWorkFinanceSdk_Java.so │ └── arm64/ # ARM64架构版本 │ ├── gson-2.10.1.jar │ └── libWeWorkFinanceSdk_Java.so ├── src/ # Java源代码(运行时挂载到容器) │ ├── com/tencent/wework/ │ │ └── Finance.java # SDK JNI接口封装 │ └── serve.java # HTTP服务主程序 ├── scripts/ │ └── start.sh # 容器启动脚本(自动编译并运行Java) ├── test-scripts/ # 测试脚本 │ ├── health_check.sh # 健康检查 │ ├── get_chatdata.sh # 获取聊天记录 │ ├── get_chatdata_loop.sh # 循环拉取聊天记录 │ └── get_chatdata_save.sh # 保存聊天记录到文件 ├── Makefile # 构建和运行命令 ├── .env # 环境变量配置(需创建) ├── .env.example # 环境变量配置示例 ├── .gitignore # Git忽略文件 ├── docker-compose.yml # Docker Compose配置 └── Dockerfile # Docker镜像构建文件 ``` ## Makefile 命令 推荐使用 Makefile 管理服务: | 命令 | 说明 | |------|------| | `make build` | 构建 Docker 镜像(自动检测当前架构) | | `make up` | 构建并启动服务 | | `make down` | 停止并移除容器 | | `make restart` | 重启服务 | | `make logs` | 查看服务日志 | | `make clean` | 清理容器和镜像 | **原始 Docker Compose 命令:** | 命令 | 说明 | |------|------| | `docker compose build` | 构建 Docker 镜像 | | `docker compose up -d` | 启动服务(后台运行) | | `docker compose down` | 停止服务 | | `docker compose restart` | 重启服务 | | `docker compose logs -f` | 查看服务日志(实时) | ## 技术架构 - **运行环境**:Debian Bookworm + OpenJDK 21 - **HTTP服务**:Java原生HttpServer - **SDK集成**:企业微信会话存档SDK(libWeWorkFinanceSdk_Java.so,构建时根据架构自动选择) - **SDK管理**:基于 corpid+secret 的 SDK 实例池,每个企业使用独立 SDK 实例,支持完全并行 - **代码加载**:运行时挂载(docker-compose volumes),修改代码后重启即可生效 - **容器化**:Docker + Docker Compose - **构建工具**:Makefile(自动检测当前系统架构) - **服务端口**:容器内8080,映射到主机8020 ## 注意事项 1. 企业微信会话存档功能需要企业管理员在管理后台开通权限 2. SDK动态链接库会根据构建时自动选择对应版本(arm64/amd64) 3. 代码文件通过docker-compose volumes挂载到容器内,修改代码后重启服务即可生效,无需重新构建镜像 4. 生产环境请务必配置合适的超时时间和代理(如需要) 5. SDK池会复用已初始化的实例,同一 corpid+secret 组合的请求会串行执行