# PTT 平台外部接口详细文档 **基础路径**: `/api/external/ptt` **说明**: 该控制器是与第三方 PTT 语音平台对接的核心入口,涵盖了频道管理、成员状态、录音存取及语音识别等全量功能。 --- ## 1. 频道与会话管理 ### 三、创建频道 * **接口**: `POST /group` * **描述**: 在平台创建一个新的普通频道,支持邀请账号列表或用户 UID 列表。 * **参数**: * `gname` (Query, 必填): 群组/频道名称。 * `accounts` (Body, 可选): 参与成员账号列表 (`List`)。 * `uids` (Query, 可选): 参与成员 UID 列表 (`List`)。 * **返回**: `Result` ### 四、删除频道 * **接口**: `DELETE /group/{gid}` * **描述**: 删除指定的普通频道。 * **参数**: * `gid` (Path, 必填): 频道 ID。 * **返回**: `Result` ### 五、修改频道 * **接口**: `PUT /group/{gid}` * **描述**: 修改频道的名称信息。 * **参数**: * `gid` (Path, 必填): 频道 ID。 * `newName` (Query, 必填): 新的频道名称。 * **返回**: `Result` ### 六、拉成员入频道 * **接口**: `POST /group/{gid}/members` * **描述**: 将指定的账号列表加入到特定的频道中。 * **参数**: * `gid` (Path, 必填): 频道 ID。 * `accounts` (Body, 必填): 待加入的成员账号列表 (`List`)。 * **返回**: `Result` ### 七、成员踢出频道 * **接口**: `DELETE /group/{gid}/members` * **描述**: 将指定的账号列表从频道中移除。 * **参数**: * `gid` (Path, 必填): 频道 ID。 * `accounts` (Body, 必填): 待移除的成员账号列表 (`List`)。 * **返回**: `Result` ### 二十、创建临时会话 * **接口**: `POST /temp-group` * **描述**: 发起一个新的临时群组通话。 * **参数**: * `gname` (Query, 必填): 群组名称。 * `accounts` (Body, 必填): 参与成员账号列表 (`List`)。 * `creatorid` (Query, 必填): 创建者 UID。 * **返回**: `Result` ### 二十一、删除临时会话 * **接口**: `DELETE /temp-group/{gid}` * **描述**: 注销/结束一个临时群组。 * **参数**: * `gid` (Path, 必填): 临时群组 ID。 * **返回**: `Result` --- ## 2. 列表与成员查询 ### 八、频道成员列表 * **接口**: `GET /group/{gid}/members` * **描述**: 查询指定普通频道内的成员列表,支持搜索和分页。 * **参数**: * `gid` (Path, 必填): 频道 ID。 * `page`, `limit` (Query, 可选): 分页参数。 * `search` (Query, 可选): 搜索关键词(用户名/账号)。 * **返回**: `Result>>` ### 九、频道列表查询 * **接口**: `GET /groups` * **描述**: 获取系统内所有的普通频道列表。 * **参数**: `page`, `limit` (Query, 可选)。 * **返回**: `Result>>` ### 十、临时会话列表查询 * **接口**: `GET /temp-groups` * **描述**: 获取所有的临时群组列表。 * **参数**: `page`, `limit` (Query, 可选)。 * **返回**: `Result>>` ### 十一、成员可见频道列表查询 * **接口**: `GET /user/groups` * **描述**: 查询指定成员有权限查看的频道。 * **参数**: `account`, `uid`, `search` (Query, 可选)。 * **返回**: `Result>` ### 二十九、查询某个临时群组下的成员 * **接口**: `GET /temp-group/{tempgid}/members` * **描述**: 获取指定临时群组内的所有成员详情。 * **参数**: `tempgid` (Path, 必填)。 * **返回**: `Result>` ### 三十一、分页查询群组成员 * **接口**: `GET /group/{gid}/members-paged` * **描述**: 按在线状态分页查询群组成员。 * **参数**: * `gid` (Path, 必填)。 * `condition` (Query, 可选): 在线状态筛选 (1:在线, 2:离线, 3:在线不在组)。 * `page`, `limit` (Query, 可选)。 * **返回**: `Result>>` --- ## 3. 录音记录与处理 (核心功能) ### 十二、查询频道内成员ptt录音 * **接口**: `POST /group/{gid}/records` * **描述**: 获取普通频道内指定成员在特定时间段的 PTT 录音记录。 * **参数**: * `gid` (Path, 必填)。 * `uids` (Body, 可选): 筛选的成员 UID 列表。 * `start`, `end` (Query, 可选): 时间范围 (yyyy-MM-dd HH:mm:ss)。 * `page`, `limit` (Query, 可选)。 * **返回**: `Result>>` ### 十三、查询临时会话下的录音 * **接口**: `POST /temp-group/{tempgid}/records` * **描述**: 获取临时会话下特定时间段的 PTT 录音记录。 * **参数**: 同上,针对临时群组 ID。 * **返回**: `Result>>` ### 获取录音转文字 (新增集成) * **接口**: `GET /record/text` * **描述**: 根据录音地址获取并转为文字。 * **特性**: 1. 内部自动处理音频下载与本地缓存。 2. 已转义过的记录将直接从数据库返回,避免重复调用 ASR。 * **参数**: `path` (Query, 必填): 录音文件远程相对路径。 * **返回**: `Result` (识别后的文本内容)。 ### 播放录音 (流式处理) * **接口**: `GET /record/play` * **描述**: 在线播放录音文件,首次播放会自动缓存到服务器本地。 * **特性**: 1. **流式输出**: 直接写入 Response 输出流,无内存占用压力。 2. **拖动支持**: 支持 HTTP Range 请求,可在浏览器进度条中任意拖动。 3. **优先播放**: 默认 `inline` 模式,谷歌浏览器直接调用内置播放器。 * **参数**: `path` (Query, 必填): 录音文件远程相对路径。 * **返回**: 二进制音频流 (`audio/wav`)。 --- ## 4. 系统工具 ### 手动执行平台登录 * **接口**: `POST /login` * **描述**: 刷新 PTT 平台的会话 Token 并重新登录。用于故障恢复或手动同步。 * **返回**: `Result` ### 二、退出登录 * **接口**: `POST /logout` * **描述**: 注销当前 PTT 会话。 * **返回**: `Result` --- ## 响应规范 除 `playRecord` 这种流式接口外,所有接口均遵循统一响应体: ```json { "code": 200, // 状态码 (200: 成功) "msg": "操作成功", // 提示信息 "data": { ... } // 业务载荷 } ```