skailan-conversations
Version:
Servicio de conversaciones y mensajería para Skailan
96 lines • 4.03 kB
JavaScript
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