Josedcape commited on
Commit
36d6466
·
verified ·
1 Parent(s): 9c7f362

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +63 -86
app.py CHANGED
@@ -30,10 +30,10 @@ def obtener_respuesta(pregunta, historial, modelo="gpt-4", temperatura=0.5):
30
  return respuesta
31
 
32
  # Función para convertir texto a voz usando Google Cloud Text-to-Speech
33
- def text_to_speech(text, language_code="es-ES"):
34
  client = texttospeech.TextToSpeechClient()
35
  synthesis_input = texttospeech.SynthesisInput(text=text)
36
- voice = texttospeech.VoiceSelectionParams(language_code=language_code, ssml_gender=texttospeech.SsmlVoiceGender.NEUTRAL)
37
  audio_config = texttospeech.AudioConfig(audio_encoding=texttospeech.AudioEncoding.MP3)
38
  response = client.synthesize_speech(input=synthesis_input, voice=voice, audio_config=audio_config)
39
  audio_path = tempfile.NamedTemporaryFile(delete=False, suffix=".mp3").name
@@ -59,81 +59,56 @@ def reproducir_audio(file_path):
59
 
60
  # Función para manejar la encuesta dinámica
61
  def encuesta_asistente():
62
- st.title("Asistente Boti Encuesta" if st.session_state.idioma == "Español" else "Boti Assistant Survey")
63
- st.write("Este asistente te guiará a través de una serie de preguntas para ayudarte a configurar tu asistente virtual" if st.session_state.idioma == "Español" else "This assistant will guide you through a series of questions to help you configure your virtual assistant")
64
 
65
  # Logo de ayuda del asistente
66
  ayuda_logo = "https://img.freepik.com/premium-vector/minimal-ai-tech-robot-vector-illustration_589744-869.jpg"
67
  st.image(ayuda_logo, width=50)
68
 
69
  # Botón de ayuda del asistente
70
- if st.button("Ayuda del asistente" if st.session_state.idioma == "Español" else "Assistant Help"):
71
  reproducir_audio("audios/instructivo.mp3")
72
 
