Josedcape commited on
Commit
6000c17
·
verified ·
1 Parent(s): 8421829

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +36 -44
app.py CHANGED
@@ -11,7 +11,6 @@ from email.mime.multipart import MIMEMultipart
11
  from email.mime.text import MIMEText
12
  from email.mime.base import MIMEBase
13
  from email import encoders
14
- from streamlit_player import st_player
15
 
16
  # Configuración de la interfaz
17
  st.set_page_config(page_title="SURVEY ASSISTANT", layout="wide")
@@ -20,6 +19,7 @@ st.set_page_config(page_title="SURVEY ASSISTANT", layout="wide")
20
  load_dotenv()
21
  openai.api_key = os.getenv("OPENAI_API_KEY")
22
  os.environ["GOOGLE_APPLICATION_CREDENTIALS"] = "botidinamix-g.json"
 
23
  EMAIL_USER = os.getenv("EMAIL_USER")
24
  EMAIL_PASS = os.getenv("EMAIL_PASS")
25
 
@@ -67,7 +67,7 @@ def reproducir_audio(file_path):
67
 
68
  # Función para manejar la encuesta dinámica
69
  def encuesta_asistente():
70
- st.title("ASISTENTE ENCUESTA")
71
  st.write("Este asistente te guiará a través de una serie de preguntas para ayudarte a configurar tu asistente virtual")
72
 
73
  # Logo de ayuda del asistente
@@ -128,6 +128,7 @@ def encuesta_asistente():
128
  st.session_state.pregunta_adicional_actual = 0
129
  st.session_state.respuestas_adicionales = {}
130
  st.session_state.respuestas_adicionales_completadas = False
 
131
 
132
  # Validación de preguntas adicionales
133
  if st.session_state.preguntas_adicionales and not st.session_state.respuestas_adicionales_completadas:
@@ -196,13 +197,21 @@ def encuesta_asistente():
196
  st.session_state.pregunta_actual += 1
197
  st.experimental_rerun()
198
  else:
199
- st.write("Gracias por responder todas las preguntas. Haz clic en 'Registrar Encuesta' para finalizar y generar el archivo descargable.")
200
- st.write("NO OLVIDE DESCARGAR EL ARCHIVO AL FINALIZAR LA ENCUESTA")
201
- if st.button("Registrar Encuesta"):
 
 
 
 
 
 
202
  st.session_state.encuesta_completada = True
203
- st.success("Encuesta completada exitosamente. Haz clic en 'Obtener Resultado de la Encuesta' para descargar el archivo y enviarlo por correo electrónico.")
204
  generar_documento()
205
- enviar_email("josedcape@gmail.com", "Resultado de la Encuesta", "Se adjunta el archivo con los resultados de la encuesta.")
 
 
206
 
207
  if 'respuesta_actual' in st.session_state:
208
  st.write("Respuesta del asistente:")
@@ -222,24 +231,6 @@ def encuesta_asistente():
222
  unsafe_allow_html=True
223
  )
224
 
225
- if 'encuesta_completada' in st.session_state and st.session_state.encuesta_completada:
226
- st.markdown(
227
- """
228
- <style>
229
- .download-button {
230
- font-size: 20px !important;
231
- padding: 10px !important;
232
- background-color: #007bff !important;
233
- color: white !important;
234
- border: none !important;
235
- text-align: center !important;
236
- cursor: pointer !important;
237
- }
238
- </style>
239
- """,
240
- unsafe_allow_html=True
241
- )
242
-
243
  def generar_documento():
244
  if 'respuestas' in st.session_state:
245
  respuestas = st.session_state.respuestas
@@ -263,9 +254,11 @@ def generar_documento():
263
  key="btn_descargar_archivo"
264
  )
265
 
266
- def enviar_email(to_email, subject, body):
267
  from_email = EMAIL_USER
268
- password = EMAIL_PASS
 
 
269
 
270
  msg = MIMEMultipart()
271
  msg['From'] = from_email
@@ -274,28 +267,26 @@ def enviar_email(to_email, subject, body):
274
 
275
  msg.attach(MIMEText(body, 'plain'))
276
 
277
- attachment_path = "resultado_encuesta.docx"
278
- attachment = open(attachment_path, "rb")
279
  part = MIMEBase('application', 'octet-stream')
280
- part.set_payload(attachment.read())
281
  encoders.encode_base64(part)
282
- part.add_header('Content-Disposition', f"attachment; filename= {attachment_path}")
 
283
  msg.attach(part)
284
 
285
- try:
286
- server = smtplib.SMTP('smtp.gmail.com', 587)
287
- server.starttls()
288
- server.login(from_email, password)
289
- text = msg.as_string()
290
- server.sendmail(from_email, to_email, text)
291
- server.quit()
292
- st.success("El archivo ha sido enviado exitosamente a su correo.")
293
- except Exception as e:
294
- st.error(f"Error al enviar el correo: {e}")
295
 
296
  # Función para incrustar video en la página principal
297
  def incrustar_video_principal():
298
- st.video("videos/Boty.mp4")
 
299
 
300
  # Estilos personalizados
