114 lines
4.5 KiB
PHP
114 lines
4.5 KiB
PHP
<?php
|
||
/**
|
||
* CRM AI Drawer Endpoint
|
||
* Простой endpoint для интеграции AI Drawer с локальным AI ассистентом
|
||
*/
|
||
|
||
header('Content-Type: application/json');
|
||
header('Access-Control-Allow-Origin: *');
|
||
header('Access-Control-Allow-Methods: POST, OPTIONS');
|
||
header('Access-Control-Allow-Headers: Content-Type');
|
||
|
||
// Обработка preflight запросов
|
||
if ($_SERVER['REQUEST_METHOD'] === 'OPTIONS') {
|
||
http_response_code(200);
|
||
exit();
|
||
}
|
||
|
||
// Проверяем метод запроса
|
||
if ($_SERVER['REQUEST_METHOD'] !== 'POST') {
|
||
http_response_code(405);
|
||
echo json_encode(['error' => 'Method not allowed']);
|
||
exit();
|
||
}
|
||
|
||
// Получаем данные из запроса
|
||
$input = file_get_contents('php://input');
|
||
$data = json_decode($input, true);
|
||
|
||
if (!$data || !isset($data['message'])) {
|
||
http_response_code(400);
|
||
echo json_encode(['error' => 'Invalid request data']);
|
||
exit();
|
||
}
|
||
|
||
$message = $data['message'];
|
||
$context = $data['context'] ?? [];
|
||
$sessionId = $data['sessionId'] ?? 'crm-session-' . time();
|
||
|
||
// Логируем запрос
|
||
error_log("CRM AI Drawer: Получен запрос - " . $message . " | Контекст: " . json_encode($context));
|
||
|
||
try {
|
||
// Простые ответы на основе контекста и сообщения
|
||
$response = generateResponse($message, $context, $sessionId);
|
||
|
||
echo json_encode([
|
||
'response' => $response,
|
||
'sessionId' => $sessionId,
|
||
'context' => $context,
|
||
'timestamp' => date('Y-m-d H:i:s')
|
||
]);
|
||
|
||
} catch (Exception $e) {
|
||
error_log("CRM AI Drawer Error: " . $e->getMessage());
|
||
|
||
http_response_code(500);
|
||
echo json_encode([
|
||
'error' => 'Internal server error',
|
||
'message' => 'Произошла ошибка при обработке запроса'
|
||
]);
|
||
}
|
||
|
||
function generateResponse($message, $context, $sessionId) {
|
||
$message = strtolower(trim($message));
|
||
|
||
// Приветствие
|
||
if (preg_match('/привет|hello|hi|здравствуй/', $message)) {
|
||
return "Привет! Я AI ассистент вашей CRM системы. Чем могу помочь?";
|
||
}
|
||
|
||
// Помощь
|
||
if (preg_match('/помощь|help|что ты умеешь/', $message)) {
|
||
return "Я могу помочь вам с:\n• Поиском информации в CRM\n• Анализом данных\n• Созданием отчетов\n• Работой с клиентами\n• Обработкой документов\n\nПросто опишите, что вам нужно!";
|
||
}
|
||
|
||
// Работа с клиентами
|
||
if (preg_match('/клиент|client|customer/', $message)) {
|
||
$module = $context['module'] ?? 'неизвестный';
|
||
return "Работаем с клиентами в модуле: {$module}. Что именно вас интересует?";
|
||
}
|
||
|
||
// Работа с документами
|
||
if (preg_match('/документ|document|файл/', $message)) {
|
||
return "Для работы с документами в CRM используйте модуль 'Документы'. Хотите создать новый документ или найти существующий?";
|
||
}
|
||
|
||
// Отчеты
|
||
if (preg_match('/отчет|report|статистика/', $message)) {
|
||
return "Для создания отчетов перейдите в модуль 'Отчеты'. Какой тип отчета вас интересует?";
|
||
}
|
||
|
||
// Поиск
|
||
if (preg_match('/найти|search|поиск/', $message)) {
|
||
return "Для поиска используйте поисковую строку в верхней части CRM или модуль 'Поиск'. Что именно вы ищете?";
|
||
}
|
||
|
||
// Контекстная информация
|
||
if (!empty($context['module'])) {
|
||
$module = $context['module'];
|
||
$recordId = $context['projectId'] ?? 'не указан';
|
||
|
||
return "Вы находитесь в модуле '{$module}' (запись: {$recordId}). Как я могу помочь с этой записью?";
|
||
}
|
||
|
||
// Общий ответ
|
||
return "Я получил ваше сообщение: '{$message}'. Сейчас работаю в режиме локального AI ассистента. Для более продвинутых возможностей подключите Typebot сервер.";
|
||
}
|
||
?>
|
||
|
||
|
||
|
||
|
||
|