From f6d8ebd8d3b8ebdd1f011b8adb6d3a80ea2eca22 Mon Sep 17 00:00:00 2001 From: Amilton Morais Date: Tue, 3 Oct 2023 16:39:04 -0300 Subject: [PATCH 1/7] Update dev-env.yml MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Inserido nova variável WEBHOOK_BASE64 para recuperar Base64 da media enviar por webhook. --- src/dev-env.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/src/dev-env.yml b/src/dev-env.yml index 7af78d40..cadfe105 100644 --- a/src/dev-env.yml +++ b/src/dev-env.yml @@ -97,6 +97,7 @@ WEBHOOK: WEBHOOK_BY_EVENTS: false # Automatically maps webhook paths # Set the events you want to hear + WEBHOOK_BASE64: false EVENTS: APPLICATION_STARTUP: false QRCODE_UPDATED: true From d007fc49d89c60319997c1dfc2f82b088be6d000 Mon Sep 17 00:00:00 2001 From: Amilton Morais Date: Tue, 3 Oct 2023 16:45:05 -0300 Subject: [PATCH 2/7] Update instance.controller.ts Foi criado novas propriedades para recuperar Base64 da media enviada por webhook. --- src/whatsapp/controllers/instance.controller.ts | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/whatsapp/controllers/instance.controller.ts b/src/whatsapp/controllers/instance.controller.ts index a2903f59..3ead8690 100644 --- a/src/whatsapp/controllers/instance.controller.ts +++ b/src/whatsapp/controllers/instance.controller.ts @@ -41,6 +41,7 @@ export class InstanceController { instanceName, webhook, webhook_by_events, + webhook_base64, events, qrcode, number, @@ -139,6 +140,7 @@ export class InstanceController { url: webhook, events: newEvents, webhook_by_events, + webhook_base64, }); webhookEvents = (await this.webhookService.find(instance)).events; @@ -297,6 +299,7 @@ export class InstanceController { webhook: { webhook, webhook_by_events, + webhook_base64, events: webhookEvents, }, websocket: { @@ -390,6 +393,7 @@ export class InstanceController { webhook: { webhook, webhook_by_events, + webhook_base64, events: webhookEvents, }, websocket: { From b8f1e8a7ef025f6c8ae8c0bf849cd071cfbe5573 Mon Sep 17 00:00:00 2001 From: Amilton Morais Date: Tue, 3 Oct 2023 16:56:44 -0300 Subject: [PATCH 3/7] Update instance.dto.ts Foi criado novas propriedades "webhook_base64?: boolean;" para recuperar Base64 da media enviada por webhook. --- src/whatsapp/dto/instance.dto.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/src/whatsapp/dto/instance.dto.ts b/src/whatsapp/dto/instance.dto.ts index 7807d1a5..700fa099 100644 --- a/src/whatsapp/dto/instance.dto.ts +++ b/src/whatsapp/dto/instance.dto.ts @@ -5,6 +5,7 @@ export class InstanceDto { token?: string; webhook?: string; webhook_by_events?: boolean; + webhook_base64?: boolean; events?: string[]; reject_call?: boolean; msg_call?: string; From f8e3b76a4ae079957f54e8a6a0d40339ef22852d Mon Sep 17 00:00:00 2001 From: Amilton Morais Date: Tue, 3 Oct 2023 16:59:06 -0300 Subject: [PATCH 4/7] Update webhook.model.ts Foi criado novas propriedades para recuperar Base64 da media enviada por webhook. --- src/whatsapp/models/webhook.model.ts | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/whatsapp/models/webhook.model.ts b/src/whatsapp/models/webhook.model.ts index 05a222e0..9a1bb43d 100644 --- a/src/whatsapp/models/webhook.model.ts +++ b/src/whatsapp/models/webhook.model.ts @@ -8,6 +8,7 @@ export class WebhookRaw { enabled?: boolean; events?: string[]; webhook_by_events?: boolean; + webhook_base64?: boolean; } const webhookSchema = new Schema({ @@ -16,6 +17,7 @@ const webhookSchema = new Schema({ enabled: { type: Boolean, required: true }, events: { type: [String], required: true }, webhook_by_events: { type: Boolean, required: true }, + webhook_base64: { type: Boolean, required: true }, }); export const WebhookModel = dbserver?.model(WebhookRaw.name, webhookSchema, 'webhook'); From f76a9247005f598aabdb5b6dd6294f2bf5638bc5 Mon Sep 17 00:00:00 2001 From: Amilton Morais Date: Tue, 3 Oct 2023 17:13:58 -0300 Subject: [PATCH 5/7] Update webhook.service.ts Foi criado novo variavel "webhook_base64:false' para retorno erro. --- src/whatsapp/services/webhook.service.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/whatsapp/services/webhook.service.ts b/src/whatsapp/services/webhook.service.ts index dd0a88cd..7dbb9d36 100644 --- a/src/whatsapp/services/webhook.service.ts +++ b/src/whatsapp/services/webhook.service.ts @@ -26,7 +26,7 @@ export class WebhookService { return result; } catch (error) { - return { enabled: false, url: '', events: [], webhook_by_events: false }; + return { enabled: false, url: '', events: [], webhook_by_events: false, webhook_base64 : false }; } } } From f085343a999682d0badce1e5680a6d9769d9504e Mon Sep 17 00:00:00 2001 From: Amilton Morais Date: Tue, 3 Oct 2023 17:18:58 -0300 Subject: [PATCH 6/7] Update whatsapp.service.ts MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Foi criado novo código para recuperar Base64 da media enviada por webhook. --- src/whatsapp/services/whatsapp.service.ts | 49 ++++++++++++++++++----- 1 file changed, 40 insertions(+), 9 deletions(-) diff --git a/src/whatsapp/services/whatsapp.service.ts b/src/whatsapp/services/whatsapp.service.ts index 567a587e..2c39f500 100644 --- a/src/whatsapp/services/whatsapp.service.ts +++ b/src/whatsapp/services/whatsapp.service.ts @@ -276,6 +276,10 @@ export class WAStartupService { this.localWebhook.webhook_by_events = data?.webhook_by_events; this.logger.verbose(`Webhook by events: ${this.localWebhook.webhook_by_events}`); + this.localWebhook.webhook_base64 = data?.webhook_base64; + this.logger.verbose(`Webhook by webhook_base64: ${this.localWebhook.webhook_base64}`); + + this.logger.verbose('Webhook loaded'); } @@ -1528,15 +1532,42 @@ export class WAStartupService { return; } - const messageRaw: MessageRaw = { - key: received.key, - pushName: received.pushName, - message: { ...received.message }, - messageType: getContentType(received.message), - messageTimestamp: received.messageTimestamp as number, - owner: this.instance.name, - source: getDevice(received.key.id), - }; + let messageRaw: MessageRaw; + const globalWebhook = this.configService.get('WEBHOOK').GLOBAL; + if (this.localWebhook.webhook_base64 === true && received?.message.documentMessage || received?.message.imageMessage ) { + const buffer = await downloadMediaMessage( + { key: received.key, message: received?.message }, + 'buffer', + {}, + { + logger: P({ level: 'error' }), + reuploadRequest: this.client.updateMediaMessage, + }, + ); + console.log(buffer); + messageRaw = { + key: received.key, + pushName: received.pushName, + message: { + ...received.message, + base64: buffer ? buffer.toString('base64') : undefined, + }, + messageType: getContentType(received.message), + messageTimestamp: received.messageTimestamp as number, + owner: this.instance.name, + source: getDevice(received.key.id), + }; + } else { + messageRaw = { + key: received.key, + pushName: received.pushName, + message: { ...received.message }, + messageType: getContentType(received.message), + messageTimestamp: received.messageTimestamp as number, + owner: this.instance.name, + source: getDevice(received.key.id), + }; + } if (this.localSettings.read_messages && received.key.id !== 'status@broadcast') { await this.client.readMessages([received.key]); From 523f3301c0f9527ac5eaf2d4792b81d72c2ed110 Mon Sep 17 00:00:00 2001 From: Amilton Morais Date: Tue, 3 Oct 2023 17:20:14 -0300 Subject: [PATCH 7/7] Update wa.types.ts Foi criado novas propriedades para recuperar Base64 da media enviada por webhook. --- src/whatsapp/types/wa.types.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/src/whatsapp/types/wa.types.ts b/src/whatsapp/types/wa.types.ts index 2025e7f7..9f326c8a 100644 --- a/src/whatsapp/types/wa.types.ts +++ b/src/whatsapp/types/wa.types.ts @@ -50,6 +50,7 @@ export declare namespace wa { url?: string; events?: string[]; webhook_by_events?: boolean; + webhook_base64?: boolean; }; export type LocalChatwoot = {