diff --git a/main/xiaozhi-server/test/js/core/network/websocket.js b/main/xiaozhi-server/test/js/core/network/websocket.js index fe0b252a..187a57e4 100644 --- a/main/xiaozhi-server/test/js/core/network/websocket.js +++ b/main/xiaozhi-server/test/js/core/network/websocket.js @@ -17,6 +17,7 @@ export class WebSocketHandler { this.onChatMessage = null; // 新增:聊天消息回调 this.currentSessionId = null; this.isRemoteSpeaking = false; + this.isEstablishConnection = false; // 新增:是否已建立连接 } // 发送hello握手消息 @@ -73,6 +74,7 @@ export class WebSocketHandler { handleTextMessage(message) { if (message.type === 'hello') { log(`服务器回应:${JSON.stringify(message, null, 2)}`, 'success'); + this.isEstablishConnection = true; } else if (message.type === 'tts') { this.handleTTSMessage(message); } else if (message.type === 'audio') { diff --git a/main/xiaozhi-server/test/js/ui/controller.js b/main/xiaozhi-server/test/js/ui/controller.js index 88615caf..6cf2def7 100644 --- a/main/xiaozhi-server/test/js/ui/controller.js +++ b/main/xiaozhi-server/test/js/ui/controller.js @@ -347,6 +347,14 @@ class UIController { this.addChatMessage('配置已保存', false); } + // 处理未绑定设备事件 + handleUnboundDevice() { + const dialBtn = document.getElementById('dialBtn'); + if (dialBtn) { + dialBtn.click(); + } + } + // 拨号成功后直接开始录音 dialAndRecord() { const recordBtn = document.getElementById('recordBtn'); @@ -355,7 +363,11 @@ class UIController { if (wsHandler.isConnected() && wsHandler.websocket.onopen) { clearInterval(this.wsTimer); this.wsTimer = null; - recordBtn.click(); + if (wsHandler.isEstablishConnection) { + recordBtn.click(); + } else { + this.handleUnboundDevice(); + } return; } }, 500); @@ -451,7 +463,7 @@ class UIController { dialBtn.querySelector('.btn-text').textContent = '挂断'; dialBtn.classList.add('dial-active'); - this.dialAndRecord(); + this.dialAndRecord(); } this.hideModal('settingsModal');