Spaces:
Sleeping
Sleeping
Update app.py
Browse files
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("
|
| 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.
|
| 200 |
-
|
| 201 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 202 |
st.session_state.encuesta_completada = True
|
| 203 |
-
st.success("Encuesta completada exitosamente.
|
| 204 |
generar_documento()
|
| 205 |
-
|
|
|
|
|
|
|
| 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
|
| 267 |
from_email = EMAIL_USER
|
| 268 |
-
|
|
|
|
|
|
|
| 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 |
-
|
| 278 |
-
|
| 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= {
|
|
|
|
| 283 |
msg.attach(part)
|
| 284 |
|
| 285 |
-
|
| 286 |
-
|
| 287 |
-
|
| 288 |
-
|
| 289 |
-
|
| 290 |
-
|
| 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 |
-
|
|
|
|
| 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
|
| 359 |
-
<a class="nav-link" href="?page=ver_video">
|
| 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():
|