refactor: integration folders

This commit is contained in:
Davidson Gomes 2024-08-23 13:20:18 -03:00
parent a08ca7a67d
commit beafc62403
7 changed files with 62 additions and 65 deletions

View File

@ -150,18 +150,18 @@ export class InstanceController {
}, },
hash, hash,
webhook: { webhook: {
webhookUrl: instanceData.webhook.url, webhookUrl: instanceData?.webhook?.url,
webhookByEvents: instanceData.webhook.byEvents, webhookByEvents: instanceData?.webhook?.byEvents,
webhookBase64: instanceData.webhook.base64, webhookBase64: instanceData?.webhook?.base64,
}, },
websocket: { websocket: {
enabled: instanceData.websocket.enabled, enabled: instanceData?.websocket?.enabled,
}, },
rabbitmq: { rabbitmq: {
enabled: instanceData.rabbitmq.enabled, enabled: instanceData?.rabbitmq?.enabled,
}, },
sqs: { sqs: {
enabled: instanceData.sqs.enabled, enabled: instanceData?.sqs?.enabled,
}, },
settings, settings,
qrcode: getQrcode, qrcode: getQrcode,
@ -237,18 +237,18 @@ export class InstanceController {
}, },
hash, hash,
webhook: { webhook: {
webhookUrl: instanceData.webhook.url, webhookUrl: instanceData?.webhook?.url,
webhookByEvents: instanceData.webhook.byEvents, webhookByEvents: instanceData?.webhook?.byEvents,
webhookBase64: instanceData.webhook.base64, webhookBase64: instanceData?.webhook?.base64,
}, },
websocket: { websocket: {
enabled: instanceData.websocket.enabled, enabled: instanceData?.websocket?.enabled,
}, },
rabbitmq: { rabbitmq: {
enabled: instanceData.rabbitmq.enabled, enabled: instanceData?.rabbitmq?.enabled,
}, },
sqs: { sqs: {
enabled: instanceData.sqs.enabled, enabled: instanceData?.sqs?.enabled,
}, },
settings, settings,
chatwoot: { chatwoot: {
@ -269,6 +269,7 @@ export class InstanceController {
}, },
}; };
} catch (error) { } catch (error) {
this.waMonitor.deleteInstance(instanceData.instanceName);
this.logger.error(isArray(error.message) ? error.message[0] : error.message); this.logger.error(isArray(error.message) ? error.message[0] : error.message);
throw new BadRequestException(isArray(error.message) ? error.message[0] : error.message); throw new BadRequestException(isArray(error.message) ? error.message[0] : error.message);
} }

View File