301
  st.markdown(
@@ -355,8 +346,8 @@ def barra_navegacion():
355
  """
356
  <div class="nav-bar">
357
  <a class="nav-link" href="?page=principal">""" + ("Página Principal" if st.session_state.idioma == "Español" else "Main Page") + """</a>
358
- <a class="nav-link" href="?page=asistente">""" + ("Asistente encuenta" if st.session_state.idioma == "Español" else "Boti Assistant") + """</a>
359
- <a class="nav-link" href="?page=ver_video">""" + ("Ver Video" if st.session_state.idioma == "Español" else "Watch Video") + """</a>
360
  </div>
361
  """,
362
  unsafe_allow_html=True
@@ -375,6 +366,7 @@ def pagina_principal():
375
  st.markdown("<h2 style='text-align: center; color: white;'>Para realizar su encuesta, haga clic en la barra superior</h2>", unsafe_allow_html=True)
376
 
377
  def pagina_asistente():
 
378
  encuesta_asistente()
379
 
380
  def pagina_ver_video():
 
11
  from email.mime.text import MIMEText
12
  from email.mime.base import MIMEBase
13
  from email import encoders
 
14
 
15
  # Configuración de la interfaz
16
  st.set_page_config(page_title="SURVEY ASSISTANT", layout="wide")
 
19
  load_dotenv()
20
  openai.api_key = os.getenv("OPENAI_API_KEY")
21
  os.environ["GOOGLE_APPLICATION_CREDENTIALS"] = "botidinamix-g.json"
22
+
23
  EMAIL_USER = os.getenv("EMAIL_USER")
24
  EMAIL_PASS = os.getenv("EMAIL_PASS")
25
 
 
67
 
68
  # Función para manejar la encuesta dinámica
69
  def encuesta_asistente():
70
+ st.title("Asistente Boti Encuesta")
71
  st.write("Este asistente te guiará a través de una serie de preguntas para ayudarte a configurar tu asistente virtual")
72
 
73
  # Logo de ayuda del asistente
 
128
  st.session_state.pregunta_adicional_actual = 0
129
  st.session_state.respuestas_adicionales = {}
130
  st.session_state.respuestas_adicionales_completadas = False
131
+ st.session_state.mostrar_resumen = False
132
 
133
  # Validación de preguntas adicionales
134
  if st.session_state.preguntas_adicionales and not st.session_state.respuestas_adicionales_completadas:
 
197
  st.session_state.pregunta_actual += 1
198
  st.experimental_rerun()
199
  else:
200
+ st.session_state.mostrar_resumen = True
201
+
202
+ if st.session_state.mostrar_resumen:
203
+ st.write("### Resumen de tus respuestas")
204
+ for pregunta, respuesta in st.session_state.respuestas.items():
205
+ st.write(f"**{pregunta}**: {respuesta}")
206
+
207
+ if st.button("Registrar Encuesta"):
208
+ with st.spinner('Registrando la encuesta, por favor espere...'):
209
  st.session_state.encuesta_completada = True
210
+ st.success("Encuesta completada exitosamente.")
211
  generar_documento()
212
+ enviar_correo("resultado_encuesta.docx")
213
+ st.success("Archivo enviado exitosamente a josedcape@gmail.com.")
214
+ st.session_state.mostrar_resumen = False
215
 
216
  if 'respuesta_actual' in st.session_state:
217
  st.write("Respuesta del asistente:")
 
231
  unsafe_allow_html=True
232
  )
233
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
234
  def generar_documento():
235
  if 'respuestas' in st.session_state:
236
  respuestas = st.session_state.respuestas
 
254
  key="btn_descargar_archivo"
255
  )
256
 
257
+ def enviar_correo(archivo_path):
258
  from_email = EMAIL_USER
259
+ to_email = "josedcape@gmail.com"
260
+ subject = "Resultado de la Encuesta"
261
+ body = "Adjunto encontrarás el resultado de la encuesta."
262
 
263
  msg = MIMEMultipart()
264
  msg['From'] = from_email
 
267
 
268
  msg.attach(MIMEText(body, 'plain'))
269
 
270
+ attachment = open(archivo_path, "rb")
271
+
272
  part = MIMEBase('application', 'octet-stream')
273
+ part.set_payload((attachment).read())
274
  encoders.encode_base64(part)
275
+ part.add_header('Content-Disposition', f"attachment; filename= {archivo_path}")
276
+
277
  msg.attach(part)
278
 
279
+ server = smtplib.SMTP('smtp.gmail.com', 587)
280
+ server.starttls()
281
+ server.login(from_email, EMAIL_PASS)
282
+ text = msg.as_string()
283
+ server.sendmail(from_email, to_email, text)
284
+ server.quit()
 
 
 
 
285
 
286
  # Función para incrustar video en la página principal
287
  def incrustar_video_principal():
288
+ video_path = "videos/Boty.mp4"
289
+ st.video(video_path)
290
 
291
  # Estilos personalizados
292
  st.markdown(
 
346
  """
347
  <div class="nav-bar">
348
  <a class="nav-link" href="?page=principal">""" + ("Página Principal" if st.session_state.idioma == "Español" else "Main Page") + """</a>
349
+ <a class="nav-link" href="?page=asistente">""" + ("Asistente Boti" if st.session_state.idioma == "Español" else "Boti Assistant") + """</a>
350
+ <a class="nav-link" href="?page=ver_video">Ver Video</a>
351
  </div>
352
  """,
353
  unsafe_allow_html=True
 
366
  st.markdown("<h2 style='text-align: center; color: white;'>Para realizar su encuesta, haga clic en la barra superior</h2>", unsafe_allow_html=True)
367
 
368
  def pagina_asistente():
369
+ st.write("NO OLVIDE DESCARGAR EL ARCHIVO AL FINALIZAR LA ENCUESTA 🤳")
370
  encuesta_asistente()
371
 
372
  def pagina_ver_video():