feat(speaking): 添加初始场景欢迎语

This commit is contained in:
cc 2026-03-21 16:32:45 +08:00
parent 5d9f399112
commit e976495e68
1 changed files with 17 additions and 3 deletions

View File

@ -1,5 +1,5 @@
<script setup>
import { ref, computed, nextTick, onUnmounted } from "vue";
import { ref, computed, nextTick, onUnmounted, onMounted } from "vue";
import { useRouter } from "vue-router";
import { DOUBAO_APP_ID, DOUBAO_ACCESS_TOKEN, DOUBAO_RESOURCE_ID, DOUBAO_TTS_API_PATH, DOUBAO_AUDIO_FORMAT, DOUBAO_SAMPLE_RATE, ARK_API_KEY, ARK_MODEL, ARK_API_PATH, ARK_MAX_TOKENS, ARK_HISTORY_LIMIT } from "@/config/index.js";
@ -109,6 +109,7 @@ const messagesContainer = ref(null);
let msgIdCounter = 0;
let currentAudioInstance = null;
const blobUrls = [];
let lastGreetedScene = null;
// UUID
const generateUUID = () => {
@ -121,6 +122,15 @@ const generateUUID = () => {
const currentScene = computed(() => scenes.find((s) => s.id === activeScene.value));
//
onMounted(() => {
const defaultScene = scenes.find((s) => s.id === activeScene.value);
if (defaultScene) {
sendGreeting(defaultScene);
lastGreetedScene = activeScene.value;
}
});
//
const sendGreeting = async (scene) => {
isSending.value = true;
@ -144,7 +154,8 @@ const sendGreeting = async (scene) => {
//
const switchScene = (sceneId) => {
if (activeScene.value === sceneId) return;
//
if (activeScene.value === sceneId && lastGreetedScene === sceneId) return;
activeScene.value = sceneId;
//
if (currentAudioInstance) {
@ -153,7 +164,10 @@ const switchScene = (sceneId) => {
}
messages.value = [];
const scene = scenes.find((s) => s.id === sceneId);
if (scene) sendGreeting(scene);
if (scene) {
sendGreeting(scene);
lastGreetedScene = sceneId;
}
};
//