Lukeetah commited on
Commit
5c6cf03
·
verified ·
1 Parent(s): fb2c475

Update static/script.js

Browse files
Files changed (1) hide show
  1. static/script.js +2 -109
static/script.js CHANGED
@@ -1,26 +1,16 @@
1
- // static/script.js
2
  document.addEventListener('DOMContentLoaded', () => {
3
- // Elementos del DOM
4
  const messagesContainer = document.getElementById('messages');
5
  const messageInput = document.getElementById('message-input');
6
  const sendButton = document.getElementById('send-button');
7
- const recordBtn = document.getElementById('record-btn');
8
- const stopBtn = document.getElementById('stop-btn');
9
 
10
- // Generar un ID de usuario simple
11
  let userId = localStorage.getItem('samuel_user_id');
12
  if (!userId) {
13
  userId = 'user_' + Math.random().toString(36).substr(2, 9);
14
  localStorage.setItem('samuel_user_id', userId);
15
  }
16
 
17
- // Conexión WebSocket
18
  let socket;
19
 
20
- // Grabación de audio
21
- let mediaRecorder;
22
- let audioChunks = [];
23
-
24
  function connectWebSocket() {
25
  const protocol = window.location.protocol === 'https:' ? 'wss:' : 'ws:';
26
  const wsUrl = `${protocol}//${window.location.host}/ws/${userId}`;
@@ -33,7 +23,7 @@ document.addEventListener('DOMContentLoaded', () => {
33
 
34
  socket.onmessage = (event) => {
35
  const data = JSON.parse(event.data);
36
- addMessage(data.text, 'samuel', data.timestamp, data.audio);
37
  };
38
 
39
  socket.onclose = () => {
@@ -46,92 +36,19 @@ document.addEventListener('DOMContentLoaded', () => {
46
  };
47
  }
48
 
49
- // Iniciar conexión WebSocket
50
  connectWebSocket();
51
 
52
- // Configurar grabación de audio
53
- async function setupAudioRecording() {
54
- try {
55
- const stream = await navigator.mediaDevices.getUserMedia({ audio: true });
56
- mediaRecorder = new MediaRecorder(stream);
57
-
58
- mediaRecorder.ondataavailable = (event) => {
59
- audioChunks.push(event.data);
60
- };
61
-
62
- mediaRecorder.onstop = async () => {
63
- const audioBlob = new Blob(audioChunks, { type: 'audio/wav' });
64
- audioChunks = [];
65
-
66
- // Transcribir audio
67
- const formData = new FormData();
68
- formData.append('audio_file', audioBlob, 'recording.wav');
69
-
70
- try {
71
- const response = await fetch('/api/transcribe', {
72
- method: 'POST',
73
- body: formData
74
- });
75
-
76
- const result = await response.json();
77
-
78
- if (result.text && result.text !== "No pude entender lo que dijiste. ¿Podrías repetirlo o escribirlo?") {
79
- // Usar la transcripción como mensaje
80
- messageInput.value = result.text;
81
- sendMessage();
82
- } else {
83
- // Mostrar mensaje de error
84
- addMessage("No pude entender lo que dijiste. ¿Podrías repetirlo o escribirlo?", 'samuel');
85
- }
86
- } catch (error) {
87
- console.error('Error al transcribir audio:', error);
88
- addMessage("Error al procesar el audio. Por favor, escribí tu mensaje.", 'samuel');
89
- }
90
- };
91
-
92
- recordBtn.addEventListener('click', startRecording);
93
- stopBtn.addEventListener('click', stopRecording);
94
-
95
- } catch (error) {
96
- console.error('Error al acceder al micrófono:', error);
97
- recordBtn.disabled = true;
98
- recordBtn.textContent = '🎤 Micrófono no disponible';
99
- }
100
- }
101
-
102
- function startRecording() {
103
- audioChunks = [];
104
- mediaRecorder.start();
105
- recordBtn.disabled = true;
106
- stopBtn.disabled = false;
107
- recordBtn.classList.add('recording');
108
- }
109
-
110
- function stopRecording() {
111
- mediaRecorder.stop();
112
- recordBtn.disabled = false;
113
- stopBtn.disabled = true;
114
- recordBtn.classList.remove('recording');
115
- }
116
-
117
- // Enviar mensaje
118
  function sendMessage() {
119
  const message = messageInput.value.trim();
120
  if (message && socket && socket.readyState === WebSocket.OPEN) {
121
- // Agregar mensaje del usuario a la interfaz
122
  addMessage(message, 'user');
123
-
124
- // Enviar mensaje al servidor
125
  socket.send(JSON.stringify({ text: message }));
126
-
127
- // Limpiar input
128
  messageInput.value = '';
129
  messageInput.focus();
130
  }
131
  }
132
 
133
- // Agregar mensaje a la interfaz
134
- function addMessage(text, sender, timestamp, audioBase64) {
135
  const messageDiv = document.createElement('div');
136
  messageDiv.className = `message ${sender}`;
137
 
@@ -139,31 +56,11 @@ document.addEventListener('DOMContentLoaded', () => {
139
  messageContent.textContent = text;
140
 
141
  messageDiv.appendChild(messageContent);
142
-
143
- // Agregar botón de audio para mensajes de Samuel
144
- if (sender === 'samuel' && audioBase64) {
145
- const audioBtn = document.createElement('button');
146
- audioBtn.className = 'play-audio-btn';
147
- audioBtn.textContent = '🔊';
148
- audioBtn.onclick = () => playAudio(audioBase64);
149
- messageDiv.appendChild(audioBtn);
150
- }
151
-
152
  messagesContainer.appendChild(messageDiv);
153
 
154
- // Scroll al final
155
  messagesContainer.scrollTop = messagesContainer.scrollHeight;
156
  }
157
 
158
- // Reproducir audio
159
- function playAudio(audioBase64) {
160
- const audio = new Audio(`data:audio/wav;base64,${audioBase64}`);
161
- audio.play().catch(error => {
162
- console.error('Error al reproducir audio:', error);
163
- });
164
- }
165
-
166
- // Event listeners
167
  sendButton.addEventListener('click', sendMessage);
168
 
169
  messageInput.addEventListener('keypress', (e) => {
@@ -172,9 +69,5 @@ document.addEventListener('DOMContentLoaded', () => {
172
  }
173
  });
174
 
175
- // Inicializar grabación de audio
176
- setupAudioRecording();
177
-
178
- // Enfocar input al cargar la página
179
  messageInput.focus();
180
  });
 
 
1
  document.addEventListener('DOMContentLoaded', () => {
 
2
  const messagesContainer = document.getElementById('messages');
3
  const messageInput = document.getElementById('message-input');
4
  const sendButton = document.getElementById('send-button');
 
 
5
 
 
6
  let userId = localStorage.getItem('samuel_user_id');
7
  if (!userId) {
8
  userId = 'user_' + Math.random().toString(36).substr(2, 9);
9
  localStorage.setItem('samuel_user_id', userId);
10
  }
11
 
 
12
  let socket;
13
 
 
 
 
 
14
  function connectWebSocket() {
15
  const protocol = window.location.protocol === 'https:' ? 'wss:' : 'ws:';
16
  const wsUrl = `${protocol}//${window.location.host}/ws/${userId}`;
 
23
 
24
  socket.onmessage = (event) => {
25
  const data = JSON.parse(event.data);
26
+ addMessage(data.text, 'samuel', data.timestamp);
27
  };
28
 
29
  socket.onclose = () => {
 
36
  };
37
  }
38
 
 
39
  connectWebSocket();
40
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
41
  function sendMessage() {
42
  const message = messageInput.value.trim();
43
  if (message && socket && socket.readyState === WebSocket.OPEN) {
 
44
  addMessage(message, 'user');
 
 
45
  socket.send(JSON.stringify({ text: message }));
 
 
46
  messageInput.value = '';
47
  messageInput.focus();
48
  }
49
  }
50
 
51
+ function addMessage(text, sender, timestamp) {
 
52
  const messageDiv = document.createElement('div');
53
  messageDiv.className = `message ${sender}`;
54
 
 
56
  messageContent.textContent = text;
57
 
58
  messageDiv.appendChild(messageContent);
 
 
 
 
 
 
 
 
 
 
59
  messagesContainer.appendChild(messageDiv);
60
 
 
61
  messagesContainer.scrollTop = messagesContainer.scrollHeight;
62
  }
63
 
 
 
 
 
 
 
 
 
 
64
  sendButton.addEventListener('click', sendMessage);
65
 
66
  messageInput.addEventListener('keypress', (e) => {
 
69
  }
70
  });
71
 
 
 
 
 
72
  messageInput.focus();
73
  });