73
  preguntas = [
74
  {
75
- "pregunta": "¿Cuál es tu nombre?" if st.session_state.idioma == "Español" else "What is your name?",
76
  "tipo": "texto"
77
  },
78
  {
79
- "pregunta": "¿Qué tipo de asistente virtual deseas?" if st.session_state.idioma == "Español" else "What type of virtual assistant do you want?",
80
  "tipo": "multiple",
81
- "opciones": ["Asistente Personal" if st.session_state.idioma == "Español" else "Personal Assistant",
82
- "Asistente de Negocios" if st.session_state.idioma == "Español" else "Business Assistant",
83
- "Asistente de Salud" if st.session_state.idioma == "Español" else "Health Assistant",
84
- "Asistente de Educación" if st.session_state.idioma == "Español" else "Education Assistant",
85
- "Otro" if st.session_state.idioma == "Español" else "Other"]
86
  },
87
  {
88
- "pregunta": "¿Qué objetivo debe cumplir este asistente?" if st.session_state.idioma == "Español" else "What objective should this assistant achieve?",
89
  "tipo": "multiple",
90
- "opciones": ["Organización Personal" if st.session_state.idioma == "Español" else "Personal Organization",
91
- "Mejora de Productividad" if st.session_state.idioma == "Español" else "Productivity Improvement",
92
- "Asistencia Médica" if st.session_state.idioma == "Español" else "Medical Assistance",
93
- "Educación y Aprendizaje" if st.session_state.idioma == "Español" else "Education and Learning",
94
- "Otro" if st.session_state.idioma == "Español" else "Other"]
95
  },
96
  {
97
- "pregunta": "¿Cuáles son las funciones que debe tener?" if st.session_state.idioma == "Español" else "What functions should it have?",
98
  "tipo": "multiple",
99
- "opciones": ["Gestión de Calendarios" if st.session_state.idioma == "Español" else "Calendar Management",
100
- "Recordatorios" if st.session_state.idioma == "Español" else "Reminders",
101
- "Consultas Médicas" if st.session_state.idioma == "Español" else "Medical Consultations",
102
- "Ayuda con Tareas Escolares" if st.session_state.idioma == "Español" else "Help with School Tasks",
103
- "Otro" if st.session_state.idioma == "Español" else "Other"]
104
  },
105
  {
106
- "pregunta": "¿Cómo te gustaría que este asistente te ayude en tus tareas diarias?" if st.session_state.idioma == "Español" else "How would you like this assistant to help you with your daily tasks?",
107
  "tipo": "multiple",
108
- "opciones": ["Planificación de Día" if st.session_state.idioma == "Español" else "Day Planning",
109
- "Recordatorios" if st.session_state.idioma == "Español" else "Reminders",
110
- "Consultas y Respuestas" if st.session_state.idioma == "Español" else "Consultations and Answers",
111
- "Apoyo Emocional" if st.session_state.idioma == "Español" else "Emotional Support",
112
- "Otro" if st.session_state.idioma == "Español" else "Other"]
113
  },
114
  {
115
- "pregunta": "¿Qué interfaz debería tener este asistente?" if st.session_state.idioma == "Español" else "What interface should this assistant have?",
116
  "tipo": "multiple",
117
- "opciones": ["Aplicación Móvil" if st.session_state.idioma == "Español" else "Mobile App",
118
- "Aplicación Web" if st.session_state.idioma == "Español" else "Web App",
119
- "Asistente de Voz" if st.session_state.idioma == "Español" else "Voice Assistant",
120
- "Chatbot en Redes Sociales" if st.session_state.idioma == "Español" else "Social Media Chatbot",
121
- "Otro" if st.session_state.idioma == "Español" else "Other"]
122
  },
123
  {
124
- "pregunta": "¿Utilizarías el asistente para aumentar tu tiempo libre o para generar ingresos adicionales?" if st.session_state.idioma == "Español" else "Would you use the assistant to increase your free time or to generate additional income?",
125
  "tipo": "multiple",
126
- "opciones": ["Aumentar tiempo libre" if st.session_state.idioma == "Español" else "Increase free time",
127
- "Generar ingresos adicionales" if st.session_state.idioma == "Español" else "Generate additional income"]
128
  },
129
  {
130
- "pregunta": "Por último, ¿qué estilos y elementos visuales debería tener?" if st.session_state.idioma == "Español" else "Lastly, what styles and visual elements should it have?",
131
  "tipo": "multiple",
132
- "opciones": ["Estilo moderno con colores vivos" if st.session_state.idioma == "Español" else "Modern style with vibrant colors",
133
- "Colores sobrios y clásico" if st.session_state.idioma == "Español" else "Classic and sober colors",
134
- "Moderno, colores pastel o simples" if st.session_state.idioma == "Español" else "Modern, pastel or simple colors",
135
- "Moderno, elegante, simple, no importa el estilo" if st.session_state.idioma == "Español" else "Modern, elegant, simple, any style",
136
- "Otro" if st.session_state.idioma == "Español" else "Other"]
137
  }
138
  ]
139
 
@@ -148,17 +123,17 @@ def encuesta_asistente():
148
 
149
  # Validación de preguntas adicionales
150
  if st.session_state.preguntas_adicionales and not st.session_state.respuestas_adicionales_completadas:
151
- st.write("Por favor, para poder continuar con el cuestionario es necesario que responda todas las preguntas adicionales." if st.session_state.idioma == "Español" else "Please, to continue with the survey, you must answer all additional questions.")
152
  pregunta_adicional_actual = st.session_state.pregunta_adicional_actual
153
  pregunta_adicional = st.session_state.preguntas_adicionales[pregunta_adicional_actual]
