新增功能

This commit is contained in:
Your Name
2026-04-01 09:46:25 +08:00
parent 099bc1dd22
commit a780356908
332 changed files with 7845 additions and 866 deletions
+3
View File
@@ -108,6 +108,9 @@ return [
// 处方库:以下角色ID + 超级管理员(root) 可查看/编辑/删除全部;他人仅可管理自己创建的,公开处方对他人只读
'prescription_library_manage_all_roles' => [0, 3],
// 消费者处方单:以下角色 + root 可对「待审核」处方进行通过/驳回(驳回即作废处方)
'prescription_audit_roles' => [0, 3,6],
// 腾讯云实时音视频(TRTC)配置
'trtc' => [
'sdkAppId' => (int)env('trtc.sdk_app_id', 1600127710),
+39 -1
View File
@@ -1,6 +1,14 @@
<?php
/**
* 腾讯云实时音视频(TRTC)配置
*
* 点播列表里若出现多个带「UserId_s_」「UserId_e_」的文件(每用户一路),属于【单流】命名规则,几乎总是控制台
* 「全局自动录制」单流模板;可与 API 合流并存。API 合流文件可在点播搜前缀 mix_{诊单id}_{通话记录id}TencentVod.UserDefineRecordId)。
* 需要【仅合流一个文件】时:请到 实时音视频控制台 → 应用管理 → 录制管理,关闭全局自动录制,仅用 API 触发。
* 关闭全局后若完全没有录制文件,请配置 .env 中 trtc.api_secret_id / trtc.api_secret_keyCAM),并查看 bindCallRoom 接口返回的 cloud_recording.message 或服务端日志。
* 若出现 cURL error 60:将 cacert.pem 放在 server 根目录或配置 recording_ssl_cafilecomposer upgrade 覆盖 vendor 后若复发,需保留对 tencentcloud/common HttpConnection 的 verify 补丁或改用全局 php.ini CA。
* 合流成功时文件名一般为 SdkAppId_RoomId_序号.mp4,不含 UserId_s 段。
* @see https://cloud.tencent.com/document/product/647/76497
*/
return [
// SDK AppID - 在腾讯云控制台获取
@@ -21,16 +29,46 @@ return [
FILTER_VALIDATE_BOOLEAN
),
// 云端录制 HTTP 回调可选校验:非空则请求需带 ?token=xxx(与 .env trtc.recording_callback_token 一致)
// 回调 URL 路径:/api/trtc/recording-notify 或 /api/trtc/recordingNotify(与控制台一致即可)。非空 token 时 Query 需 ?token=xxx
'recording_callback_token' => env('trtc.recording_callback_token', ''),
// 云 APICAMSecretId / SecretKey,用于 CreateCloudRecording / DeleteCloudRecording(与 UserSig 的 secretKey 不是同一个)
// .env 写在 [trtc] 段内时键名须为 API_SECRET_ID、API_SECRET_KEY(会合并为 TRTC_API_SECRET_ID 供 env('trtc.api_secret_id') 读取;勿写 TRTC_API_SECRET_ID 以免变成 TRTC_TRTC_API_SECRET_ID
'api_secret_id' => env('trtc.api_secret_id', ''),
'api_secret_key' => env('trtc.api_secret_key', ''),
// 调用 TRTC OpenAPI 的地域:ap-guangzhou / ap-beijing / ap-shanghai
'recording_api_region' => env('trtc.recording_api_region', 'ap-guangzhou'),
// 云端录制请求 https://trtc.tencentcloudapi.com/ 时使用的 CA 证书包绝对路径(Windows 无系统 CA 链时填此可避免 cURL 60)。也可将 cacert.pem 放在项目根目录 server/cacert.pem
'recording_ssl_cafile' => env('trtc.recording_ssl_cafile', ''),
// CreateCloudRecording → RecordParams.RecordMode1=单流,2=混流(合流)。startMixRecording 内会强制为 2
'recording_record_mode' => (int)env('trtc.recording_record_mode', 2),
// CreateCloudRecording → RoomIdType:须与 TRTC 房间一致。0=强制字符串房,1=强制数字房。留空或 auto=按房间号自动(纯数字→1,否则→0)。勿默认填 0,否则 TUICall 数字房会一直用错类型导致拉流 Idle
'recording_room_id_type' => env('trtc.recording_room_id_type', ''),
// MixLayoutParams.MixLayoutMode1悬浮 2屏幕分享 3九宫格 4自定义(见文档「合流录制的布局模式」)
'recording_mix_layout_mode' => (int)env('trtc.recording_mix_layout_mode', 3),
// 合流输出分辨率(MixTranscodeParams.VideoParams),横屏问诊建议 1280x720
'recording_mix_width' => (int)env('trtc.recording_mix_width', 1280),
'recording_mix_height' => (int)env('trtc.recording_mix_height', 720),
'recording_mix_fps' => (int)env('trtc.recording_mix_fps', 15),
'recording_mix_video_bitrate' => (int)env('trtc.recording_mix_video_bitrate', 1500000),
'recording_mix_gop' => (int)env('trtc.recording_mix_gop', 2),
// AudioParamsSampleRate 1=48000Hz 2=44100 3=16000Channel 1单 2双;BitRate 32000-128000
'recording_mix_audio_sample_rate' => (int)env('trtc.recording_mix_audio_sample_rate', 1),
'recording_mix_audio_channel' => (int)env('trtc.recording_mix_audio_channel', 2),
'recording_mix_audio_bitrate' => (int)env('trtc.recording_mix_audio_bitrate', 64000),
// 房间内无上行超过该秒数自动停录(RecordParams.MaxIdleTime
'recording_max_idle_time' => (int)env('trtc.recording_max_idle_time', 5),
// 云点播子应用 SubAppIdTencentVod),默认不填使用主应用
'recording_vod_sub_app_id' => (int)env('trtc.recording_vod_sub_app_id', 0),
// 录制机器人 UserId 前缀
'recording_bot_prefix' => env('trtc.recording_bot_prefix', 'recorder_'),