UNPKG

skailan-conversations

Version:

Servicio de conversaciones y mensajería para Skailan

96 lines 4.03 kB
import { DetectIntentWithAI } from '../../app/use-cases/DetectIntentWithAI'; import { GenerateDynamicResponseWithAI } from '../../app/use-cases/GenerateDynamicResponseWithAI'; import { ExtractEntitiesWithAI } from '../../app/use-cases/ExtractEntitiesWithAI'; import { SummarizeConversationWithAI } from '../../app/use-cases/SummarizeConversationWithAI'; import { MessagePrismaRepository } from '../../infra/database/prisma/MessagePrismaRepository'; import { ConversationPrismaRepository } from '../../infra/database/prisma/ConversationPrismaRepository'; export const detectIntent = async (req, res) => { try { const { text, promptName, llmConfigName } = req.body; const organizationId = req.organization?.id; if (!organizationId) { return res.status(400).json({ error: 'Organization ID not found in request.' }); } const detectIntentUseCase = new DetectIntentWithAI(); const result = await detectIntentUseCase.execute({ organizationId, text, promptName, llmConfigName, }); res.status(200).json(result); } catch (error) { res.status(500).json({ error: error.message || 'Error detecting intent.' }); } }; export const generateDynamicResponse = async (req, res) => { try { const { context, promptName, llmConfigName, parameters } = req.body; const organizationId = req.organization?.id; if (!organizationId) { return res.status(400).json({ error: 'Organization ID not found in request.' }); } const generateDynamicResponseUseCase = new GenerateDynamicResponseWithAI(); const result = await generateDynamicResponseUseCase.execute({ organizationId, context, promptName, llmConfigName, parameters, }); res.status(200).json({ response: result }); } catch (error) { res.status(500).json({ error: error.message || 'Error generating dynamic response.' }); } }; export const extractEntities = async (req, res) => { try { const { text, promptName, llmConfigName, parameters } = req.body; const organizationId = req.organization?.id; if (!organizationId) { return res.status(400).json({ error: 'Organization ID not found in request.' }); } const extractEntitiesUseCase = new ExtractEntitiesWithAI(); const result = await extractEntitiesUseCase.execute({ organizationId, text, promptName, llmConfigName, parameters, }); res.status(200).json(result); } catch (error) { res.status(500).json({ error: error.message || 'Error extracting entities.' }); } }; export const summarizeConversation = async (req, res) => { try { const { conversationId, promptName, llmConfigName, parameters } = req.body; const organizationId = req.organization?.id; if (!organizationId) { return res.status(400).json({ error: 'Organization ID not found in request.' }); } const prisma = req.tenantPrisma; if (!prisma) { return res.status(500).json({ error: 'Prisma client not initialized for tenant.' }); } const messageRepository = new MessagePrismaRepository(prisma); const conversationRepository = new ConversationPrismaRepository(prisma); const summarizeConversationUseCase = new SummarizeConversationWithAI(messageRepository, conversationRepository); const summary = await summarizeConversationUseCase.execute({ organizationId, conversationId, promptName, llmConfigName, parameters, }); res.status(200).json({ summary }); } catch (error) { res.status(500).json({ error: error.message || 'Error summarizing conversation.' }); } }; //# sourceMappingURL=aiIntegrationController.js.map