154
  st.write(f"**Pregunta adicional {pregunta_adicional_actual + 1}:** {pregunta_adicional}")
155
 
156
- st.session_state.respuestas_adicionales[f'respuesta_adicional_1_{pregunta_adicional_actual}'] = st.text_input("Respuesta adicional 1:" if st.session_state.idioma == "Español" else "Additional answer 1:", key=f"respuesta_adicional_1_{pregunta_adicional_actual}")
157
- st.session_state.respuestas_adicionales[f'respuesta_adicional_2_{pregunta_adicional_actual}'] = st.text_input("Respuesta adicional 2:" if st.session_state.idioma == "Español" else "Additional answer 2:", key=f"respuesta_adicional_2_{pregunta_adicional_actual}")
158
- st.session_state.respuestas_adicionales[f'otras_observaciones_{pregunta_adicional_actual}'] = st.text_input("Otras observaciones:" if st.session_state.idioma == "Español" else "Other observations:", key=f'otras_observaciones_{pregunta_adicional_actual}')
159
 
160
- if st.button("Enviar respuestas adicionales" if st.session_state.idioma == "Español" else "Submit additional answers", key=f"btn_adicional_{pregunta_adicional_actual}"):
161
- with st.spinner('Procesando sus respuestas, por favor espere...' if st.session_state.idioma == "Español" else 'Processing your answers, please wait...'):
162
  st.session_state.respuestas[pregunta_adicional + " (Respuesta adicional 1)"] = st.session_state.respuestas_adicionales[f'respuesta_adicional_1_{pregunta_adicional_actual}']
163
  st.session_state.respuestas[pregunta_adicional + " (Respuesta adicional 2)"] = st.session_state.respuestas_adicionales[f'respuesta_adicional_2_{pregunta_adicional_actual}']
164
  st.session_state.respuestas[pregunta_adicional + " (Otras observaciones)"] = st.session_state.respuestas_adicionales[f'otras_observaciones_{pregunta_adicional_actual}']
@@ -181,16 +156,16 @@ def encuesta_asistente():
181
  st.write(f"**Pregunta:** {pregunta_actual['pregunta']}")
182
 
183
  if pregunta_actual["tipo"] == "texto":
184
- respuesta = st.text_input("Tu respuesta:" if st.session_state.idioma == "Español" else "Your answer:", key=f"respuesta_{st.session_state.pregunta_actual}")
185
  elif pregunta_actual["tipo"] == "multiple":
186
- respuesta = st.selectbox("Selecciona una opción:" if st.session_state.idioma == "Español" else "Select an option:", pregunta_actual["opciones"], key=f"respuesta_{st.session_state.pregunta_actual}")
187
- if respuesta == "Otro" or respuesta == "Other":
188
- respuesta_otro = st.text_input("Por favor especifica:" if st.session_state.idioma == "Español" else "Please specify:", key=f"respuesta_otro_{st.session_state.pregunta_actual}")
189
  if respuesta_otro:
190
  respuesta = respuesta_otro
191
 
192
- if st.button("Enviar respuesta" if st.session_state.idioma == "Español" else "Submit answer", key=f"btn_{st.session_state.pregunta_actual}"):
193
- with st.spinner('Procesando su respuesta, por favor espere...' if st.session_state.idioma == "Español" else 'Processing your answer, please wait...'):
194
  st.session_state.respuestas[pregunta_actual['pregunta']] = respuesta
195
 
196
  # Obtener respuesta del asistente
@@ -207,19 +182,19 @@ def encuesta_asistente():
207
  st.session_state.respuestas_adicionales_completadas = False
208
 
209
  # Convertir respuesta a audio
210
- audio_path = text_to_speech(respuesta_asistente, language_code="es-ES" if st.session_state.idioma == "Español" else "en-US")
211
  st.session_state.audio_path = audio_path
212
 
213
  st.session_state.pregunta_actual += 1
214
  st.experimental_rerun()
