From 29cd00ddf8efe29b78810f897dc4c37d6d91455e Mon Sep 17 00:00:00 2001 From: tms-desarrollo Date: Tue, 3 Jun 2025 18:30:35 -0400 Subject: [PATCH] feat: update default conversation message for template message --- src/api/dto/sendMessage.dto.ts | 1 + .../channel/meta/whatsapp.business.service.ts | 22 ++++++++++++++++++- src/validate/message.schema.ts | 1 + 3 files changed, 23 insertions(+), 1 deletion(-) diff --git a/src/api/dto/sendMessage.dto.ts b/src/api/dto/sendMessage.dto.ts index 1c9b1154..d9eaa745 100644 --- a/src/api/dto/sendMessage.dto.ts +++ b/src/api/dto/sendMessage.dto.ts @@ -157,6 +157,7 @@ export class SendTemplateDto extends Metadata { language: string; components: any; webhookUrl?: string; + message?: string; } export class SendContactDto extends Metadata { contact: ContactMessage[]; diff --git a/src/api/integrations/channel/meta/whatsapp.business.service.ts b/src/api/integrations/channel/meta/whatsapp.business.service.ts index 5360b9e4..c6d937be 100644 --- a/src/api/integrations/channel/meta/whatsapp.business.service.ts +++ b/src/api/integrations/channel/meta/whatsapp.business.service.ts @@ -713,6 +713,20 @@ export class BusinessStartupService extends ChannelStartupService { return message; } + private getTemplateMessage(message: string, parameters?: any[]) { + if (!message) return; + let transformedMessage = message; + parameters?.forEach((parameter, index) => { + transformedMessage = transformedMessage.replace(`{{${index + 1}}}`, parameter.text); + }); + return transformedMessage; + } + + private getTemplateComponent(components: any[], name: string) { + const c = components.find((c) => c.type.toUpperCase() === name.toUpperCase()); + return c ?? {}; + } + protected async eventHandler(content: any) { const database = this.configService.get('DATABASE'); const settings = await this.findSettings(); @@ -903,7 +917,13 @@ export class BusinessStartupService extends ChannelStartupService { }, }; quoted ? (content.context = { message_id: quoted.id }) : content; - message = { conversation: `▶️${message['template']['name']}◀️` }; + + const body = this.getTemplateComponent(message['template']['components'], 'body'); + const templateMessage = this.getTemplateMessage(message['template']['message'], body.parameters); + + message = { + conversation: templateMessage ?? `▶️${message['template']['name']}◀️`, + }; return await this.post(content, 'messages'); } })(); diff --git a/src/validate/message.schema.ts b/src/validate/message.schema.ts index d514c619..f124601b 100644 --- a/src/validate/message.schema.ts +++ b/src/validate/message.schema.ts @@ -34,6 +34,7 @@ export const templateMessageSchema: JSONSchema7 = { language: { type: 'string' }, components: { type: 'array' }, webhookUrl: { type: 'string' }, + message: { type: 'string' }, }, required: ['name', 'language'], };