230 lines
4.7 KiB
Markdown
230 lines
4.7 KiB
Markdown
# 音视频通话功能使用说明
|
||
|
||
## 功能概述
|
||
|
||
基于腾讯云 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 到项目仓库
|