215
  else:
216
- st.write("Gracias por responder todas las preguntas. Haz clic en 'Registrar Encuesta' para finalizar y generar el archivo descargable." if st.session_state.idioma == "Español" else "Thank you for answering all the questions. Click 'Register Survey' to finish and generate the downloadable file.")
217
- if st.button("Registrar Encuesta" if st.session_state.idioma == "Español" else "Register Survey"):
218
  st.session_state.encuesta_completada = True
219
- st.success("Encuesta completada exitosamente. Haz clic en 'Obtener Resultado de la Encuesta' para descargar el archivo." if st.session_state.idioma == "Español" else "Survey successfully completed. Click 'Get Survey Result' to download the file.")
220
 
221
  if 'respuesta_actual' in st.session_state:
222
- st.write("Respuesta del asistente:" if st.session_state.idioma == "Español" else "Assistant's answer:")
223
  st.write(st.session_state.respuesta_actual)
224
 
225
  audio_path = st.session_state.audio_path
@@ -271,7 +246,7 @@ def generar_documento():
271
 
272
  with open(temp_file.name, "rb") as file:
273
  st.download_button(
274
- label="Descargar Archivo" if st.session_state.idioma == "Español" else "Download File",
275
  data=file,
276
  file_name="resultado_encuesta.docx",
277
  mime="application/vnd.openxmlformats-officedocument.wordprocessingml.document",
@@ -281,11 +256,14 @@ def generar_documento():
281
 
282
  # Función para incrustar video en la página principal
283
  def incrustar_video_principal():
284
- video_url = "https://drive.google.com/uc?export=download&id=1p1tWZ5treZlZr8t2kAwJcYAW79_7xoCn"
 
 
 
285
  video_html = f"""
286
- <video width="100%" controls>
287
- <source src="{video_url}" type="video/mp4">
288
- Your browser does not support the video tag.
289
  </video>
290
  """
291
  st.markdown(video_html, unsafe_allow_html=True)
@@ -324,7 +302,7 @@ st.markdown(
324
  background-color: white !important;
325
  }
326
  .nav-bar {
327
- background-color: #000000;
328
  color: white;
329
  padding: 10px;
330
  text-align: center;
@@ -342,23 +320,13 @@ st.markdown(
342
  unsafe_allow_html=True
343
  )
344
 
345
- # Funciones para las páginas
346
- def pagina_principal():
347
- st.title("Bienvenido a Boti Asistente" if st.session_state.idioma == "Español" else "Welcome to Boti Assistant")
348
- st.write("Esta es la página principal de Boti Asistente, especializado en el desarrollo de bots para Botidinamix." if st.session_state.idioma == "Español" else "This is the main page of Boti Assistant, specialized in the development of bots for Botidinamix.")
349
- incrustar_video_principal()
350
- st.markdown("<h2 style='text-align: center; color: white;'>Para realizar su encuesta, haga clic en la barra superior</h2>" if st.session_state.idioma == "Español" else "<h2 style='text-align: center; color: white;'>To take your survey, click on the top bar</h2>", unsafe_allow_html=True)
351
-
352
- def pagina_asistente():
353
- encuesta_asistente()
354
-
355
- # Barra de navegación superior
356
  def barra_navegacion():
357
  st.markdown(
358
- f"""
359
  <div class="nav-bar">
360
- <a class="nav-link" href="?page=principal">{"Página Principal" if st.session_state.idioma == "Español" else "Main Page"}</a>
361
- <a class="nav-link" href="?page=asistente">{"Asistente Boti" if st.session_state.idioma == "Español" else "Boti Assistant"}</a>
362
  </div>
363
  """,
364
  unsafe_allow_html=True
@@ -366,18 +334,27 @@ def barra_navegacion():
366
 
367
  # Función para seleccionar idioma
368
  def seleccionar_idioma():
369
- st.sidebar.title("Seleccionar Idioma" if st.session_state.idioma == "Español" else "Select Language")
370
- idioma = st.sidebar.radio("Idioma" if st.session_state.idioma == "Español" else "Language", ("Español", "English"))
371
  st.session_state.idioma = idioma
372
 
 
 
 
 
 
 
 
 
 
 
373
  # Función principal
374
  def main():
375
  if 'idioma' not in st.session_state:
376
  st.session_state.idioma = 'Español'
377
-
378
  seleccionar_idioma()
379
  barra_navegacion()
380
-
381
  query_params = st.experimental_get_query_params()
382
  page = query_params.get("page", ["principal"])[0]
383
  if page == "principal":
 
30
  return respuesta
31
 
32
  # Función para convertir texto a voz usando Google Cloud Text-to-Speech
33
+ def text_to_speech(text):
34
  client = texttospeech.TextToSpeechClient()
35
  synthesis_input = texttospeech.SynthesisInput(text=text)
36
+ voice = texttospeech.VoiceSelectionParams(language_code="es-ES", ssml_gender=texttospeech.SsmlVoiceGender.NEUTRAL)
37
  audio_config = texttospeech.AudioConfig(audio_encoding=texttospeech.AudioEncoding.MP3)
38
  response = client.synthesize_speech(input=synthesis_input, voice=voice, audio_config=audio_config)
39
  audio_path = tempfile.NamedTemporaryFile(delete=False, suffix=".mp3").name
 
59
 
60
  # Función para manejar la encuesta dinámica
61
  def encuesta_asistente():
62
+ st.title("Asistente Boti Encuesta")
63
+ st.write("Este asistente te guiará a través de una serie de preguntas para ayudarte a configurar tu asistente virtual")
64
 
65
  # Logo de ayuda del asistente
66
  ayuda_logo = "https://img.freepik.com/premium-vector/minimal-ai-tech-robot-vector-illustration_589744-869.jpg"
67
  st.image(ayuda_logo, width=50)
68
 
69
  # Botón de ayuda del asistente
70
+ if st.button("Ayuda del asistente"):
71
  reproducir_audio("audios/instructivo.mp3")
72
 
73
  preguntas = [
74
  {
75
+ "pregunta": "¿Cuál es tu nombre?",
76
  "tipo": "texto"
77
  },
78
  {
79
+ "pregunta": "¿Qué tipo de asistente virtual deseas?",
80
  "tipo": "multiple",
81
+ "opciones": ["Asistente Personal", "Asistente de Negocios", "Asistente de Salud", "Asistente de Educación", "Otro"]
 
 
 
 
82
  },
83
  {
84
+ "pregunta": "¿Qué objetivo debe cumplir este asistente?",
85
  "tipo": "multiple",
86
+ "opciones": ["Organización Personal", "Mejora de Productividad", "Asistencia Médica", "Educación y Aprendizaje", "Otro"]
 
 
 
 
87
  },
88
  {
89
+ "pregunta": "¿Cuáles son las funciones que debe tener?",
90
  "tipo": "multiple",
91
+ "opciones": ["Gestión de Calendarios", "Recordatorios", "Consultas Médicas", "Ayuda con Tareas Escolares", "Otro"]
 
 
 
 
92
  },
93
  {
94
+ "pregunta": "¿Cómo te gustaría que este asistente te ayude en tus tareas diarias?",
95
  "tipo": "multiple",
96
+ "opciones": ["Planificación de Día", "Recordatorios", "Consultas y Respuestas", "Apoyo Emocional", "Otro"]
 
 
 
 
97
  },
98
  {
99
+ "pregunta": "¿Qué interfaz debería tener este asistente?",
100
  "tipo": "multiple",
101
+ "opciones": ["Aplicación Móvil", "Aplicación Web", "Asistente de Voz", "Chatbot en Redes Sociales", "Otro"]
 
 
 
 
102
  },
103
  {
104
+ "pregunta": "¿Utilizarías el asistente para aumentar tu tiempo libre o para generar ingresos adicionales?",
105
  "tipo": "multiple",
106
+ "opciones": ["Aumentar tiempo libre", "Generar ingresos adicionales"]
 
107
  },
108
  {
109
+ "pregunta": "Por último, ¿qué estilos y elementos visuales debería tener?",
110
  "tipo": "multiple",
111
+ "opciones": ["Estilo moderno con colores vivos", "Colores sobrios y clásico", "Moderno, colores pastel o simples", "Moderno, elegante, simple, no importa el estilo", "Otro"]
 
 
 
 
112
  }
113
  ]
114
 
 
123
 
124
  # Validación de preguntas adicionales
125
  if st.session_state.preguntas_adicionales and not st.session_state.respuestas_adicionales_completadas:
126
+ st.write("Por favor, para poder continuar con el cuestionario es necesario que responda todas las preguntas adicionales.")
127
  pregunta_adicional_actual = st.session_state.pregunta_adicional_actual
128
  pregunta_adicional = st.session_state.preguntas_adicionales[pregunta_adicional_actual]
129
  st.write(f"**Pregunta adicional {pregunta_adicional_actual + 1}:** {pregunta_adicional}")
130
 
131
+ st.session_state.respuestas_adicionales[f'respuesta_adicional_1_{pregunta_adicional_actual}'] = st.text_input("Respuesta adicional 1:", key=f"respuesta_adicional_1_{pregunta_adicional_actual}")
132
+ st.session_state.respuestas_adicionales[f'respuesta_adicional_2_{pregunta_adicional_actual}'] = st.text_input("Respuesta adicional 2:", key=f"respuesta_adicional_2_{pregunta_adicional_actual}")
133
+ st.session_state.respuestas_adicionales[f'otras_observaciones_{pregunta_adicional_actual}'] = st.text_input("Otras observaciones:", key=f'otras_observaciones_{pregunta_adicional_actual}')
134
 
135
+ if st.button("Enviar respuestas adicionales", key=f"btn_adicional_{pregunta_adicional_actual}"):
136
+ with st.spinner('Procesando sus respuestas, por favor espere...'):
137
  st.session_state.respuestas[pregunta_adicional + " (Respuesta adicional 1)"] = st.session_state.respuestas_adicionales[f'respuesta_adicional_1_{pregunta_adicional_actual}']
138
  st.session_state.respuestas[pregunta_adicional + " (Respuesta adicional 2)"] = st.session_state.respuestas_adicionales[f'respuesta_adicional_2_{pregunta_adicional_actual}']
139
  st.session_state.respuestas[pregunta_adicional + " (Otras observaciones)"] = st.session_state.respuestas_adicionales[f'otras_observaciones_{pregunta_adicional_actual}']
 
156
  st.write(f"**Pregunta:** {pregunta_actual['pregunta']}")
157
 
158
  if pregunta_actual["tipo"] == "texto":
159
+ respuesta = st.text_input("Tu respuesta:", key=f"respuesta_{st.session_state.pregunta_actual}")
160
  elif pregunta_actual["tipo"] == "multiple":
161
+ respuesta = st.selectbox("Selecciona una opción:", pregunta_actual["opciones"], key=f"respuesta_{st.session_state.pregunta_actual}")
162
+ if respuesta == "Otro":
163
+ respuesta_otro = st.text_input("Por favor especifica:", key=f"respuesta_otro_{st.session_state.pregunta_actual}")
164
  if respuesta_otro:
165
  respuesta = respuesta_otro
166
 
167
+ if st.button("Enviar respuesta", key=f"btn_{st.session_state.pregunta_actual}"):
168
+ with st.spinner('Procesando su respuesta, por favor espere...'):
169
  st.session_state.respuestas[pregunta_actual['pregunta']] = respuesta
170
 
171
  # Obtener respuesta del asistente
 
182
  st.session_state.respuestas_adicionales_completadas = False
183
 
184
  # Convertir respuesta a audio
185
+ audio_path = text_to_speech(respuesta_asistente)
186
  st.session_state.audio_path = audio_path
187
 
188
  st.session_state.pregunta_actual += 1
189
  st.experimental_rerun()
190
  else:
191
+ st.write("Gracias por responder todas las preguntas. Haz clic en 'Registrar Encuesta' para finalizar y generar el archivo descargable.")
192
+ if st.button("Registrar Encuesta"):
193
  st.session_state.encuesta_completada = True
194
+ st.success("Encuesta completada exitosamente. Haz clic en 'Obtener Resultado de la Encuesta' para descargar el archivo.")
195
 
196
  if 'respuesta_actual' in st.session_state:
197
+ st.write("Respuesta del asistente:")
198
  st.write(st.session_state.respuesta_actual)
199
 
200
  audio_path = st.session_state.audio_path
 
246
 
247
  with open(temp_file.name, "rb") as file:
248
  st.download_button(
249
+ label="Descargar Archivo",
250
  data=file,
251
  file_name="resultado_encuesta.docx",
252
  mime="application/vnd.openxmlformats-officedocument.wordprocessingml.document",
 
256
 
257
  # Función para incrustar video en la página principal
258
  def incrustar_video_principal():
259
+ video_path = "videos/Boty.mp4"
260
+ with open(video_path, "rb") as video_file:
261
+ video_bytes = video_file.read()
262
+ video_base64 = base64.b64encode(video_bytes).decode()
263
  video_html = f"""
264
+ <video width="100%" autoplay muted>
265
+ <source src="data:video/mp4;base64,{video_base64}" type="video/mp4">
266
+ Tu navegador no soporta la reproducción de videos.
267
  </video>
268
  """
269
  st.markdown(video_html, unsafe_allow_html=True)
 
302
  background-color: white !important;
303
  }
304
  .nav-bar {
305
+ background-color: #000000; /* Cambiado a negro */
306
  color: white;
307
  padding: 10px;
308
  text-align: center;
 
320
  unsafe_allow_html=True
321
  )
322
 
323
+ # Función para la barra de navegación
 
 
 
 
 
 
 
 
 
 
324
  def barra_navegacion():
325
  st.markdown(
326
+ """
327
  <div class="nav-bar">
328
+ <a class="nav-link" href="?page=principal">""" + ("Página Principal" if st.session_state.idioma == "Español" else "Main Page") + """</a>
329
+ <a class="nav-link" href="?page=asistente">""" + ("Asistente Boti" if st.session_state.idioma == "Español" else "Boti Assistant") + """</a>
330
  </div>
331
  """,
332
  unsafe_allow_html=True
 
334
 
335
  # Función para seleccionar idioma
336
  def seleccionar_idioma():
337
+ idioma = st.sidebar.radio("Idioma", ("Español", "English"))
 
338
  st.session_state.idioma = idioma
339
 
340
+ # Funciones para las páginas
341
+ def pagina_principal():
342
+ st.title("Bienvenido a Boti Asistente")
343
+ st.write("Esta es la página principal de Boti Asistente, especializado en el desarrollo de bots para Botidinamix.")
344
+ incrustar_video_principal()
345
+ st.markdown("<h2 style='text-align: center; color: white;'>Para realizar su encuesta, haga clic en la barra superior</h2>", unsafe_allow_html=True)
346
+
347
+ def pagina_asistente():
348
+ encuesta_asistente()
349
+
350
  # Función principal
351
  def main():
352
  if 'idioma' not in st.session_state:
353
  st.session_state.idioma = 'Español'
354
+
355
  seleccionar_idioma()
356
  barra_navegacion()
357
+
358
  query_params = st.experimental_get_query_params()
359
  page = query_params.get("page", ["principal"])[0]
360
  if page == "principal":