prepare("SELECT * FROM bot_context WHERE company_id = ? AND phone_number = ? LIMIT 1"); $stmt->execute([$companyId, $phoneNumber]); $ctx = $stmt->fetch(); if ($ctx) { return $ctx; } $stmt = db()->prepare("INSERT INTO bot_context (company_id, phone_number, bot_type, ai_history, metadata) VALUES (?, ?, ?, '[]', '{}')"); $stmt->execute([$companyId, $phoneNumber, $botType]); return [ 'id' => (int)db()->lastInsertId(), 'company_id' => $companyId, 'phone_number' => $phoneNumber, 'bot_type' => $botType, 'current_node' => null, 'ai_history' => '[]', 'metadata' => '{}', ]; } public static function updateNode(int $id, ?string $node): void { $stmt = db()->prepare("UPDATE bot_context SET current_node = ?, updated_at = NOW() WHERE id = ?"); $stmt->execute([$node, $id]); } public static function addAiMessage(int $id, array $message): void { $stmt = db()->prepare("SELECT ai_history FROM bot_context WHERE id = ? LIMIT 1"); $stmt->execute([$id]); $row = $stmt->fetch(); $history = $row ? json_decode($row['ai_history'], true) : []; $history[] = $message; if (count($history) > 50) { array_shift($history); } $stmt = db()->prepare("UPDATE bot_context SET ai_history = ?, updated_at = NOW() WHERE id = ?"); $stmt->execute([json_encode($history), $id]); } public static function getAiHistory(int $id): array { $stmt = db()->prepare("SELECT ai_history FROM bot_context WHERE id = ? LIMIT 1"); $stmt->execute([$id]); $row = $stmt->fetch(); return $row ? json_decode($row['ai_history'], true) ?? [] : []; } public static function updateMetadata(int $id, array $metadata): void { $stmt = db()->prepare("UPDATE bot_context SET metadata = ?, updated_at = NOW() WHERE id = ?"); $stmt->execute([json_encode($metadata), $id]); } public static function getMetadata(int $id): array { $stmt = db()->prepare("SELECT metadata FROM bot_context WHERE id = ? LIMIT 1"); $stmt->execute([$id]); $row = $stmt->fetch(); return $row ? json_decode($row['metadata'], true) ?? [] : []; } public static function reset(int $id): void { $stmt = db()->prepare("UPDATE bot_context SET current_node = NULL, ai_history = '[]', metadata = '{}', updated_at = NOW() WHERE id = ?"); $stmt->execute([$id]); } }