'Invalid request method.']); exit; } $input = json_decode(file_get_contents('php://input'), true); if (!isset($input['message']) || trim($input['message']) === '') { echo json_encode(['error' => 'Message is required.']); exit; } $user_message = trim($input['message']); try { $pdo = db(); // Save user message $stmt = $pdo->prepare("INSERT INTO chat_log (session_id, sender, message) VALUES (?, ?, ?)"); $stmt->execute([$session_id, 'user', $user_message]); // Get AI response $response = OpenAIService::getCompletion($user_message); if (!empty($response['error'])) { http_response_code(500); echo json_encode($response); exit; } $ai_message = $response['reply']; // Save AI message $stmt = $pdo->prepare("INSERT INTO chat_log (session_id, sender, message) VALUES (?, ?, ?)"); $stmt->execute([$session_id, 'ai', $ai_message]); echo json_encode(['reply' => $ai_message]); } catch (PDOException $e) { // Log error and return a generic error message error_log("Database error: " . $e->getMessage()); echo json_encode(['error' => 'An internal server error occurred.']); exit; }