diff --git a/.DS_Store b/.DS_Store index f4f05c71..3ccbdbaa 100644 Binary files a/.DS_Store and b/.DS_Store differ diff --git a/src/api/integrations/channel/whatsapp/whatsapp.baileys.service.ts b/src/api/integrations/channel/whatsapp/whatsapp.baileys.service.ts index 5c1bfd59..b0b97b75 100644 --- a/src/api/integrations/channel/whatsapp/whatsapp.baileys.service.ts +++ b/src/api/integrations/channel/whatsapp/whatsapp.baileys.service.ts @@ -1044,7 +1044,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..39b52184 100644 --- a/src/api/integrations/event/event.controller.ts +++ b/src/api/integrations/event/event.controller.ts @@ -14,12 +14,24 @@ 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..543c759a 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; @@ -284,6 +285,7 @@ export class KafkaController extends EventController implements EventControllerI const logEnabled = configService.get('LOG').LEVEL.includes('WEBHOOKS'); const message = { + ...(extra ?? {}), event, instance: instanceName, data, diff --git a/src/api/integrations/event/nats/nats.controller.ts b/src/api/integrations/event/nats/nats.controller.ts index 09b59779..1ff4fbae 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; @@ -65,6 +66,7 @@ export class NatsController extends EventController implements EventControllerIn const logEnabled = configService.get('LOG').LEVEL.includes('WEBHOOKS'); const message = { + ...(extra ?? {}), event, instance: instanceName, data, diff --git a/src/api/integrations/event/pusher/pusher.controller.ts b/src/api/integrations/event/pusher/pusher.controller.ts index eef244b2..045f7cc4 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; @@ -133,6 +134,7 @@ export class PusherController extends EventController implements EventController const enabledLog = configService.get('LOG').LEVEL.includes('WEBHOOKS'); const eventName = event.replace(/_/g, '.').toLowerCase(); const pusherData = { + ...(extra ?? {}), event, instance: instanceName, data, diff --git a/src/api/integrations/event/rabbitmq/rabbitmq.controller.ts b/src/api/integrations/event/rabbitmq/rabbitmq.controller.ts index 3295b12d..b4625508 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; @@ -233,6 +234,7 @@ export class RabbitmqController extends EventController implements EventControll const logEnabled = configService.get('LOG').LEVEL.includes('WEBHOOKS'); const message = { + ...(extra ?? {}), event, instance: instanceName, data, diff --git a/src/api/integrations/event/sqs/sqs.controller.ts b/src/api/integrations/event/sqs/sqs.controller.ts index 08c89053..2b0398ef 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; @@ -128,6 +129,7 @@ export class SqsController extends EventController implements EventControllerInt const sqsUrl = `https://sqs.${sqsConfig.REGION}.amazonaws.com/${sqsConfig.ACCOUNT_ID}/${queueName}`; const message = { + ...(extra ?? {}), event, instance: instanceName, dataType: 'json', diff --git a/src/api/integrations/event/webhook/webhook.controller.ts b/src/api/integrations/event/webhook/webhook.controller.ts index bd4e5fe0..7f1dd8dc 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; @@ -90,6 +91,7 @@ export class WebhookController extends EventController implements EventControlle const regex = /^(https?:\/\/)/; const webhookData = { + ...(extra ?? {}), event, instance: instanceName, data, diff --git a/src/api/integrations/event/websocket/websocket.controller.ts b/src/api/integrations/event/websocket/websocket.controller.ts index 859f67e7..2d2c471b 100644 --- a/src/api/integrations/event/websocket/websocket.controller.ts +++ b/src/api/integrations/event/websocket/websocket.controller.ts @@ -116,6 +116,7 @@ export class WebsocketController extends EventController implements EventControl sender, apiKey, integration, + extra, }: EmitData): Promise { if (integration && !integration.includes('websocket')) { return; @@ -128,6 +129,7 @@ export class WebsocketController extends EventController implements EventControl const configEv = event.replace(/[.-]/gm, '_').toUpperCase(); const logEnabled = configService.get('LOG').LEVEL.includes('WEBSOCKET'); const message = { + ...(extra ?? {}), event, instance: instanceName, data, diff --git a/src/api/services/channel.service.ts b/src/api/services/channel.service.ts index 14254807..56bec080 100644 --- a/src/api/services/channel.service.ts +++ b/src/api/services/channel.service.ts @@ -432,7 +432,13 @@ 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(); @@ -453,6 +459,7 @@ export class ChannelStartupService { apiKey: expose && instanceApikey ? instanceApikey : null, local, integration, + extra, }); }