4.7 KiB
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(): 生成腾讯云 UserSigstartCall(): 创建通话记录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: 诊单IDcaller_id: 呼叫方IDcallee_id: 被叫方IDcall_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秒"
}
]
}
注意事项
- 安全性: UserSig 包含敏感信息,不要在前端硬编码
- 过期时间: UserSig 默认24小时过期,需要定期刷新
- 网络要求: 音视频通话需要良好的网络环境
- 浏览器兼容: 建议使用 Chrome、Edge、Safari 等现代浏览器
- 权限申请: 需要用户授权摄像头和麦克风权限
- 费用: 腾讯云 TRTC 按使用量计费,请注意成本控制
测试流程
- 配置腾讯云 TRTC 参数
- 执行数据库迁移
- 安装前端依赖
- 在诊断列表页面点击"视频通话"
- 授权摄像头和麦克风
- 等待患者接听(需要患者端也集成 TUICallKit)
扩展功能
可以基于此功能扩展:
- 通话录制
- 通话质量监控
- 通话记录回放
- 多人会议
- 屏幕共享
- 实时字幕
技术支持
- 腾讯云 TRTC 文档: https://cloud.tencent.com/document/product/647
- TUICallKit 文档: https://cloud.tencent.com/document/product/647/78742
- 问题反馈: 提交 Issue 到项目仓库