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