新增功能
This commit is contained in:
@@ -0,0 +1,202 @@
|
||||
# 快速修复:Web 端呼叫小程序端无法接听
|
||||
|
||||
## 核心问题
|
||||
|
||||
**userId 格式不匹配**是最常见的原因。
|
||||
|
||||
## 立即检查
|
||||
|
||||
### 1. 打开浏览器控制台(Web 端)
|
||||
|
||||
在发起通话前,查看日志:
|
||||
```
|
||||
=== 发起一对一通话 ===
|
||||
后端返回的 patientUserId: patient_2
|
||||
最终使用的 targetUserId: patient_2
|
||||
```
|
||||
|
||||
### 2. 打开微信开发者工具控制台(小程序端)
|
||||
|
||||
在登录后,查看日志:
|
||||
```
|
||||
=== 小程序端登录信息 ===
|
||||
userId: patient_2
|
||||
```
|
||||
|
||||
### 3. 对比两个 userId
|
||||
|
||||
**必须完全一致!**
|
||||
|
||||
- ✅ 正确:Web 呼叫 `patient_2`,小程序登录为 `patient_2`
|
||||
- ❌ 错误:Web 呼叫 `patient_2`,小程序登录为 `2`
|
||||
- ❌ 错误:Web 呼叫 `2`,小程序登录为 `patient_2`
|
||||
|
||||
## 快速修复步骤
|
||||
|
||||
### 修复 1:确保后端返回正确格式
|
||||
|
||||
检查后端接口 `/api/tcm/getCallSignature` 和 `/api/tcm/getPatientSignature`:
|
||||
|
||||
```php
|
||||
// 医生端(Web)
|
||||
return [
|
||||
'userId' => 'doctor_' . $doctorId, // 医生自己的ID
|
||||
'patientUserId' => 'patient_' . $patientId, // 要呼叫的患者ID
|
||||
'sdkAppId' => $sdkAppId,
|
||||
'userSig' => $userSig
|
||||
];
|
||||
|
||||
// 患者端(小程序)
|
||||
return [
|
||||
'userId' => 'patient_' . $patientId, // 患者自己的ID
|
||||
'sdkAppId' => $sdkAppId,
|
||||
'userSig' => $userSig
|
||||
];
|
||||
```
|
||||
|
||||
### 修复 2:小程序端已更新
|
||||
|
||||
小程序端代码已更新,支持自动转换:
|
||||
- 输入纯数字 `1` → 自动转换为 `doctor_1`
|
||||
- 输入完整格式 `doctor_1` → 直接使用
|
||||
|
||||
### 修复 3:测试流程
|
||||
|
||||
**场景 1:Web 端(医生)呼叫小程序端(患者)**
|
||||
|
||||
1. 小程序端操作:
|
||||
- 输入患者ID:`2`
|
||||
- 点击"登录"
|
||||
- 看到"当前登录: patient_2"
|
||||
|
||||
2. Web 端操作:
|
||||
- 打开患者详情页
|
||||
- 点击"视频通话"按钮
|
||||
- 系统自动使用 `patient_2` 发起呼叫
|
||||
|
||||
3. 小程序端应该:
|
||||
- 自动弹出来电界面
|
||||
- 显示来电提示
|
||||
- 可以接听或拒绝
|
||||
|
||||
**场景 2:小程序端(患者)呼叫 Web 端(医生)**
|
||||
|
||||
1. Web 端操作:
|
||||
- 医生登录系统(自动登录为 `doctor_1`)
|
||||
- 保持页面打开
|
||||
|
||||
2. 小程序端操作:
|
||||
- 已登录为 `patient_2`
|
||||
- 输入医生ID:`1` 或 `doctor_1`
|
||||
- 点击"呼叫"
|
||||
|
||||
3. Web 端应该:
|
||||
- 自动弹出来电界面
|
||||
- 显示来电提示
|
||||
- 可以接听或拒绝
|
||||
|
||||
## 常见错误及解决
|
||||
|
||||
### 错误 1:对方不在线(60011)
|
||||
|
||||
**原因:**
|
||||
- 对方未登录
|
||||
- userId 格式不匹配
|
||||
- 对方已退出登录
|
||||
|
||||
**解决:**
|
||||
1. 确认对方已登录
|
||||
2. 检查 userId 格式是否一致
|
||||
3. 让对方重新登录
|
||||
|
||||
### 错误 2:初始化失败
|
||||
|
||||
**原因:**
|
||||
- SDKAppID 不一致
|
||||
- userSig 过期或无效
|
||||
- 网络连接问题
|
||||
|
||||
**解决:**
|
||||
1. 检查双方 SDKAppID 是否相同
|
||||
2. 重新获取 userSig
|
||||
3. 检查网络连接
|
||||
|
||||
### 错误 3:无法访问摄像头/麦克风
|
||||
|
||||
**原因:**
|
||||
- 小程序权限未授予
|
||||
- 浏览器权限未授予
|
||||
- 设备被其他应用占用
|
||||
|
||||
**解决:**
|
||||
1. 小程序:在设置中允许摄像头和麦克风权限
|
||||
2. 浏览器:点击地址栏的摄像头图标,允许权限
|
||||
3. 关闭其他占用设备的应用
|
||||
|
||||
## 验证清单
|
||||
|
||||
在发起通话前,确认:
|
||||
|
||||
- [ ] 小程序端显示"当前登录: patient_X"
|
||||
- [ ] Web 端控制台显示"最终使用的 targetUserId: patient_X"
|
||||
- [ ] 两个 userId 完全一致
|
||||
- [ ] 小程序在前台运行(未切换到后台)
|
||||
- [ ] 双方网络连接正常
|
||||
- [ ] 双方已授予摄像头和麦克风权限
|
||||
|
||||
## 测试命令
|
||||
|
||||
### 在小程序端控制台测试
|
||||
|
||||
```javascript
|
||||
// 1. 检查登录状态
|
||||
console.log('当前登录:', currentUserId.value)
|
||||
|
||||
// 2. 手动发起呼叫测试
|
||||
TUICallKitAPI.calls({
|
||||
userIDList: ['doctor_1'], // 替换为实际的医生ID
|
||||
type: 2
|
||||
}).then(() => {
|
||||
console.log('呼叫成功')
|
||||
}).catch(err => {
|
||||
console.error('呼叫失败:', err)
|
||||
})
|
||||
```
|
||||
|
||||
### 在 Web 端控制台测试
|
||||
|
||||
```javascript
|
||||
// 1. 检查登录状态
|
||||
console.log('医生登录信息:', {
|
||||
userId: '从后端获取',
|
||||
patientUserId: '要呼叫的患者ID'
|
||||
})
|
||||
|
||||
// 2. 手动发起呼叫测试
|
||||
TUICallKitServer.call({
|
||||
userID: 'patient_2', // 替换为实际的患者ID
|
||||
type: TUICallType.VIDEO_CALL
|
||||
}).then(() => {
|
||||
console.log('呼叫成功')
|
||||
}).catch(err => {
|
||||
console.error('呼叫失败:', err)
|
||||
})
|
||||
```
|
||||
|
||||
## 仍然无法解决?
|
||||
|
||||
如果按照以上步骤仍然无法解决,请检查:
|
||||
|
||||
1. **后端日志**:查看签名生成是否正确
|
||||
2. **网络抓包**:查看信令是否正常发送
|
||||
3. **腾讯云控制台**:查看实时通话监控
|
||||
4. **版本兼容性**:确保 Web 端和小程序端使用兼容的 SDK 版本
|
||||
|
||||
## 联系方式
|
||||
|
||||
提供以下信息以便快速定位问题:
|
||||
|
||||
1. Web 端完整控制台日志(截图)
|
||||
2. 小程序端完整控制台日志(截图)
|
||||
3. 后端返回的签名数据(隐藏敏感信息)
|
||||
4. 具体错误代码和提示信息
|
||||
Reference in New Issue
Block a user