diff --git a/src/api/integrations/channel/whatsapp/whatsapp.baileys.service.ts b/src/api/integrations/channel/whatsapp/whatsapp.baileys.service.ts index 2636adbd..6dd89d29 100644 --- a/src/api/integrations/channel/whatsapp/whatsapp.baileys.service.ts +++ b/src/api/integrations/channel/whatsapp/whatsapp.baileys.service.ts @@ -1022,7 +1022,10 @@ export class BaileysStartupService extends ChannelStartupService { messagesRaw.push(this.prepareMessage(m)); } - this.sendDataWebhook(Events.MESSAGES_SET, [...messagesRaw]); + this.sendDataWebhook(Events.MESSAGES_SET, [...messagesRaw], true, undefined, { + isLatest, + progress, + }); if (this.configService.get('DATABASE').SAVE_DATA.HISTORIC) { await this.prismaRepository.message.createMany({ data: messagesRaw, skipDuplicates: true }); diff --git a/src/api/integrations/event/event.controller.ts b/src/api/integrations/event/event.controller.ts index 7df3de92..7b168406 100644 --- a/src/api/integrations/event/event.controller.ts +++ b/src/api/integrations/event/event.controller.ts @@ -14,12 +14,13 @@ export type EmitData = { apiKey?: string; local?: boolean; integration?: string[]; + extra?: Record; }; export interface EventControllerInterface { set(instanceName: string, data: any): Promise; get(instanceName: string): Promise; - emit({ instanceName, origin, event, data, serverUrl, dateTime, sender, apiKey, local }: EmitData): Promise; + emit({ instanceName, origin, event, data, serverUrl, dateTime, sender, apiKey, local, extra }: EmitData): Promise; } export class EventController { diff --git a/src/api/integrations/event/event.manager.ts b/src/api/integrations/event/event.manager.ts index 90547932..5dd3fcf2 100644 --- a/src/api/integrations/event/event.manager.ts +++ b/src/api/integrations/event/event.manager.ts @@ -123,6 +123,7 @@ export class EventManager { apiKey?: string; local?: boolean; integration?: string[]; + extra?: Record; }): Promise { await this.websocket.emit(eventData); await this.rabbitmq.emit(eventData); diff --git a/src/api/integrations/event/kafka/kafka.controller.ts b/src/api/integrations/event/kafka/kafka.controller.ts index 416bcb13..04dc8dd3 100644 --- a/src/api/integrations/event/kafka/kafka.controller.ts +++ b/src/api/integrations/event/kafka/kafka.controller.ts @@ -262,6 +262,7 @@ export class KafkaController extends EventController implements EventControllerI sender, apiKey, integration, + extra, }: EmitData): Promise { if (integration && !integration.includes('kafka')) { return; @@ -292,6 +293,7 @@ export class KafkaController extends EventController implements EventControllerI sender, apikey: apiKey, timestamp: Date.now(), + ...extra, }; const messageValue = JSON.stringify(message); diff --git a/src/api/integrations/event/nats/nats.controller.ts b/src/api/integrations/event/nats/nats.controller.ts index 09b59779..ca75f057 100644 --- a/src/api/integrations/event/nats/nats.controller.ts +++ b/src/api/integrations/event/nats/nats.controller.ts @@ -47,6 +47,7 @@ export class NatsController extends EventController implements EventControllerIn sender, apiKey, integration, + extra, }: EmitData): Promise { if (integration && !integration.includes('nats')) { return; @@ -72,6 +73,7 @@ export class NatsController extends EventController implements EventControllerIn date_time: dateTime, sender, apikey: apiKey, + ...extra, }; // Instância específica diff --git a/src/api/integrations/event/pusher/pusher.controller.ts b/src/api/integrations/event/pusher/pusher.controller.ts index eef244b2..28398df8 100644 --- a/src/api/integrations/event/pusher/pusher.controller.ts +++ b/src/api/integrations/event/pusher/pusher.controller.ts @@ -121,6 +121,7 @@ export class PusherController extends EventController implements EventController apiKey, local, integration, + extra, }: EmitData): Promise { if (integration && !integration.includes('pusher')) { return; @@ -141,6 +142,7 @@ export class PusherController extends EventController implements EventController sender, server_url: serverUrl, apikey: apiKey, + ...extra, }; if (event == 'qrcode.updated') { delete pusherData.data.qrcode.base64; diff --git a/src/api/integrations/event/rabbitmq/rabbitmq.controller.ts b/src/api/integrations/event/rabbitmq/rabbitmq.controller.ts index 3295b12d..7fe70479 100644 --- a/src/api/integrations/event/rabbitmq/rabbitmq.controller.ts +++ b/src/api/integrations/event/rabbitmq/rabbitmq.controller.ts @@ -209,6 +209,7 @@ export class RabbitmqController extends EventController implements EventControll sender, apiKey, integration, + extra, }: EmitData): Promise { if (integration && !integration.includes('rabbitmq')) { return; @@ -240,6 +241,7 @@ export class RabbitmqController extends EventController implements EventControll date_time: dateTime, sender, apikey: apiKey, + ...extra, }; if (instanceRabbitmq?.enabled && this.amqpChannel) { diff --git a/src/api/integrations/event/sqs/sqs.controller.ts b/src/api/integrations/event/sqs/sqs.controller.ts index 08c89053..40ebc8d5 100644 --- a/src/api/integrations/event/sqs/sqs.controller.ts +++ b/src/api/integrations/event/sqs/sqs.controller.ts @@ -93,6 +93,7 @@ export class SqsController extends EventController implements EventControllerInt sender, apiKey, integration, + extra, }: EmitData): Promise { if (integration && !integration.includes('sqs')) { return; @@ -137,6 +138,7 @@ export class SqsController extends EventController implements EventControllerInt date_time: dateTime, sender, apikey: apiKey, + ...extra, }; const jsonStr = JSON.stringify(message); diff --git a/src/api/integrations/event/webhook/webhook.controller.ts b/src/api/integrations/event/webhook/webhook.controller.ts index bd4e5fe0..fd82f54a 100644 --- a/src/api/integrations/event/webhook/webhook.controller.ts +++ b/src/api/integrations/event/webhook/webhook.controller.ts @@ -65,6 +65,7 @@ export class WebhookController extends EventController implements EventControlle apiKey, local, integration, + extra, }: EmitData): Promise { if (integration && !integration.includes('webhook')) { return; @@ -98,6 +99,7 @@ export class WebhookController extends EventController implements EventControlle sender, server_url: serverUrl, apikey: apiKey, + ...extra, }; if (local && instance?.enabled) { diff --git a/src/api/integrations/event/websocket/websocket.controller.ts b/src/api/integrations/event/websocket/websocket.controller.ts index 72435234..a1ed613f 100644 --- a/src/api/integrations/event/websocket/websocket.controller.ts +++ b/src/api/integrations/event/websocket/websocket.controller.ts @@ -115,6 +115,7 @@ export class WebsocketController extends EventController implements EventControl sender, apiKey, integration, + extra, }: EmitData): Promise { if (integration && !integration.includes('websocket')) { return; @@ -134,6 +135,7 @@ export class WebsocketController extends EventController implements EventControl date_time: dateTime, sender, apikey: apiKey, + ...extra, }; if (configService.get('WEBSOCKET')?.GLOBAL_EVENTS) { diff --git a/src/api/services/channel.service.ts b/src/api/services/channel.service.ts index 947f9c39..06e2f565 100644 --- a/src/api/services/channel.service.ts +++ b/src/api/services/channel.service.ts @@ -431,7 +431,7 @@ export class ChannelStartupService { return data; } - public async sendDataWebhook(event: Events, data: T, local = true, integration?: string[]) { + public async sendDataWebhook(event: Events, data: T, local = true, integration?: string[], extra?: Record) { const serverUrl = this.configService.get('SERVER').URL; const tzoffset = new Date().getTimezoneOffset() * 60000; //offset in milliseconds const localISOTime = new Date(Date.now() - tzoffset).toISOString(); @@ -452,6 +452,7 @@ export class ChannelStartupService { apiKey: expose && instanceApikey ? instanceApikey : null, local, integration, + extra, }); }