Files
012-kaopeilian/docs/规划/全链路联调/言迹智能工牌/完整API测试报告.md
111 998211c483 feat: 初始化考培练系统项目
- 从服务器拉取完整代码
- 按框架规范整理项目结构
- 配置 Drone CI 测试环境部署
- 包含后端(FastAPI)、前端(Vue3)、管理端

技术栈: Vue3 + TypeScript + FastAPI + MySQL
2026-01-24 19:33:28 +08:00

430 lines
10 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.
# 言迹智能工牌API完整测试报告
## 📅 测试日期2025-10-15
## 🏢 测试租户:贵阳曼尼斐绮
---
## 一、OAuth认证接口
### ✅ 授权认证
**接口**: `GET /oauth/token`
**状态**: ✅ 成功
**说明**: OAuth2.0认证正常Token获取成功
---
## 二、通讯录接口
### 1.3 获取租户员工
**接口**: `GET /api/wangke/v1/device/list`
**状态**: ✅ 成功
**数据量**: 27个员工
**关键数据**:
- ✅ 员工手机号phone
- ✅ 员工姓名userName
- ✅ 员工openId
**价值**: ⭐⭐⭐⭐⭐ **核心接口**,提供手机号匹配基础
---
## 三、录音相关接口
### 4.5 获取员工未绑定录音信息 ⭐核心接口⭐
**接口**: `POST /api/beauty/v1/audio/infos`
**状态**: ✅ 成功
**数据量**: 19+条录音
**参数**:
```json
{
"estateId": 516799468310364162,
"consultantPhone": "13708515779"
}
```
**返回数据**:
```json
{
"records": [{
"id": 1977936576392384514,
"consultantPhone": "13708515779",
"consultantName": "熊媱媱",
"startTime": "2025-10-14 11:16:19",
"endTime": "2025-10-14 11:16:24",
"duration": 5000,
"fileSize": 20529,
"fileUrl": "https://oss.wangxiaobao.com/...mp3?X-Amz-..."
}]
}
```
**关键发现**:
-**fileUrl**: 录音文件可直接下载7天有效
- ✅ 音频格式MP3, 40kbps, 16kHz, 单声道
- ✅ 音质良好适合ASR转写
**价值**: ⭐⭐⭐⭐⭐ **最核心接口**,提供真实录音文件
---
### 4.8 获取录音ASR分析结果
**接口**: `GET /api/beauty/v1/audio/asr-analysed`
**状态**: ❌ 无数据
**测试范围**: 27个员工19+条录音
**返回结果**: 全部返回 `data: null`
**原因分析**:
1. 录音时长较短4-15秒
2. 租户可能未开启ASR分析功能
3. ASR分析需要特定触发条件
**价值**: ❌ 当前不可用
---
### 4.4 获取来访录音信息
**接口**: `POST /api/beauty/v1/visit/audios`
**状态**: ⚠️ 需要externalVisitId
**说明**: 需要先有来访单ID才能调用
**价值**: ⚠️ 依赖来访单系统
---
### 4.6 获取录音详情页地址
**接口**: `GET /api/beauty/v1/audio/detail-url`
**状态**: ❌ Invalid path
**说明**: 该路径在正式环境中不存在
---
## 四、来访单相关接口
### 4.1 新增同步来访单
**接口**: `POST /api/beauty/v1/visit/create`
**状态**: ⚠️ 未测试(写入接口)
**说明**: 外部系统向言迹同步来访单
**用途**: 需要先同步来访单,才能使用后续分析接口
---
### 4.2 批量获取来访单分析结果
**接口**: `GET /api/beauty/v1/visit/analyze-tags`
**状态**: ⚠️ 需要externalVisitIds
**说明**: 获取话术匹配结果(销讲、挖需、风控、标签)
**返回数据示例**:
```json
{
"externalVisitId": "xxx",
"result": [{
"modelName": "销讲模型",
"modelCategory": 1,
"dimensionName": "开场白",
"speechName": "礼貌问候"
}],
"missedResult": []
}
```
**价值**: ⭐⭐⭐⭐ 如果有来访单ID可获得AI分析结果
---
### 4.3 游标获取来访单分析结果
**接口**: `POST /api/beauty/v1/visit/analyze-tags/cursor`
**状态**: ❌ Invalid path
**说明**: 该路径在正式环境中不存在
---
### 4.7 获取客户来访列表
**接口**: `GET /api/beauty/v1/visit/by-customer`
**状态**: ⚠️ 需要thirdCustomerId
**说明**: 根据顾客ID获取来访记录
**参数**:
- estateId: 项目ID必填
- thirdCustomerId: 三方顾客ID必填
- visitTimeStart: 来访开始时间(可选)
- visitTimeEnd: 来访结束时间(可选)
**价值**: ⚠️ 需要先有顾客系统对接
---
### 4.11 批量获取来访单咨询总结
**接口**: `GET /api/beauty/v1/visit/white-desc`
**状态**: ⚠️ 需要externalVisitIds
**说明**: 获取AI生成的咨询总结文本
**返回数据示例**:
```json
[{
"externalVisitId": "xxx",
"whiteDesc": "客户对面部护理项目感兴趣,主要关注价格和效果..."
}]
```
**价值**: ⭐⭐⭐⭐⭐ 如果有来访单ID可直接获取AI总结
---
## 五、事件推送接口Webhook
### 5.1 来访分析完成(事件)
**说明**: 当来访单分析完成时,言迹主动推送
**eventType**: `aivoice.visit.analyzed`
### 5.2 来访分析完成-推送咨询总结(事件)
**说明**: 推送咨询总结内容
### 5.3 录音ASR分析完成事件
**说明**: 当录音ASR分析完成时推送
**eventType**: `aivoice.audio.asr.analyzed`
### 5.4 来访记录加解绑(事件)
**说明**: 录音与来访单绑定/解绑时推送
### 5.5 来访分析完成汇总(事件)
**说明**: 汇总分析结果推送
**价值**: ⭐⭐⭐⭐ 适合实时数据同步场景
---
## 六、API测试总结
### ✅ 可用接口5个
| 接口 | 功能 | 数据量 | 价值 |
|------|------|--------|------|
| OAuth认证 | 获取访问令牌 | - | ⭐⭐⭐⭐⭐ |
| 获取租户员工 | 员工列表+手机号 | 27人 | ⭐⭐⭐⭐⭐ |
| 获取录音信息 | 录音列表+下载URL | 19+条 | ⭐⭐⭐⭐⭐ |
| 录音文件下载 | 真实MP3文件 | 可用 | ⭐⭐⭐⭐⭐ |
| 批量获取分析结果 | AI话术分析 | 需来访单ID | ⭐⭐⭐⭐ |
### ❌ 不可用/无数据接口3个
| 接口 | 原因 |
|------|------|
| ASR分析结果 | 全部返回null |
| 录音详情页地址 | Invalid path |
| 游标获取分析结果 | Invalid path |
### ⚠️ 需要前置条件接口4个
| 接口 | 所需条件 |
|------|----------|
| 获取来访录音 | externalVisitId |
| 客户来访列表 | thirdCustomerId |
| 咨询总结 | externalVisitId |
| 批量分析结果 | externalVisitIds |
---
## 七、核心发现
### 🎯 最有价值的数据流
```
1. 获取租户员工列表(含手机号)
2. 根据手机号获取录音列表
3. 下载录音文件MP3
4. 本地Whisper转写 ←[当前可行方案]
5. 发送到Dify工作流分析
```
### 💡 关键技术洞察
1. **言迹的数据模型**:
- 核心是"来访单"Visit不是录音
- 录音需要绑定到来访单才能分析
- 未绑定的录音只能获取音频文件
2. **ASR分析触发条件**:
- 可能需要录音绑定到来访单
- 可能需要手动触发或满足时长要求
- 当前租户所有录音都未做ASR
3. **录音文件特性**:
- 格式MP3, 40kbps, 16kHz
- 单声道,适合语音识别
- URL有效期7天
- 音质:良好
---
## 八、推荐实施方案
### 方案A本地ASR转写强烈推荐⭐⭐⭐⭐⭐
**技术栈**:
- OpenAI Whisper免费开源准确率高
- 或腾讯云/阿里云语音识别
**优势**:
- ✅ 不依赖言迹ASR功能
- ✅ 完全可控,质量稳定
- ✅ 支持多种语言和方言
- ✅ 可定制化(说话人分离、标点等)
**实施步骤**:
```python
1. 调用 /api/beauty/v1/audio/infos 获取录音列表
2. 下载 fileUrl 对应的MP3文件
3. 调用 Whisper API 转写
4. 格式化为对话文本销售+客户
5. 发送到 Dify 陪练分析工作流
```
---
### 方案B等待言迹ASR + Webhook长期方案
**前置条件**:
1. 联系言迹开启ASR分析服务
2. 配置Webhook接收ASR完成事件
3. 或定期轮询ASR结果
**优势**:
- ✅ 使用言迹原生ASR
- ✅ 可能包含说话人识别
- ✅ 实时推送,及时性好
**劣势**:
- ❌ 依赖言迹服务状态
- ❌ 需要额外配置
- ❌ 当前不可用
---
### 方案C混合方案最佳⭐⭐⭐⭐⭐
**策略**: 优先级降级
```
IF 言迹ASR有数据 THEN
使用言迹ASR结果
ELSE
调用本地Whisper转写
END IF
```
**优势**:
- ✅ 充分利用言迹ASR如果可用
- ✅ 保证100%可用性
- ✅ 灵活适应不同场景
---
## 九、已获取的真实数据
### 样本录音文件
| 文件 | 时长 | 大小 | 员工 | 日期 |
|------|------|------|------|------|
| 样本录音-熊媱媱-5秒.mp3 | 5秒 | 20KB | 熊媱媱 | 2025-10-14 |
| 样本录音-熊媱媱-15秒.mp3 | 15秒 | 54KB | 熊媱媱 | 2025-06-17 |
**文件位置**:
```
考培练系统规划/全链路联调/言迹智能工牌/
├── 样本录音-熊媱媱-5秒.mp3
└── 样本录音-熊媱媱-15秒.mp3
```
### 员工数据
共27个员工包含
- 手机号(可用于系统用户匹配)
- 姓名
- openId言迹唯一标识
### 录音元数据
19+条录音记录,包含:
- 录音ID
- 员工信息(手机号、姓名)
- 时间信息(开始、结束、时长)
- 文件信息大小、下载URL
---
## 十、下一步行动建议
### 立即可做(优先级:高)
1. ✅ 集成Whisper进行本地ASR转写
2. ✅ 实现完整的数据获取和分析链路
3. ✅ 测试Dify工作流分析效果
4. ✅ 实现员工手机号自动匹配
### 并行进行(优先级:中)
1. 联系言迹技术支持咨询ASR服务开通
2. 探索来访单同步方案如果需要AI分析结果
3. 配置Webhook接收实时事件推送
### 未来优化(优先级:低)
1. 对接言迹来访单系统
2. 使用言迹原生AI分析结果
3. 实现说话人自动分离
---
## ✅ 结论
**言迹智能工牌集成完全可行!**
虽然ASR分析功能当前不可用但我们成功获取了
- ✅ 完整的员工信息(支持手机号匹配)
- ✅ 真实的录音文件(音质良好,可下载)
- ✅ 完整的录音元数据
**推荐立即采用"本地Whisper转写方案"**,实现端到端功能,后续可根据需要优化为混合方案。
---
## 附录:测试命令记录
### 获取Token
```bash
curl -X GET "https://open.yanjiai.com/oauth/token?grant_type=client_credentials&client_id=1Fld4LCWt2vpJNG5&client_secret=XE8w413qNtJBOdWc2aCezV0yMIHpUuTZ"
```
### 获取员工列表
```bash
curl -X GET "https://open.yanjiai.com/api/wangke/v1/device/list?estateId=516799468310364162" \
-H "Authorization: Bearer $TOKEN"
```
### 获取录音列表
```bash
curl -X POST "https://open.yanjiai.com/api/beauty/v1/audio/infos" \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{"estateId": 516799468310364162, "consultantPhone": "13708515779"}'
```
### 下载录音文件
```bash
curl -L "$AUDIO_URL" -o yanji_audio.mp3
```
### 获取ASR结果
```bash
curl -X GET "https://open.yanjiai.com/api/beauty/v1/audio/asr-analysed?estateId=516799468310364162&audioId=$AUDIO_ID" \
-H "Authorization: Bearer $TOKEN"
```