From 91c786656709646236e616cb85bf8e3e8b418918 Mon Sep 17 00:00:00 2001 From: luozheng <1732036298@qq.com> Date: Mon, 29 Sep 2025 11:36:24 +0800 Subject: [PATCH] =?utf8?q?=E8=AE=BE=E5=A4=87=E6=96=87=E6=A1=A3=E6=9B=B4?= =?utf8?q?=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- ...45\345\217\243\346\226\207\346\241\243.md" | 65 ++++++++++++++++++- 1 file changed, 63 insertions(+), 2 deletions(-) diff --git "a/code/sdk/zhihui/leiniao/\350\256\276\345\244\207API\346\216\245\345\217\243\346\226\207\346\241\243.md" "b/code/sdk/zhihui/leiniao/\350\256\276\345\244\207API\346\216\245\345\217\243\346\226\207\346\241\243.md" index c4c298b22..60418e086 100644 --- "a/code/sdk/zhihui/leiniao/\350\256\276\345\244\207API\346\216\245\345\217\243\346\226\207\346\241\243.md" +++ "b/code/sdk/zhihui/leiniao/\350\256\276\345\244\207API\346\216\245\345\217\243\346\226\207\346\241\243.md" @@ -936,7 +936,7 @@ sequenceDiagram "eyesColor": "green", "hairStyle": "side-parted-comma", "eyesShape": "calm-eyes", - "screenImage": "https://example.com/avatar.jpg", + "deviceScreen": "https://example.com/avatar.bin", "screenImageAsEmoji": false } } @@ -1359,6 +1359,12 @@ sequenceDiagram end Server->>Device: WebSocket推送
{"command": "VoiceChatResponse", "data": {"finished": true}} + and 语音对话打断 + Device->>Device: 用户中断语音输入或检测到新输入 + Device->>Server: WebSocket发送
{"command": "VoiceChatInterrupt", "data": {"chatId": "...", "reason": "用户主动打断"}} + Server->>Server: 停止当前对话处理 + Note over Server: 中断对应chatId的语音处理流程 + and 角色切换 MiniProgram->>Server: 用户在小程序切换角色 Server->>Device: WebSocket推送
{"command": "CharacterChange", "data": {...}} @@ -1447,7 +1453,7 @@ WebSocket连接需要设备Token认证,有以下两种方式传递Token: ### 客户端业务消息 -客户端可以通过WebSocket连接发送业务消息给服务端,目前支持心跳、语音对话分片传输、语音选择故事和随机故事请求。 +客户端可以通过WebSocket连接发送业务消息给服务端,目前支持心跳、语音对话分片传输、语音对话打断、语音选择故事和随机故事请求。 #### 心跳请求 (Ping) **命令描述**:客户端发送心跳请求,保持WebSocket连接活跃 @@ -1606,6 +1612,61 @@ WebSocket连接需要设备Token认证,有以下两种方式传递Token: | npcEmotion | String | NPC情感状态,如"happy"等 | +#### 语音对话打断 (VoiceChatInterrupt) +**命令描述**:客户端发送语音对话打断请求,用于中断当前正在进行的语音对话 +**协议说明**: +- 当用户需要中断当前正在进行的语音对话时,客户端发送此命令 +- 命令中必须包含需要中断的对话ID(chatId) +- 服务端收到打断请求后会停止当前对话的处理流程 +- 可选择提供打断原因,便于调试和统计分析 + +**消息格式**: +```json +{ + "deviceId": "设备ID", + "timestamp": 1640995200, + "messageId": "消息ID", + "command": "VoiceChatInterrupt", + "data": { + "chatId": "对话ID,用于标识需要中断的对话", + "reason": "打断原因(可选)" + } +} +``` + +**请求示例**: +```json +{ + "deviceId": "DEVICE_001", + "timestamp": 1640995204, + "messageId": "msg_interrupt_001", + "command": "VoiceChatInterrupt", + "data": { + "chatId": "chat_12345", + "reason": "用户主动打断" + } +} +``` + +**data字段说明**: + +| 字段名 | 类型 | 必填 | 描述 | +|--------|------|------|------| +| chatId | String | 是 | 需要中断的对话ID,必须与正在进行的对话ID一致 | +| reason | String | 否 | 打断原因,用于统计分析,如"用户主动打断"、"超时中断"等 | + +**使用场景**: +1. 用户在语音对话过程中主动打断 +2. 检测到新的语音输入时中断当前对话 +3. 系统超时或异常情况下的对话中断 +4. 切换对话模式时中断当前对话 + +**服务端处理**: +- 服务端收到打断请求后会停止对应chatId的语音处理流程 +- 如果对话已完成或不存在,打断请求将被忽略 +- 服务端不会对打断请求发送响应消息 + + #### 语音选择故事请求 (ChooseStoryRequest) **命令描述**:客户端发送语音选择故事请求,用户通过语音表达故事偏好,系统根据语音内容选择相应故事 **协议说明**: -- 2.17.1