Sindbad~EG File Manager

Current Path : /home/copmadinaarea/thecopmadinaarea.org/portal/api/
Upload File :
Current File : /home/copmadinaarea/thecopmadinaarea.org/portal/api/chatbot.php

<?php
require_once '../config/config.php';
require_once '../classes/ChatbotService.php';

header('Content-Type: application/json');

if ($_SERVER['REQUEST_METHOD'] !== 'POST') {
    http_response_code(405);
    echo json_encode(['success' => false, 'message' => 'Method not allowed']);
    exit;
}

$data = json_decode(file_get_contents('php://input'), true);
$action = $data['action'] ?? '';

try {
    $chatbot = new ChatbotService();
    
    if (!$chatbot->isEnabled()) {
        echo json_encode(['success' => false, 'message' => 'Chatbot is currently disabled']);
        exit;
    }
    
    switch ($action) {
        case 'send_message':
            $message = trim($data['message'] ?? '');
            $sessionId = $data['session_id'] ?? session_id();
            
            if (empty($message)) {
                echo json_encode(['success' => false, 'message' => 'Message is required']);
                exit;
            }
            
            // Get user info if logged in
            $userId = null;
            $userName = null;
            $userEmail = null;
            
            if (isLoggedIn()) {
                $userId = $_SESSION['user_id'] ?? null;
                $userName = $_SESSION['full_name'] ?? null;
                $userEmail = $_SESSION['email'] ?? null;
            }
            
            // Get or create conversation
            $conversationId = $chatbot->getOrCreateConversation($sessionId, $userId, $userName, $userEmail);
            
            // Save user message
            $chatbot->saveMessage($conversationId, 'user', $message);
            
            // Generate response
            $response = $chatbot->generateResponse($message, $conversationId);
            
            echo json_encode([
                'success' => true,
                'response' => $response['response'],
                'sources' => $response['sources'],
                'response_time' => $response['response_time'],
                'conversation_id' => $conversationId
            ]);
            break;
            
        case 'get_history':
            $sessionId = $data['session_id'] ?? session_id();
            $conversationId = $chatbot->getOrCreateConversation($sessionId);
            $history = $chatbot->getConversationHistory($conversationId, 20);
            
            echo json_encode([
                'success' => true,
                'history' => $history
            ]);
            break;
            
        case 'mark_helpful':
            $messageId = $data['message_id'] ?? 0;
            $isHelpful = $data['is_helpful'] ?? true;
            
            $result = $chatbot->markMessageHelpful($messageId, $isHelpful);
            
            echo json_encode([
                'success' => $result,
                'message' => $result ? 'Thank you for your feedback!' : 'Failed to save feedback'
            ]);
            break;
            
        case 'rate_conversation':
            $sessionId = $data['session_id'] ?? session_id();
            $rating = $data['rating'] ?? 0;
            $feedback = $data['feedback'] ?? null;
            
            $conversationId = $chatbot->getOrCreateConversation($sessionId);
            $result = $chatbot->rateConversation($conversationId, $rating, $feedback);
            
            echo json_encode([
                'success' => $result,
                'message' => $result ? 'Thank you for rating this conversation!' : 'Failed to save rating'
            ]);
            break;
            
        case 'get_settings':
            echo json_encode([
                'success' => true,
                'settings' => [
                    'welcome_message' => $chatbot->getSetting('welcome_message'),
                    'placeholder_text' => $chatbot->getSetting('placeholder_text'),
                    'primary_color' => $chatbot->getSetting('primary_color'),
                    'bot_name' => $chatbot->getSetting('bot_name'),
                    'bot_avatar' => $chatbot->getSetting('bot_avatar'),
                    'show_typing_indicator' => $chatbot->getSetting('show_typing_indicator'),
                    'response_delay' => $chatbot->getSetting('response_delay')
                ]
            ]);
            break;
            
        default:
            echo json_encode(['success' => false, 'message' => 'Invalid action']);
            break;
    }
    
} catch (Exception $e) {
    error_log('Chatbot API error: ' . $e->getMessage());
    echo json_encode([
        'success' => false,
        'message' => 'An error occurred. Please try again later.'
    ]);
}

Sindbad File Manager Version 1.0, Coded By Sindbad EG ~ The Terrorists