Răsfoiți Sursa

处理语音输入发送后替换当前类型会数字人对话,切换后重置

liyanbo 1 lună în urmă
părinte
comite
2142837243
1 a modificat fișierele cu 17 adăugiri și 9 ștergeri
  1. 17 9
      src/views/AIPage/aiGenerate/DialogContent.vue

+ 17 - 9
src/views/AIPage/aiGenerate/DialogContent.vue

@@ -515,13 +515,12 @@ const doSendMessage = async () => {
   })
   // 清空输入框
   userInput.value = ''
-  recoverQuestDialogue()
 }
 
 /** 显示问题回答对话 */
 const showQuestAnswerDialogue = () => {
   // 缓存当前对话
-  currentDialogueCache.value = currentDialogue.value
+  currentDialogueCache.value = JSON.parse(JSON.stringify(currentDialogue.value))
 
   // 将当前对话类型设置为数字人对话
   currentDialogue.value.type = "digital"
@@ -529,11 +528,22 @@ const showQuestAnswerDialogue = () => {
   currentDialogue.value.content = "让我思考一下..."
 
 }
+
+
+
 /** 回复对话 */
 const recoverQuestDialogue = () => {
-  // 缓存当前对话
-  currentDialogue.value = currentDialogueCache.value
-  currentDialogueCache.value = null
+  // 如果有缓存的对话
+  if (currentDialogueCache.value){
+    // 恢复当前对话
+    const currentSection = props.scriptData.sections[currentSectionIndex.value]
+    if (currentSection) {
+      currentSection.dialogues[currentDialogueIndex.value] = JSON.parse(JSON.stringify(currentDialogueCache.value))
+    }
+    // 清空缓存
+    currentDialogueCache.value = null
+    userInputCache.value = ''
+  }
 }
 
 /** 真正执行【发送】消息操作 */
@@ -561,7 +571,7 @@ const doSendMessageStream = async userMessage => {
           const { code, data, msg } = JSON.parse(res.data)
           if (code !== 0) {
             console.log(`对话异常! ${msg}`)
-            recoverQuestDialogue();
+            // recoverQuestDialogue();
             stopStream();
             return
           }
@@ -590,20 +600,18 @@ const doSendMessageStream = async userMessage => {
         },
         error => {
           console.log(`对话异常! ${error}`)
-          recoverQuestDialogue();
           stopStream()
           // 需要抛出异常,禁止重试
           throw error
         },
         () => {
           console.log(`结束对话! `)
-          recoverQuestDialogue();
           stopStream()
         }
     )
   } catch (error) {
     console.error('发送消息失败:', error)
-    recoverQuestDialogue();
+    // recoverQuestDialogue();
     stopStream()
   }
 }