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

4.7 KiB

音视频通话功能使用说明

功能概述

基于腾讯云 TRTC(实时音视频)和 TUICallKit 组件实现的医患音视频通话功能。

前端实现

1. 安装依赖

cd admin
npm install @tencentcloud/call-uikit-vue

2. 组件说明

  • 位置: admin/src/components/video-call/index.vue
  • 功能:
    • 初始化 TUICallKit
    • 发起视频/语音通话
    • 监听通话状态
    • 记录通话时长

3. API 接口

  • 位置: admin/src/api/tcm.ts
  • 接口列表:
    • getCallSignature: 获取通话签名
    • startCall: 发起通话
    • endCall: 结束通话
    • getCallRecords: 获取通话记录

4. 使用方式

在诊断列表页面点击"视频通话"按钮即可发起通话。

后端实现

1. 控制器

  • 位置: server/app/adminapi/controller/tcm/DiagnosisController.php
  • 方法:
    • getCallSignature(): 生成腾讯云 UserSig
    • startCall(): 创建通话记录
    • endCall(): 更新通话记录
    • getCallRecords(): 查询通话记录

2. 逻辑层

  • 位置: server/app/adminapi/logic/tcm/DiagnosisLogic.php
  • 核心方法:
    • generateUserSig(): 生成 UserSig 签名
    • getTrtcConfig(): 获取 TRTC 配置

3. 数据模型

  • 位置: server/app/common/model/tcm/CallRecord.php
  • 表名: la_tcm_call_record
  • 字段:
    • diagnosis_id: 诊单ID
    • caller_id: 呼叫方ID
    • callee_id: 被叫方ID
    • call_type: 通话类型(1-语音 2-视频)
    • status: 状态(1-进行中 2-已结束 3-未接听 4-已取消)
    • start_time: 开始时间
    • end_time: 结束时间
    • duration: 通话时长

4. 数据库迁移

# 执行 SQL 文件创建通话记录表
mysql -u root -p database_name < server/sql/tcm_call_record.sql

配置说明

1. 腾讯云 TRTC 配置

在腾讯云控制台获取配置信息:https://console.cloud.tencent.com/trtc

2. 后端配置

编辑 server/.env 文件,添加以下配置:

# 腾讯云实时音视频(TRTC)配置
TRTC_SDK_APP_ID=你的SDKAppID
TRTC_SECRET_KEY=你的密钥
TRTC_ENABLE=true

或者直接修改 server/config/project.php:

'trtc' => [
    'sdkAppId' => 1400000000, // 你的 SDKAppID
    'secretKey' => 'your_secret_key', // 你的密钥
    'expireTime' => 86400, // UserSig 过期时间(秒)
    'enable' => true,
]

3. 权限配置

确保管理员拥有 tcm.diagnosis/video-call 权限。

API 接口文档

1. 获取通话签名

接口: POST /adminapi/tcm.diagnosis/getCallSignature

请求参数:

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

返回数据:

{
  "code": 1,
  "msg": "success",
  "data": {
    "sdkAppId": 1400000000,
    "userId": "doctor_1",
    "userSig": "eJw1jk...",
    "expireTime": 86400
  }
}

2. 发起通话

接口: POST /adminapi/tcm.diagnosis/startCall

请求参数:

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

3. 结束通话

接口: POST /adminapi/tcm.diagnosis/endCall

请求参数:

{
  "diagnosis_id": 1
}

4. 获取通话记录

接口: GET /adminapi/tcm.diagnosis/getCallRecords

请求参数:

?diagnosis_id=1

返回数据:

{
  "code": 1,
  "msg": "success",
  "data": [
    {
      "id": 1,
      "diagnosis_id": 1,
      "caller_id": 1,
      "caller_type": "doctor",
      "callee_id": 10001,
      "callee_type": "patient",
      "call_type": 2,
      "status": 2,
      "start_time": 1709222400,
      "end_time": 1709222700,
      "duration": 300,
      "start_time_text": "2024-03-01 10:00:00",
      "end_time_text": "2024-03-01 10:05:00",
      "duration_text": "5分0秒"
    }
  ]
}

注意事项

  1. 安全性: UserSig 包含敏感信息,不要在前端硬编码
  2. 过期时间: UserSig 默认24小时过期,需要定期刷新
  3. 网络要求: 音视频通话需要良好的网络环境
  4. 浏览器兼容: 建议使用 Chrome、Edge、Safari 等现代浏览器
  5. 权限申请: 需要用户授权摄像头和麦克风权限
  6. 费用: 腾讯云 TRTC 按使用量计费,请注意成本控制

测试流程

  1. 配置腾讯云 TRTC 参数
  2. 执行数据库迁移
  3. 安装前端依赖
  4. 在诊断列表页面点击"视频通话"
  5. 授权摄像头和麦克风
  6. 等待患者接听(需要患者端也集成 TUICallKit)

扩展功能

可以基于此功能扩展:

  • 通话录制
  • 通话质量监控
  • 通话记录回放
  • 多人会议
  • 屏幕共享
  • 实时字幕

技术支持