This commit is contained in:
+14
-3
@@ -115,6 +115,17 @@
|
||||
}
|
||||
return line;
|
||||
}
|
||||
function explainDialogueError(error) {
|
||||
const code = String(error?.message || '');
|
||||
const known = {
|
||||
dialogue_temporarily_unavailable: 'Berättartjänsten svarar inte just nu. Vänta en stund och försök igen.',
|
||||
world_version_conflict: 'Världen hann ändras medan du skrev. Jag har uppdaterat läget; skicka meddelandet igen.',
|
||||
world_not_available: 'Världen är inte tillgänglig just nu. Försök igen om en liten stund.',
|
||||
};
|
||||
return known[code] || (/^[a-z0-9_]+$/.test(code)
|
||||
? 'Jag kunde inte behandla det just nu. Försök igen om en liten stund.'
|
||||
: code || 'Ett tillfälligt fel uppstod. Försök igen om en liten stund.');
|
||||
}
|
||||
function setVoiceStatus(message = '') { document.querySelector('#voice-status').textContent = message; }
|
||||
function refreshMicrophone() {
|
||||
const button = document.querySelector('#microphone');
|
||||
@@ -534,19 +545,19 @@
|
||||
gameState.world.version = result.world_version;
|
||||
gameState.world.world_time = result.world_time;
|
||||
pendingDialogue = null;
|
||||
if (result.intent === 'move') {
|
||||
if (result.intent === 'move' || result.intent === 'meet') {
|
||||
try {
|
||||
const refreshed = await request('/api/world');
|
||||
if (refreshed.world) gameState = refreshed;
|
||||
} catch (_) { /* The committed dialogue stays successful if this optional view refresh fails. */ }
|
||||
}
|
||||
const speakingNpc = result.intent === 'speak' ? gameState.world.npc : null;
|
||||
const speakingNpc = ['speak', 'meet'].includes(result.intent) ? gameState.world.npc : null;
|
||||
appendLine('assistant', result.reply, speakingNpc
|
||||
? {speaker: speakingNpc.name, voice: {characterId: speakingNpc.id, voiceIdentity: speakingNpc.voice_identity}}
|
||||
: {speaker: 'Berättelsen', voice: {role: 'narrator', voiceIdentity: 'neutral'}});
|
||||
} catch (error) {
|
||||
messageField.value = message;
|
||||
appendLine('assistant', `Meddelandet kunde inte behandlas: ${error.message}. Texten ligger kvar i inmatningen; skicka igen för att försöka på nytt.`);
|
||||
appendLine('assistant', `${explainDialogueError(error)} Ditt meddelande ligger kvar i inmatningen.`);
|
||||
}
|
||||
messageField.disabled = false;
|
||||
messageField.focus();
|
||||
|
||||
Reference in New Issue
Block a user