execute('DELETE FROM users WHERE phone_number = :p', ['p' => $phone]); $userId = $db->insert('users', ['phone_number' => $phone, 'status' => 'active', 'created_at' => date('Y-m-d H:i:s')]); $user = $db->fetch('SELECT * FROM users WHERE id = :id', ['id' => $userId]); // Simular comando asesor $bot->processMessage($user, 'asesor', 'text'); // Intentar también llamar directamente putOnHold para comprobar $bot->putOnHold($phone); $user2 = $db->fetch('SELECT * FROM users WHERE id = :id', ['id' => $userId]); echo "User after putOnHold: " . json_encode($user2) . "\n"; if ($user2['on_hold']) { echo "ON_HOLD set correctly for $phone\n"; } else { echo "ON_HOLD NOT SET!\n"; } // Simular finalizar conversación via menu action (invoke processMenuAction indirectly) // Crear menu option end test: insert temporary menu and option $menuId = $db->insert('menus', ['name'=>'test_menu_end','title'=>'Test End','is_root'=>0,'is_active'=>1,'created_at'=>date('Y-m-d H:i:s')]); $optId = $db->insert('menu_options', ['menu_id'=>$menuId,'option_number'=>9,'text'=>'Terminar','action_type'=>'end','action_value'=>'Gracias, cerrando.','is_active'=>1,'created_at'=>date('Y-m-d H:i:s')]); // Liberar hold y luego establecer menu para probar pause $bot->releaseHold($phone); $db->update('users', ['current_menu_id'=>$menuId], 'id = :id', ['id' => $userId]); // Simular selection '9' - recargar usuario para que tenga el current_menu_id $user = $db->fetch('SELECT * FROM users WHERE id = :id', ['id' => $userId]); $bot->processMessage($user, '9', 'text'); $user3 = $db->fetch('SELECT * FROM users WHERE id = :id', ['id' => $userId]); if (!empty($user3['bot_paused_until'])) { echo "Bot paused until: {$user3['bot_paused_until']}\n"; } else { echo "Bot pause NOT SET!\n"; } // Cleanup $db->execute('DELETE FROM menu_options WHERE menu_id = :mid', ['mid' => $menuId]); $db->execute('DELETE FROM menus WHERE id = :id', ['id' => $menuId]); $db->execute('DELETE FROM users WHERE id = :id', ['id' => $userId]); echo "Done\n";