5.4 KiB
5.4 KiB
Web 端呼叫小程序端调试指南
问题现象
Web 端呼叫小程序端时,小程序端无法接听通话。
常见原因及解决方案
1. userId 格式不一致(最常见)
问题:
- Web 端使用
doctor_1格式 - 小程序端使用
patient_2格式 - 呼叫时 userId 格式不匹配
解决方案: 确保双方使用相同的 userId 格式规则。
检查步骤:
- 查看 Web 端日志(浏览器控制台):
// 在 admin/src/components/video-call/index.vue 中查找
console.log('=== 发起一对一通话 ===')
console.log('后端返回的 patientUserId:', res.patientUserId)
console.log('最终使用的 targetUserId:', targetUserId)
- 查看小程序端日志(微信开发者工具控制台):
// 在 wx/TUICallKit/pages/call.vue 中查找
console.log('=== 小程序端登录信息 ===')
console.log('userId:', userId)
console.log('准备呼叫用户:', targetUserId)
- 确保格式一致:
- 如果 Web 端医生登录为
doctor_1,小程序端患者登录为patient_2 - Web 端呼叫时应使用
patient_2 - 小程序端呼叫时应使用
doctor_1
- 如果 Web 端医生登录为
2. SDKAppID 不一致
问题: Web 端和小程序端使用了不同的腾讯云应用。
解决方案: 确保双方使用相同的 SDKAppID。
检查步骤:
// Web 端
console.log('Web 端 SDKAppID:', res.sdkAppId)
// 小程序端
console.log('小程序端 SDKAppID:', sdkAppId)
3. 小程序端未在线
问题: 小程序端未登录或已退出登录状态。
解决方案:
- 确保小程序端已成功登录
- 查看小程序端是否显示"当前登录: patient_X"
- 检查小程序端是否在前台运行
4. 网络权限问题
问题: 小程序端网络权限配置不正确。
解决方案:
检查 wx/TUICallKit/manifest.json 或 project.config.json:
{
"permission": {
"scope.camera": {
"desc": "需要使用您的摄像头进行视频通话"
},
"scope.record": {
"desc": "需要使用您的麦克风进行语音通话"
}
},
"requiredPrivateInfos": [
"getLocation",
"chooseLocation",
"onLocationChange",
"startLocationUpdate"
]
}
5. 信令服务器连接问题
问题: 小程序端未成功连接到腾讯云信令服务器。
解决方案:
- 检查小程序端初始化是否成功
- 查看是否有网络错误日志
- 确认 userSig 是否有效(未过期)
调试步骤
步骤 1:验证登录状态
Web 端:
// 在浏览器控制台执行
console.log('Web 端登录信息:', {
userId: res.userId,
sdkAppId: res.sdkAppId
})
小程序端:
// 在微信开发者工具控制台查看
console.log('小程序端登录信息:', {
userId: currentUserId.value,
isLogin: isLogin.value
})
步骤 2:验证呼叫参数
Web 端呼叫时:
// 查看控制台输出
console.log('准备发起一对一通话,目标用户:', targetUserId)
小程序端应该收到:
- 来电通知
- TUICallKit 界面自动弹出
步骤 3:检查错误日志
Web 端可能的错误:
60011: 对方不在线60010: 对方忙线中60008: 对方拒绝了通话
小程序端可能的错误:
- 初始化失败
- 网络连接失败
- 权限未授予
测试方案
方案 1:同一设备测试(推荐)
- 在电脑上打开 Web 端(医生端)
- 在手机上打开小程序(患者端)
- 小程序端先登录(输入患者ID,如:2)
- Web 端发起呼叫(目标用户应为
patient_2)
方案 2:双向测试
-
Web 呼叫小程序:
- 小程序端登录:患者ID = 2(登录为
patient_2) - Web 端呼叫:目标用户 =
patient_2
- 小程序端登录:患者ID = 2(登录为
-
小程序呼叫 Web:
- Web 端登录:医生ID = 1(登录为
doctor_1) - 小程序端呼叫:输入
doctor_1或1(会自动转换为doctor_1)
- Web 端登录:医生ID = 1(登录为
后端接口检查
确保后端返回正确的 userId 格式:
// 医生端获取签名
{
"userId": "doctor_1", // 医生自己的ID
"patientUserId": "patient_2", // 要呼叫的患者ID
"sdkAppId": "1400xxxxx",
"userSig": "eJw1..."
}
// 患者端获取签名
{
"userId": "patient_2", // 患者自己的ID
"sdkAppId": "1400xxxxx",
"userSig": "eJw1..."
}
常用调试命令
查看小程序端 TUICallKit 状态
// 在微信开发者工具控制台执行
console.log('TUICallKit 状态:', TUICallKitAPI)
手动测试呼叫
// 在小程序端控制台执行
TUICallKitAPI.calls({
userIDList: ['doctor_1'],
type: 2
}).then(() => {
console.log('呼叫成功')
}).catch(err => {
console.error('呼叫失败:', err)
})
问题排查清单
- Web 端和小程序端使用相同的 SDKAppID
- userId 格式一致(都使用
prefix_id格式) - 小程序端已成功登录并在线
- 小程序端在前台运行(未切换到后台)
- 网络连接正常
- 摄像头和麦克风权限已授予
- userSig 未过期(有效期通常为 7 天)
- 后端接口返回正确的 userId
联系支持
如果以上方法都无法解决问题,请提供以下信息:
- Web 端控制台完整日志
- 小程序端控制台完整日志
- 后端返回的签名数据(隐藏 userSig)
- 具体的错误提示信息
- 测试环境(开发/生产)