|
|
@@ -299,6 +299,11 @@ const doSendMessage = async (content) => {
|
|
|
});
|
|
|
};
|
|
|
|
|
|
+
|
|
|
+import { useAudioPlayer } from '@/components/TTS/useAudioPlayer';
|
|
|
+
|
|
|
+const { playAudioChunk } = useAudioPlayer();
|
|
|
+
|
|
|
/** 真正执行【发送】消息操作 */
|
|
|
const doSendMessageStream = async (userMessage) => {
|
|
|
// 创建 AbortController 实例,以便中止请求
|
|
|
@@ -343,20 +348,30 @@ const doSendMessageStream = async (userMessage) => {
|
|
|
return;
|
|
|
}
|
|
|
// 如果内容为空,就不处理。
|
|
|
- // if (data.receive.content === '') {
|
|
|
+ // if (data.receive?.content === '') {
|
|
|
// return
|
|
|
// }
|
|
|
- receiveMessageFullText.value =
|
|
|
- receiveMessageFullText.value + data.receive.content;
|
|
|
- // 首次返回需要添加一个 message 到页面,后面的都是更新
|
|
|
- if (isFirstChunk) {
|
|
|
- isFirstChunk = false;
|
|
|
- // 弹出两个假数据
|
|
|
- activeMessageList.value.pop();
|
|
|
- activeMessageList.value.pop();
|
|
|
- // 更新返回的数据
|
|
|
- activeMessageList.value.push(data.send);
|
|
|
- activeMessageList.value.push(data.receive);
|
|
|
+
|
|
|
+ // 根据事件类型处理
|
|
|
+ if (data.eventType === 'TEXT') {
|
|
|
+
|
|
|
+ console.log(receiveMessageFullText.value,"========",data.receive.content);
|
|
|
+ // 处理文本消息
|
|
|
+ receiveMessageFullText.value += data.receive.content;
|
|
|
+ // 首次返回需要添加一个 message 到页面,后面的都是更新
|
|
|
+ if (isFirstChunk) {
|
|
|
+ console.log("000000000000000000000000000000000")
|
|
|
+ isFirstChunk = false;
|
|
|
+ // 弹出两个假数据
|
|
|
+ activeMessageList.value.pop();
|
|
|
+ activeMessageList.value.pop();
|
|
|
+ // 更新返回的数据
|
|
|
+ activeMessageList.value.push(data.send);
|
|
|
+ activeMessageList.value.push(data.receive);
|
|
|
+ }
|
|
|
+ } else if (data.eventType === 'AUDIO') {
|
|
|
+ // 处理音频消息
|
|
|
+ await playAudioChunk(data.audioData);
|
|
|
}
|
|
|
},
|
|
|
(error) => {
|
|
|
@@ -446,8 +461,7 @@ const textRoll = async () => {
|
|
|
}
|
|
|
|
|
|
if (index < receiveMessageFullText.value.length) {
|
|
|
- receiveMessageDisplayedText.value +=
|
|
|
- receiveMessageFullText.value[index];
|
|
|
+ receiveMessageDisplayedText.value += receiveMessageFullText.value[index];
|
|
|
index++;
|
|
|
|
|
|
// 更新 message
|