mirror of
https://github.com/marcogll/talia_bot.git
synced 2026-01-13 13:25:19 +00:00
Merge pull request #23 from marcogll/feature/flow-engine-implementation-15654864159042246464
feat: Implement JSON-driven conversational flow engine
This commit is contained in:
@@ -188,6 +188,23 @@ async def universal_handler(update: Update, context: ContextTypes.DEFAULT_TYPE)
|
|||||||
await button_dispatcher(update, context)
|
await button_dispatcher(update, context)
|
||||||
|
|
||||||
|
|
||||||
|
async def check_print_confirmation_job(context: ContextTypes.DEFAULT_TYPE) -> None:
|
||||||
|
"""
|
||||||
|
Job que se ejecuta para verificar la confirmación de impresión.
|
||||||
|
"""
|
||||||
|
job = context.job
|
||||||
|
user_id, job_id, file_name = job.data
|
||||||
|
|
||||||
|
logger.info(f"Running print confirmation check for job_id: {job_id}")
|
||||||
|
|
||||||
|
confirmation_data = await asyncio.to_thread(check_for_confirmation, job_id)
|
||||||
|
|
||||||
|
if confirmation_data:
|
||||||
|
await context.bot.send_message(chat_id=user_id, text=f"✅ ¡Éxito! Tu archivo '{file_name}' ha sido impreso correctamente.")
|
||||||
|
else:
|
||||||
|
await context.bot.send_message(chat_id=user_id, text=f"⚠️ El trabajo de impresión para '{file_name}' fue enviado, pero no he recibido una confirmación de la impresora. Por favor, verifica la bandeja de la impresora.")
|
||||||
|
|
||||||
|
|
||||||
async def handle_flow_resolution(update: Update, context: ContextTypes.DEFAULT_TYPE, result: dict):
|
async def handle_flow_resolution(update: Update, context: ContextTypes.DEFAULT_TYPE, result: dict):
|
||||||
"""
|
"""
|
||||||
Maneja la acción final de un flujo completado.
|
Maneja la acción final de un flujo completado.
|
||||||
@@ -344,14 +361,13 @@ async def handle_flow_resolution(update: Update, context: ContextTypes.DEFAULT_T
|
|||||||
if success:
|
if success:
|
||||||
final_message = f"Recibido. 📨\n\nTu trabajo de impresión ha sido enviado (Job ID: {job_id}). Te notificaré cuando la impresora confirme que ha sido impreso."
|
final_message = f"Recibido. 📨\n\nTu trabajo de impresión ha sido enviado (Job ID: {job_id}). Te notificaré cuando la impresora confirme que ha sido impreso."
|
||||||
|
|
||||||
# Esperar y verificar la confirmación
|
# Programar la verificación en segundo plano
|
||||||
await asyncio.sleep(60) # Espera de 60 segundos
|
context.job_queue.run_once(
|
||||||
confirmation_data = await asyncio.to_thread(check_for_confirmation, job_id)
|
check_print_confirmation_job,
|
||||||
|
when=60, # segundos
|
||||||
if confirmation_data:
|
data=(user_id, job_id, file_name),
|
||||||
await context.bot.send_message(chat_id=user_id, text=f"✅ ¡Éxito! Tu archivo '{file_name}' ha sido impreso correctamente.")
|
name=f"print_job_{job_id}"
|
||||||
else:
|
)
|
||||||
await context.bot.send_message(chat_id=user_id, text=f"⚠️ El trabajo de impresión para '{file_name}' fue enviado, pero no he recibido una confirmación de la impresora. Por favor, verifica la bandeja de la impresora.")
|
|
||||||
else:
|
else:
|
||||||
final_message = "❌ Hubo un error al enviar el archivo a la impresora."
|
final_message = "❌ Hubo un error al enviar el archivo a la impresora."
|
||||||
else:
|
else:
|
||||||
|
|||||||
Reference in New Issue
Block a user