Files
zyt/HOW_TO_TEST.md
T
2026-03-04 15:32:30 +08:00

335 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.
# 🧪 如何测试音视频通话功能
## 问题说明
当前错误的原因:**患者端没有登录 TRTC**
```
错误: patient_1 用户不存在
原因: 只有医生端登录了,患者端没有登录
```
这就像打电话:
- ✅ 你的手机开机了(医生端已初始化)
- ❌ 对方手机没开机(患者端未初始化)
- ❌ 所以无法接通
## 快速测试方案
### 方案 1: 使用测试页面(推荐)⭐
#### 步骤 1: 准备两个浏览器窗口
- **窗口 1**: Chrome 正常模式(医生端)
- **窗口 2**: Chrome 无痕模式(患者端)
#### 步骤 2: 初始化患者端
在**窗口 2**中:
1. 访问测试页面(需要先添加路由):
```
http://localhost:5173/#/test/patient-call
```
2. 输入患者ID`1`
3. 点击"初始化患者端"
4. 等待提示"患者端初始化成功,等待来电..."
#### 步骤 3: 发起通话
在**窗口 1**中:
1. 登录后台管理系统
2. 进入"中医诊单"页面
3. 找到患者ID为1的诊单
4. 点击"视频通话"按钮
5. 点击"开始通话"
6. 等待初始化完成(约3秒)
#### 步骤 4: 接听通话
在**窗口 2**中:
1. 应该会收到来电提示
2. 点击"接听"按钮
3. 开始视频通话
#### 步骤 5: 验证功能
- ✅ 双方都能看到视频画面
- ✅ 双方都能听到声音
- ✅ 可以正常挂断
- ✅ 通话记录已保存
---
### 方案 2: 使用腾讯云官方 Demo
如果不想创建测试页面,可以使用腾讯云官方 Demo:
#### 步骤 1: 打开 Demo
访问:https://web.sdk.qcloud.com/trtc/webrtc/demo/latest/official-demo/index.html
#### 步骤 2: 配置信息
1. 输入你的 **SDKAppID**(从 `.env` 文件获取)
2. 输入你的 **SecretKey**(从 `.env` 文件获取)
3. 输入 **UserID**: `patient_1`
4. 点击"生成 UserSig"
5. 点击"进入房间"
#### 步骤 3: 发起通话
在你的系统中:
1. 登录后台
2. 进入诊断列表
3. 点击"视频通话"
4. 发起通话
#### 步骤 4: 接听
在 Demo 页面中应该会收到来电提示。
---
### 方案 3: 自呼叫测试(仅测试初始化)
如果只想测试初始化是否成功,可以呼叫自己:
修改前端代码:
```typescript
// admin/src/components/video-call/index.vue
// 在 startCall 方法中
// 修改前
await TUICallKitServer.call({
userID: callInfo.value.userId, // patient_1
type: TUICallType.VIDEO_CALL
})
// 修改后(呼叫自己)
await TUICallKitServer.call({
userID: res.userId, // doctor_1(自己)
type: TUICallType.VIDEO_CALL
})
```
这样可以验证:
- ✅ 初始化是否成功
- ✅ 签名是否正确
- ✅ 配置是否正确
但无法测试真实的双向通话。
---
## 添加测试页面路由
### 步骤 1: 创建路由文件
如果还没有测试路由,创建:
```typescript
// admin/src/router/modules/test.ts
export default {
path: '/test',
name: 'Test',
meta: { title: '测试' },
children: [
{
path: 'patient-call',
name: 'PatientCallTest',
component: () => import('@/views/test/patient-call.vue'),
meta: { title: '患者端测试' }
}
]
}
```
### 步骤 2: 导入路由
```typescript
// admin/src/router/index.ts
import testRoutes from './modules/test'
const routes = [
// ... 其他路由
testRoutes
]
```
### 步骤 3: 访问测试页面
```
http://localhost:5173/#/test/patient-call
```
---
## 完整测试流程图
```
┌─────────────────────────────────────────────────────────────┐
│ 测试准备 │
├─────────────────────────────────────────────────────────────┤
│ 1. 打开两个浏览器窗口 │
│ - 窗口1: Chrome(医生端) │
│ - 窗口2: Chrome 无痕模式(患者端) │
└─────────────────────────────────────────────────────────────┘
┌─────────────────────────────────────────────────────────────┐
│ 窗口2: 初始化患者端 │
├─────────────────────────────────────────────────────────────┤
│ 1. 访问 /test/patient-call │
│ 2. 输入患者ID: 1 │
│ 3. 点击"初始化患者端" │
│ 4. 等待提示"初始化成功" │
│ 5. 状态: 在线,等待来电 │
└─────────────────────────────────────────────────────────────┘
┌─────────────────────────────────────────────────────────────┐
│ 窗口1: 发起通话 │
├─────────────────────────────────────────────────────────────┤
│ 1. 登录后台管理系统 │
│ 2. 进入"中医诊单"页面 │
│ 3. 找到患者ID=1的诊单 │
│ 4. 点击"视频通话" │
│ 5. 点击"开始通话" │
│ 6. 等待初始化(约3秒) │
│ 7. 通话发起成功 │
└─────────────────────────────────────────────────────────────┘
┌─────────────────────────────────────────────────────────────┐
│ 窗口2: 接听通话 │
├─────────────────────────────────────────────────────────────┤
│ 1. 收到来电提示 │
│ 2. 点击"接听" │
│ 3. 开始视频通话 │
└─────────────────────────────────────────────────────────────┘
┌─────────────────────────────────────────────────────────────┐
│ 验证功能 │
├─────────────────────────────────────────────────────────────┤
│ ✅ 视频画面正常 │
│ ✅ 音频正常 │
│ ✅ 可以挂断 │
│ ✅ 通话记录保存 │
└─────────────────────────────────────────────────────────────┘
```
---
## 常见问题
### Q1: 患者端没有收到来电
**检查清单**:
- [ ] 患者端是否已初始化?
- [ ] 患者ID是否匹配?(patient_1
- [ ] 两个窗口是否使用了不同的浏览器/无痕模式?
- [ ] 网络是否正常?
**调试方法**:
```javascript
// 在患者端控制台执行
console.log('当前用户ID:', window.TUICallKitServer?.userID)
// 应该显示: patient_1
```
### Q2: 提示用户不存在
**原因**: 患者端没有初始化
**解决方案**:
1. 先初始化患者端
2. 再发起通话
### Q3: 两个窗口都是同一个用户
**原因**: 使用了相同的浏览器和 localStorage
**解决方案**:
- 使用无痕模式
- 或使用不同的浏览器
### Q4: 初始化失败
**检查**:
- [ ] 后端配置是否正确?
- [ ] SDKAppID 和 SecretKey 是否正确?
- [ ] 网络是否正常?
- [ ] 浏览器是否支持 WebRTC
---
## 生产环境部署
在生产环境中,需要开发完整的患者端应用:
### 1. 患者端 H5/小程序
- 集成 TUICallKit
- 实现登录功能
- 监听来电
- 推送通知
### 2. 在线状态管理
- 检查患者是否在线
- 如果不在线,提示医生
- 发送推送通知
### 3. 通话记录
- 保存通话记录
- 统计通话时长
- 生成通话报表
---
## 相关文档
- [测试指南](./admin/TESTING_GUIDE.md) - 详细的测试说明
- [关键修复](./admin/CRITICAL_FIX.md) - 初始化问题修复
- [故障排查](./admin/TROUBLESHOOTING.md) - 常见问题解决
---
## 快速命令
```bash
# 启动开发服务器
cd admin
npm run dev
# 访问测试页面
# http://localhost:5173/#/test/patient-call
# 查看后端日志
tail -f server/runtime/log/error.log
```
---
**祝测试顺利!** 🎉