Files
zyt/wx/TUICallKit/CALL_DEBUG_GUIDE.md
2026-03-04 15:32:30 +08:00

5.4 KiB
Raw Permalink Blame History

Web 端呼叫小程序端调试指南

问题现象

Web 端呼叫小程序端时,小程序端无法接听通话。

常见原因及解决方案

1. userId 格式不一致(最常见)

问题:

  • Web 端使用 doctor_1 格式
  • 小程序端使用 patient_2 格式
  • 呼叫时 userId 格式不匹配

解决方案: 确保双方使用相同的 userId 格式规则。

检查步骤:

  1. 查看 Web 端日志(浏览器控制台):
// 在 admin/src/components/video-call/index.vue 中查找
console.log('=== 发起一对一通话 ===')
console.log('后端返回的 patientUserId:', res.patientUserId)
console.log('最终使用的 targetUserId:', targetUserId)
  1. 查看小程序端日志(微信开发者工具控制台):
// 在 wx/TUICallKit/pages/call.vue 中查找
console.log('=== 小程序端登录信息 ===')
console.log('userId:', userId)
console.log('准备呼叫用户:', targetUserId)
  1. 确保格式一致
    • 如果 Web 端医生登录为 doctor_1,小程序端患者登录为 patient_2
    • Web 端呼叫时应使用 patient_2
    • 小程序端呼叫时应使用 doctor_1

2. SDKAppID 不一致

问题: Web 端和小程序端使用了不同的腾讯云应用。

解决方案: 确保双方使用相同的 SDKAppID。

检查步骤:

// Web 端
console.log('Web 端 SDKAppID:', res.sdkAppId)

// 小程序端
console.log('小程序端 SDKAppID:', sdkAppId)

3. 小程序端未在线

问题: 小程序端未登录或已退出登录状态。

解决方案:

  1. 确保小程序端已成功登录
  2. 查看小程序端是否显示"当前登录: patient_X"
  3. 检查小程序端是否在前台运行

4. 网络权限问题

问题: 小程序端网络权限配置不正确。

解决方案: 检查 wx/TUICallKit/manifest.jsonproject.config.json

{
  "permission": {
    "scope.camera": {
      "desc": "需要使用您的摄像头进行视频通话"
    },
    "scope.record": {
      "desc": "需要使用您的麦克风进行语音通话"
    }
  },
  "requiredPrivateInfos": [
    "getLocation",
    "chooseLocation",
    "onLocationChange",
    "startLocationUpdate"
  ]
}

5. 信令服务器连接问题

问题: 小程序端未成功连接到腾讯云信令服务器。

解决方案:

  1. 检查小程序端初始化是否成功
  2. 查看是否有网络错误日志
  3. 确认 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:同一设备测试(推荐)

  1. 在电脑上打开 Web 端(医生端)
  2. 在手机上打开小程序(患者端)
  3. 小程序端先登录(输入患者ID,如:2
  4. Web 端发起呼叫(目标用户应为 patient_2

方案 2:双向测试

  1. Web 呼叫小程序:

    • 小程序端登录:患者ID = 2(登录为 patient_2
    • Web 端呼叫:目标用户 = patient_2
  2. 小程序呼叫 Web

    • Web 端登录:医生ID = 1(登录为 doctor_1
    • 小程序端呼叫:输入 doctor_11(会自动转换为 doctor_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

联系支持

如果以上方法都无法解决问题,请提供以下信息:

  1. Web 端控制台完整日志
  2. 小程序端控制台完整日志
  3. 后端返回的签名数据(隐藏 userSig)
  4. 具体的错误提示信息
  5. 测试环境(开发/生产)