false, 'error' => 'user_id required']); exit; } $db = Database::getInstance(); $user = $db->fetch('SELECT phone_number FROM users WHERE id = :id', ['id' => $userId]); if (!$user) { http_response_code(404); echo json_encode(['success' => false, 'error' => 'User not found']); exit; } $operator = $_SESSION['admin_user'] ?? null; $operatorId = $operator['id'] ?? null; try { require_once __DIR__ . '/../services/BotService.php'; $bot = new BotService(); $bot->attendConversation($user['phone_number'], $operatorId); echo json_encode(['success' => true]); } catch (Exception $e) { // Fallback: apply updates directly and log activity $now = date('Y-m-d H:i:s'); $db->update('users', ['in_service' => 1, 'in_service_by' => $operatorId, 'in_service_at' => $now, 'advisor_requested' => 0], 'id = :id', ['id' => $userId]); $db->insert('operator_activity', ['user_id' => $userId, 'operator_id' => $operatorId, 'action' => 'attend', 'details' => 'Marked in_service via fallback', 'created_at' => $now]); echo json_encode(['success' => true, 'warning' => 'BotService failed, fallback applied']); } } catch (Exception $e) { http_response_code(500); echo json_encode(['success' => false, 'error' => $e->getMessage()]); }