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

230 lines
4.7 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 音视频通话功能使用说明
## 功能概述
基于腾讯云 TRTC(实时音视频)和 TUICallKit 组件实现的医患音视频通话功能。
## 前端实现
### 1. 安装依赖
```bash
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. 数据库迁移
```bash
# 执行 SQL 文件创建通话记录表
mysql -u root -p database_name < server/sql/tcm_call_record.sql
```
## 配置说明
### 1. 腾讯云 TRTC 配置
在腾讯云控制台获取配置信息:https://console.cloud.tencent.com/trtc
### 2. 后端配置
编辑 `server/.env` 文件,添加以下配置:
```env
# 腾讯云实时音视频(TRTC)配置
TRTC_SDK_APP_ID=你的SDKAppID
TRTC_SECRET_KEY=你的密钥
TRTC_ENABLE=true
```
或者直接修改 `server/config/project.php`:
```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`
**请求参数**:
```json
{
"diagnosis_id": 1,
"patient_id": 10001
}
```
**返回数据**:
```json
{
"code": 1,
"msg": "success",
"data": {
"sdkAppId": 1400000000,
"userId": "doctor_1",
"userSig": "eJw1jk...",
"expireTime": 86400
}
}
```
### 2. 发起通话
**接口**: `POST /adminapi/tcm.diagnosis/startCall`
**请求参数**:
```json
{
"diagnosis_id": 1,
"patient_id": 10001,
"call_type": 2
}
```
### 3. 结束通话
**接口**: `POST /adminapi/tcm.diagnosis/endCall`
**请求参数**:
```json
{
"diagnosis_id": 1
}
```
### 4. 获取通话记录
**接口**: `GET /adminapi/tcm.diagnosis/getCallRecords`
**请求参数**:
```
?diagnosis_id=1
```
**返回数据**:
```json
{
"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
## 扩展功能
可以基于此功能扩展:
- 通话录制
- 通话质量监控
- 通话记录回放
- 多人会议
- 屏幕共享
- 实时字幕
## 技术支持
- 腾讯云 TRTC 文档: https://cloud.tencent.com/document/product/647
- TUICallKit 文档: https://cloud.tencent.com/document/product/647/78742
- 问题反馈: 提交 Issue 到项目仓库