@ -2,7 +2,6 @@ import { InstanceDto } from '@api/dto/instance.dto';
import { PrismaRepository } from '@api/repository/repository.service'; import { PrismaRepository } from '@api/repository/repository.service';
import { import {
difyController, difyController,
eventManager,
flowiseController, flowiseController,
genericController, genericController,
openaiController, openaiController,
@ -90,32 +89,17 @@ export class ChatbotController {
pushName, pushName,
isIntegration, isIntegration,
}; };
// generic
await genericController.emit(emitData); await genericController.emit(emitData);
// typebot
await typebotController.emit(emitData); await typebotController.emit(emitData);
// openai
await openaiController.emit(emitData); await openaiController.emit(emitData);
// dify
await difyController.emit(emitData); await difyController.emit(emitData);
// flowise
await flowiseController.emit(emitData); await flowiseController.emit(emitData);
} }
public async setInstance(instanceName: string, data: InstanceDto): Promise<any> {
if (data.websocket.enabled)
await eventManager.websocket.set(instanceName, {
websocket: {
enabled: true,
events: data.websocket.events,
},
});
}
public processDebounce( public processDebounce(
userMessageDebounce: any, userMessageDebounce: any,
content: string, content: string,

View File

@ -8,11 +8,11 @@ import { Events } from '@api/types/wa.types';
import { Auth, configService, HttpServer, Typebot } from '@config/env.config'; import { Auth, configService, HttpServer, Typebot } from '@config/env.config';
import { Logger } from '@config/logger.config'; import { Logger } from '@config/logger.config';
import { BadRequestException } from '@exceptions'; import { BadRequestException } from '@exceptions';
import { Typebot as TypebotModel } from '@prisma/client';
import { getConversationMessage } from '@utils/getConversationMessage'; import { getConversationMessage } from '@utils/getConversationMessage';
import axios from 'axios'; import axios from 'axios';
import { ChatbotController, ChatbotControllerInterface } from '../../chatbot.controller'; import { ChatbotController, ChatbotControllerInterface } from '../../chatbot.controller';
import { Typebot as TypebotModel } from '@prisma/client';
export class TypebotController extends ChatbotController implements ChatbotControllerInterface { export class TypebotController extends ChatbotController implements ChatbotControllerInterface {
constructor( constructor(

View File

@ -2,7 +2,7 @@ import { Constructor } from '@api/integrations/integration.dto';
export class EventDto { export class EventDto {
webhook?: { webhook?: {
enabled: boolean; enabled?: boolean;
events?: string[]; events?: string[];
url?: string; url?: string;
byEvents?: boolean; byEvents?: boolean;
@ -10,17 +10,17 @@ export class EventDto {
}; };
websocket?: { websocket?: {
enabled: boolean; enabled?: boolean;
events?: string[]; events?: string[];
}; };
sqs?: { sqs?: {
enabled: boolean; enabled?: boolean;
events?: string[]; events?: string[];
}; };
rabbitmq?: { rabbitmq?: {
enabled: boolean; enabled?: boolean;
events?: string[]; events?: string[];
}; };
} }
@ -28,7 +28,7 @@ export class EventDto {
export function EventInstanceMixin<TBase extends Constructor>(Base: TBase) { export function EventInstanceMixin<TBase extends Constructor>(Base: TBase) {
return class extends Base { return class extends Base {
webhook?: { webhook?: {
enabled: boolean; enabled?: boolean;
events?: string[]; events?: string[];
url?: string; url?: string;
byEvents?: boolean; byEvents?: boolean;
@ -36,17 +36,17 @@ export function EventInstanceMixin<TBase extends Constructor>(Base: TBase) {
}; };
websocket?: { websocket?: {
enabled: boolean; enabled?: boolean;
events?: string[]; events?: string[];
}; };
sqs?: { sqs?: {
enabled: boolean; enabled?: boolean;
events?: string[]; events?: string[];
}; };
rabbitmq?: { rabbitmq?: {
enabled: boolean; enabled?: boolean;
events?: string[]; events?: string[];
}; };
}; };

View File

@ -96,35 +96,39 @@ export class EventManager {
} }
public async setInstance(instanceName: string, data: any): Promise<any> { public async setInstance(instanceName: string, data: any): Promise<any> {
await this.websocket.set(instanceName, { if (data.websocket)
websocket: { await this.websocket.set(instanceName, {
enabled: data.websocket?.enabled, websocket: {
events: data.websocket?.events, enabled: data.websocket?.enabled,
}, events: data.websocket?.events,
}); },
});
await this.rabbitmq.set(instanceName, { if (data.rabbitmq)
rabbitmq: { await this.rabbitmq.set(instanceName, {
enabled: data.rabbitmq?.enabled, rabbitmq: {
events: data.rabbitmq?.events, enabled: data.rabbitmq?.enabled,
}, events: data.rabbitmq?.events,
}); },
});
await this.sqs.set(instanceName, { if (data.sqs)
sqs: { await this.sqs.set(instanceName, {
enabled: data.sqs?.enabled, sqs: {
events: data.sqs?.events, enabled: data.sqs?.enabled,
}, events: data.sqs?.events,
}); },
});
await this.webhook.set(instanceName, { if (data.webhook)
webhook: { await this.webhook.set(instanceName, {
enabled: data.webhook?.enabled, webhook: {
events: data.webhook?.events, enabled: data.webhook?.enabled,
url: data.webhook.url, events: data.webhook?.events,
base64: data.webhook.base64, url: data.webhook?.url,
byEvents: data.webhook.byEvents, base64: data.webhook?.base64,
}, byEvents: data.webhook?.byEvents,
}); },
});
} }
} }

View File

@ -207,6 +207,14 @@ export class WAMonitoringService {
} }
} }
public deleteInstance(instanceName: string) {
try {
this.eventEmitter.emit('remove.instance', instanceName, 'inner');
} catch (error) {
this.logger.error(error);
}
}
private async setInstance(instanceData: InstanceDto) { private async setInstance(instanceData: InstanceDto) {
const instance = channelController.init(instanceData, { const instance = channelController.init(instanceData, {
configService: this.configService, configService: this.configService,

View File

@ -427,7 +427,7 @@ export class ConfigService {
ENABLED: process.env?.CHATWOOT_ENABLED === 'true', ENABLED: process.env?.CHATWOOT_ENABLED === 'true',
MESSAGE_DELETE: process.env.CHATWOOT_MESSAGE_DELETE === 'true', MESSAGE_DELETE: process.env.CHATWOOT_MESSAGE_DELETE === 'true',
MESSAGE_READ: process.env.CHATWOOT_MESSAGE_READ === 'true', MESSAGE_READ: process.env.CHATWOOT_MESSAGE_READ === 'true',
BOT_CONTACT: process.env.CHATWOOT_BOT_CONTACT === 'true', BOT_CONTACT: !process.env.CHATWOOT_BOT_CONTACT || process.env.CHATWOOT_BOT_CONTACT === 'true',
IMPORT: { IMPORT: {
DATABASE: { DATABASE: {
CONNECTION: { CONNECTION: {