feat(speaking): 添加初始场景欢迎语
This commit is contained in:
parent
5d9f399112
commit
e976495e68
|
|
@ -1,5 +1,5 @@
|
||||||
<script setup>
|
<script setup>
|
||||||
import { ref, computed, nextTick, onUnmounted } from "vue";
|
import { ref, computed, nextTick, onUnmounted, onMounted } from "vue";
|
||||||
import { useRouter } from "vue-router";
|
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";
|
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 msgIdCounter = 0;
|
||||||
let currentAudioInstance = null;
|
let currentAudioInstance = null;
|
||||||
const blobUrls = [];
|
const blobUrls = [];
|
||||||
|
let lastGreetedScene = null;
|
||||||
|
|
||||||
// 兼容的 UUID 生成函数
|
// 兼容的 UUID 生成函数
|
||||||
const generateUUID = () => {
|
const generateUUID = () => {
|
||||||
|
|
@ -121,6 +122,15 @@ const generateUUID = () => {
|
||||||
|
|
||||||
const currentScene = computed(() => scenes.find((s) => s.id === activeScene.value));
|
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) => {
|
const sendGreeting = async (scene) => {
|
||||||
isSending.value = true;
|
isSending.value = true;
|
||||||
|
|
@ -144,7 +154,8 @@ const sendGreeting = async (scene) => {
|
||||||
|
|
||||||
// 切换场景,重置对话并发送欢迎语
|
// 切换场景,重置对话并发送欢迎语
|
||||||
const switchScene = (sceneId) => {
|
const switchScene = (sceneId) => {
|
||||||
if (activeScene.value === sceneId) return;
|
// 如果是上一个已发送欢迎语的场景,不重复发送
|
||||||
|
if (activeScene.value === sceneId && lastGreetedScene === sceneId) return;
|
||||||
activeScene.value = sceneId;
|
activeScene.value = sceneId;
|
||||||
// 停止当前播放
|
// 停止当前播放
|
||||||
if (currentAudioInstance) {
|
if (currentAudioInstance) {
|
||||||
|
|
@ -153,7 +164,10 @@ const switchScene = (sceneId) => {
|
||||||
}
|
}
|
||||||
messages.value = [];
|
messages.value = [];
|
||||||
const scene = scenes.find((s) => s.id === sceneId);
|
const scene = scenes.find((s) => s.id === sceneId);
|
||||||
if (scene) sendGreeting(scene);
|
if (scene) {
|
||||||
|
sendGreeting(scene);
|
||||||
|
lastGreetedScene = sceneId;
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
// 滚动到底部
|
// 滚动到底部
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue