diff --git a/logs/system.log b/logs/system.log index e5835f0..2d63eda 100644 --- a/logs/system.log +++ b/logs/system.log @@ -65,3 +65,5 @@ Stack trace: [2026-01-21 23:49:55] [INFO] delete_template.php parsed ids {"ids":[1]} [2026-01-24 02:11:00] [INFO] Bot paused for 3 minutes for 573022548060 [2026-01-24 02:14:23] [INFO] Bot paused for 3 minutes for 573022548060 +[2026-01-24 02:18:27] [INFO] Bot paused for 3 minutes for 573022548060 +[2026-01-24 02:18:38] [INFO] Bot paused for 3 minutes for 573022548060 diff --git a/scripts/test_menu_backflow.php b/scripts/test_menu_backflow.php index 0e1f64a..baf9aed 100644 --- a/scripts/test_menu_backflow.php +++ b/scripts/test_menu_backflow.php @@ -99,4 +99,11 @@ $bot->processMessage($user, 'ATRAS'); print_r($stateSvc->getState($phone)); print_r($db->fetch("SELECT current_menu_id FROM users WHERE phone_number = :phone", ['phone' => $phone])); +// 5) Ahora, estando de vuelta en informacion_examenes, seleccionar '1' nuevamente +echo "\n5) En informacion_examenes, enviar '1' de nuevo\n"; +$bot->processMessage($user, '1'); +print_r($stateSvc->getState($phone)); +echo "menu_history: " . json_encode($stateSvc->getStateData($phone, 'menu_history')) . "\n"; +print_r($db->fetch("SELECT current_menu_id FROM users WHERE phone_number = :phone", ['phone' => $phone])); + echo "\nTest script finished.\n"; diff --git a/services/BotService.php b/services/BotService.php index e7876d7..394dd60 100644 --- a/services/BotService.php +++ b/services/BotService.php @@ -164,8 +164,32 @@ class BotService { $advisorReplied = true; error_log("[BotService] processMessage - advisorReplied=true for user {$user['id']}"); } + + // Resolver current_menu_id fresco (evitar usar $user desactualizado que viene del webhook) + $resolvedMenuId = null; + try { + $stateSvc = new ConversationStateService(); + $resolvedMenuId = $stateSvc->getCurrentMenuId($phoneNumber); + } catch (Exception $e) { + // ignore + } + + if (empty($resolvedMenuId)) { + try { + $cur = $this->db->fetch("SELECT current_menu_id FROM users WHERE phone_number = :phone", ['phone' => $phoneNumber]); + $resolvedMenuId = $cur ? $cur['current_menu_id'] : ($user['current_menu_id'] ?? null); + } catch (Exception $e) { + $resolvedMenuId = $user['current_menu_id'] ?? null; + } + } + + // Actualizar el array $user para que funciones posteriores lo usen si es necesario + $user['current_menu_id'] = $resolvedMenuId; + + try { error_log("[BotService] processMessage - resolved current_menu_id={$resolvedMenuId} for user {$user['id']} phone={$phoneNumber}"); } catch (Throwable $t) {} + // Verificar si el usuario está en un menú - if ($user['current_menu_id']) { + if (!empty($resolvedMenuId)) { $this->processMenuSelection($user, $messageText); } else { // No usar las "respuestas rápidas" (autoresponses) automáticamente desde el bot.