58 lines
1.6 KiB
PHP
58 lines
1.6 KiB
PHP
<?php
|
|
|
|
require_once __DIR__ . '/../lib/config.php';
|
|
require_once __DIR__ . '/../lib/OpenAIService.php';
|
|
require_once __DIR__ . '/../db/config.php';
|
|
|
|
header('Content-Type: application/json');
|
|
|
|
session_start();
|
|
if (empty($_SESSION['session_id'])) {
|
|
$_SESSION['session_id'] = bin2hex(random_bytes(16));
|
|
}
|
|
$session_id = $_SESSION['session_id'];
|
|
|
|
if ($_SERVER['REQUEST_METHOD'] !== 'POST') {
|
|
echo json_encode(['error' => '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;
|
|
} |