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

7.9 KiB
Raw Blame History

视频通话问题排查清单

问题:Web 端呼叫小程序端无法接听

第一步:确认基础环境 ✓

Web 端(医生端)

  • 使用 HTTPS 协议访问(或 localhost
  • 浏览器支持 WebRTCChrome/Edge/Safari
  • 已授予摄像头和麦克风权限
  • 网络连接正常

小程序端(患者端)

  • 已授予摄像头和麦克风权限
  • 网络连接正常
  • 小程序在前台运行(未切到后台)
  • 微信版本支持音视频通话

第二步:确认登录状态 ✓

Web 端检查

打开浏览器控制台,查找日志:

TUICallKit init 方法调用完成
初始化完成,显示通话界面

如果看到这些日志,说明 Web 端登录成功。

小程序端检查

  1. 输入患者ID(如:2
  2. 点击"登录"
  3. 看到提示"登录成功"
  4. 界面显示"当前登录: patient_2"

如果看到这些,说明小程序端登录成功。

第三步:确认 userId 格式 ✓✓✓(最重要)

Web 端日志

在浏览器控制台查找:

=== 发起一对一通话 ===
后端返回的 patientUserId: patient_2
前端传入的 userId: 
最终使用的 targetUserId: patient_2

记录 targetUserId 的值:__________________

小程序端日志

在微信开发者工具控制台查找:

=== 小程序端登录信息 ===
userId: patient_2

记录 userId 的值:__________________

对比结果

  • Web 端的 targetUserId 和小程序端的 userId 完全一致
  • 格式都是 prefix_number(如:patient_2
  • 没有多余的空格或特殊字符

如果不一致,这就是问题所在!

第四步:确认 SDKAppID 一致 ✓

Web 端日志

签名获取成功: { 
  doctorUserId: doctor_1, 
  patientUserId: patient_2,
  sdkAppId: 1400xxxxxx 
}

记录 sdkAppId__________________

小程序端日志

=== 小程序端登录信息 ===
sdkAppId: 1400xxxxxx

记录 sdkAppId__________________

对比结果

  • 两个 SDKAppID 完全一致

如果不一致,双方无法通话!

第五步:测试呼叫流程 ✓

从 Web 端呼叫小程序端

  1. 准备工作

    • 小程序端已登录(显示"当前登录: patient_2"
    • 小程序在前台运行
    • Web 端已打开患者详情页
  2. 发起呼叫

    • Web 端点击"视频通话"按钮
    • Web 端显示"等待对方接听..."
    • 浏览器控制台显示"通话已发起,目标用户: patient_2"
  3. 小程序端应该

    • 自动弹出来电界面
    • 显示来电提示音
    • 显示"接听"和"拒绝"按钮
    • 控制台显示收到来电信息
  4. 如果小程序端没反应

    • 检查控制台是否有错误日志
    • 确认 userId 格式是否一致
    • 确认小程序是否在前台
    • 尝试重新登录小程序

从小程序端呼叫 Web 端

  1. 准备工作

    • Web 端已登录(医生已登录系统)
    • Web 端页面保持打开
    • 小程序端已登录
  2. 发起呼叫

    • 小程序端输入医生ID1doctor_1
    • 点击"呼叫"按钮
    • 小程序显示"正在呼叫..."
    • 控制台显示"准备呼叫用户: doctor_1"
  3. Web 端应该

    • 自动弹出来电窗口
    • 显示来电提示
    • 显示"接听"和"拒绝"按钮
    • 控制台显示收到来电信息
  4. 如果 Web 端没反应

    • 检查控制台是否有错误日志
    • 确认 userId 格式是否一致
    • 确认 Web 端是否已登录
    • 尝试刷新页面重新登录

第六步:常见错误代码 ✓

错误代码 错误信息 原因 解决方案
60006 不支持 WebRTC 非 HTTPS 环境 使用 HTTPS 或 localhost
60007 设备不支持 浏览器不支持 更换浏览器
60008 对方拒绝 用户点击拒绝 正常情况
60009 对方未接听 超时未接听 正常情况
60010 对方忙线 对方正在通话中 稍后再试
60011 对方不在线 userId 不匹配或未登录 检查 userId 格式
60012 网络连接失败 网络问题 检查网络
60013 权限未授予 摄像头/麦克风权限 授予权限

第七步:后端接口检查 ✓

医生端接口(Web

请求:POST /api/tcm/getCallSignature

{
  "diagnosis_id": 1,
  "patient_id": 2
}

期望响应:

{
  "code": 1,
  "data": {
    "userId": "doctor_1",           // 医生自己的ID
    "patientUserId": "patient_2",   // 要呼叫的患者ID
    "sdkAppId": "1400xxxxxx",
    "userSig": "eJw1..."
  }
}

检查点:

  • userId 格式正确(doctor_X
  • patientUserId 格式正确(patient_X
  • sdkAppId 正确
  • userSig 不为空

患者端接口(小程序)

请求:GET /api/tcm/getPatientSignature?patient_id=2

期望响应:

{
  "code": 1,
  "data": {
    "userId": "patient_2",          // 患者自己的ID
    "sdkAppId": "1400xxxxxx",
    "userSig": "eJw1..."
  }
}

检查点:

  • userId 格式正确(patient_X
  • sdkAppId 与医生端一致
  • userSig 不为空

第八步:网络抓包分析(高级)✓

如果以上都正常但仍无法通话,可以抓包分析:

工具

  • Chrome DevToolsNetwork 标签)
  • 微信开发者工具(Network 标签)
  • Wireshark(专业工具)

检查点

  1. 信令服务器连接

    • WebSocket 连接成功
    • 收到服务器响应
  2. 呼叫信令

    • 发送 INVITE 信令
    • 收到 RINGING 响应
    • 收到 ACCEPT 或 REJECT
  3. 媒体流

    • ICE 候选交换成功
    • DTLS 握手成功
    • RTP 数据包传输

问题解决方案汇总

问题 1userId 格式不一致

症状: 错误代码 60011(对方不在线)

解决:

  1. 检查后端接口返回的 userId 格式
  2. 确保都使用 prefix_number 格式
  3. 修改后端代码统一格式

问题 2SDKAppID 不一致

症状: 初始化失败或无法通话

解决:

  1. 检查后端配置文件
  2. 确保 Web 端和小程序端使用同一个腾讯云应用
  3. 重新生成 userSig

问题 3:小程序未在线

症状: 小程序端无反应

解决:

  1. 确认小程序已登录
  2. 确认小程序在前台运行
  3. 尝试重新登录

问题 4:权限未授予

症状: 无法访问摄像头/麦克风

解决:

  1. 小程序:设置 → 权限管理 → 允许摄像头和麦克风
  2. Web:浏览器地址栏 → 权限设置 → 允许摄像头和麦克风
  3. 重新加载页面

问题 5:网络问题

症状: 连接失败或断开

解决:

  1. 检查网络连接
  2. 尝试切换网络(WiFi/4G
  3. 检查防火墙设置
  4. 确认服务器可访问

成功标志

当一切正常时,你应该看到:

Web 端控制台

WebRTC 环境检测: { isHttps: true, hasGetUserMedia: true, hasRTCPeerConnection: true }
签名获取成功: { doctorUserId: "doctor_1", patientUserId: "patient_2", sdkAppId: "1400xxxxxx" }
TUICallKit init 方法调用完成
初始化完成,显示通话界面
=== 发起一对一通话 ===
最终使用的 targetUserId: patient_2
通话已发起,目标用户: patient_2
>>> 正在呼叫
>>> 通话已接通

小程序端控制台

获取签名成功: { userId: "patient_2", sdkAppId: "1400xxxxxx", ... }
=== 小程序端登录信息 ===
userId: patient_2
TUICallKit 初始化成功, userId: patient_2
[收到来电] from: doctor_1
[通话接通]

需要帮助?

如果按照清单检查后仍然无法解决,请提供:

  1. Web 端完整控制台日志(截图)
  2. 小程序端完整控制台日志(截图)
  3. 后端接口响应数据(隐藏 userSig)
  4. 具体错误代码和提示信息
  5. 测试环境信息(开发/生产,域名等)
  6. 本清单的检查结果

最后更新: 2024-03-04 版本: 1.0