104 lines
2.3 KiB
Markdown
104 lines
2.3 KiB
Markdown
|
|
# Life Echo WebSocket 快速测试指南
|
|||
|
|
|
|||
|
|
## 🚀 快速开始
|
|||
|
|
|
|||
|
|
### 1. 连接地址
|
|||
|
|
```
|
|||
|
|
ws://localhost:8000/ws/conversation/{conversation_id}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 2. 生成对话ID
|
|||
|
|
```bash
|
|||
|
|
# Python
|
|||
|
|
python -c "import uuid; print(uuid.uuid4())"
|
|||
|
|
|
|||
|
|
# 或使用在线工具:https://www.uuidgenerator.net/
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 3. 在 Apifox 中操作
|
|||
|
|
|
|||
|
|
1. **新建 WebSocket 请求**
|
|||
|
|
- 协议:WebSocket
|
|||
|
|
- URL:`ws://localhost:8000/ws/conversation/你的对话ID`
|
|||
|
|
|
|||
|
|
2. **点击连接**
|
|||
|
|
- 应该立即收到 `connect` 消息
|
|||
|
|
|
|||
|
|
3. **发送音频块**
|
|||
|
|
```json
|
|||
|
|
{
|
|||
|
|
"type": "audio_chunk",
|
|||
|
|
"conversation_id": "你的对话ID",
|
|||
|
|
"data": {
|
|||
|
|
"audio_base64": "UklGRiQAAABXQVZFZm10IBAAAAABAAEAQB8AAAB9AAACABAAZGF0YQAAAAA="
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
4. **接收响应**(按顺序)
|
|||
|
|
- `transcript` - 语音转文字
|
|||
|
|
- `agent_response` - Agent 回应
|
|||
|
|
- `tts_audio` - TTS 音频
|
|||
|
|
|
|||
|
|
5. **结束对话**
|
|||
|
|
```json
|
|||
|
|
{
|
|||
|
|
"type": "end_conversation",
|
|||
|
|
"conversation_id": "你的对话ID"
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 📋 消息类型速查
|
|||
|
|
|
|||
|
|
### 客户端发送
|
|||
|
|
|
|||
|
|
| 类型 | 说明 | JSON 示例 |
|
|||
|
|
|------|------|-----------|
|
|||
|
|
| `audio_chunk` | 发送音频 | `{"type":"audio_chunk","data":{"audio_base64":"..."}}` |
|
|||
|
|
| `end_conversation` | 结束对话 | `{"type":"end_conversation"}` |
|
|||
|
|
|
|||
|
|
### 服务端返回
|
|||
|
|
|
|||
|
|
| 类型 | 说明 | 包含字段 |
|
|||
|
|
|------|------|---------|
|
|||
|
|
| `connect` | 连接确认 | `data.status` |
|
|||
|
|
| `transcript` | 语音转文字 | `data.text` |
|
|||
|
|
| `agent_response` | Agent 回应 | `data.text` |
|
|||
|
|
| `tts_audio` | TTS 音频 | `data.audio_base64` |
|
|||
|
|
| `end_conversation` | 结束确认 | `data.status` |
|
|||
|
|
| `error` | 错误信息 | `data.message` |
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 🧪 测试场景
|
|||
|
|
|
|||
|
|
### 场景1:基础对话
|
|||
|
|
1. 连接 → 2. 发送音频 → 3. 接收3条响应 → 4. 结束对话
|
|||
|
|
|
|||
|
|
### 场景2:多轮对话
|
|||
|
|
重复场景1的步骤2-3多次
|
|||
|
|
|
|||
|
|
### 场景3:错误处理
|
|||
|
|
发送无效的 `audio_base64` 数据,查看 `error` 消息
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## ⚠️ 常见问题
|
|||
|
|
|
|||
|
|
**Q: 连接失败?**
|
|||
|
|
A: 检查后端服务是否运行:`curl http://localhost:8000/health`
|
|||
|
|
|
|||
|
|
**Q: 收不到响应?**
|
|||
|
|
A: 检查消息格式和必需字段,查看后端日志
|
|||
|
|
|
|||
|
|
**Q: 音频处理失败?**
|
|||
|
|
A: 检查音频格式和 Base64 编码,确保 ASR/TTS 服务配置正确
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 📝 完整文档
|
|||
|
|
|
|||
|
|
详细测试文档请参考:`WebSocket测试文档.md`
|