新增功能
This commit is contained in:
@@ -0,0 +1,229 @@
|
||||
# 音视频通话功能使用说明
|
||||
|
||||
## 功能概述
|
||||
|
||||
基于腾讯云 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 到项目仓库
|
||||
Reference in New Issue
Block a user