From 4ed1edf53dcf4731b22ccfa939a2452d29bcc19b Mon Sep 17 00:00:00 2001 From: Gabriel Pastori <58153955+gabrielpastori1@users.noreply.github.com> Date: Sat, 16 Dec 2023 17:23:39 -0300 Subject: [PATCH] chatwoot_sign_delimiter --- src/validate/validate.schema.ts | 1 + src/whatsapp/controllers/chatwoot.controller.ts | 2 ++ src/whatsapp/dto/chatwoot.dto.ts | 1 + src/whatsapp/models/chatwoot.model.ts | 2 ++ src/whatsapp/services/chatwoot.service.ts | 8 +++++++- src/whatsapp/services/whatsapp.service.ts | 6 +++++- 6 files changed, 18 insertions(+), 2 deletions(-) diff --git a/src/validate/validate.schema.ts b/src/validate/validate.schema.ts index a468b151..4b803873 100644 --- a/src/validate/validate.schema.ts +++ b/src/validate/validate.schema.ts @@ -889,6 +889,7 @@ export const chatwootSchema: JSONSchema7 = { token: { type: 'string' }, url: { type: 'string' }, sign_msg: { type: 'boolean', enum: [true, false] }, + sign_delimiter: { type: ['string', 'null'] }, reopen_conversation: { type: 'boolean', enum: [true, false] }, conversation_pending: { type: 'boolean', enum: [true, false] }, auto_create: { type: 'boolean', enum: [true, false] }, diff --git a/src/whatsapp/controllers/chatwoot.controller.ts b/src/whatsapp/controllers/chatwoot.controller.ts index b83b2ddc..8f59ccac 100644 --- a/src/whatsapp/controllers/chatwoot.controller.ts +++ b/src/whatsapp/controllers/chatwoot.controller.ts @@ -37,6 +37,7 @@ export class ChatwootController { if (data.sign_msg !== true && data.sign_msg !== false) { throw new BadRequestException('sign_msg is required'); } + if (data.sign_msg === false) data.sign_delimiter = null; } if (!data.enabled) { @@ -45,6 +46,7 @@ export class ChatwootController { data.token = ''; data.url = ''; data.sign_msg = false; + data.sign_delimiter = null; data.reopen_conversation = false; data.conversation_pending = false; data.auto_create = false; diff --git a/src/whatsapp/dto/chatwoot.dto.ts b/src/whatsapp/dto/chatwoot.dto.ts index 22085faf..7960a1a0 100644 --- a/src/whatsapp/dto/chatwoot.dto.ts +++ b/src/whatsapp/dto/chatwoot.dto.ts @@ -5,6 +5,7 @@ export class ChatwootDto { url?: string; name_inbox?: string; sign_msg?: boolean; + sign_delimiter?: string; number?: string; reopen_conversation?: boolean; conversation_pending?: boolean; diff --git a/src/whatsapp/models/chatwoot.model.ts b/src/whatsapp/models/chatwoot.model.ts index ed7c2ef0..54b45f7c 100644 --- a/src/whatsapp/models/chatwoot.model.ts +++ b/src/whatsapp/models/chatwoot.model.ts @@ -10,6 +10,7 @@ export class ChatwootRaw { url?: string; name_inbox?: string; sign_msg?: boolean; + sign_delimiter?: string; number?: string; reopen_conversation?: boolean; conversation_pending?: boolean; @@ -23,6 +24,7 @@ const chatwootSchema = new Schema({ url: { type: String, required: true }, name_inbox: { type: String, required: true }, sign_msg: { type: Boolean, required: true }, + sign_delimiter: { type: String, required: false }, number: { type: String, required: true }, reopen_conversation: { type: Boolean, required: true }, conversation_pending: { type: Boolean, required: true }, diff --git a/src/whatsapp/services/chatwoot.service.ts b/src/whatsapp/services/chatwoot.service.ts index 86fbf13a..65459a62 100644 --- a/src/whatsapp/services/chatwoot.service.ts +++ b/src/whatsapp/services/chatwoot.service.ts @@ -1121,7 +1121,13 @@ export class ChatwootService { if (senderName === null || senderName === undefined) { formatText = messageReceived; } else { - formatText = this.provider.sign_msg ? `*${senderName}:*\n${messageReceived}` : messageReceived; + const formattedDelimiter = this.provider.sign_delimiter + ? this.provider.sign_delimiter.replaceAll('\\n', '\n') + : '\n'; + const textToConcat = this.provider.sign_msg ? [`*${senderName}:*`] : []; + textToConcat.push(messageReceived); + + formatText = textToConcat.join(formattedDelimiter); } for (const message of body.conversation.messages) { diff --git a/src/whatsapp/services/whatsapp.service.ts b/src/whatsapp/services/whatsapp.service.ts index d94a44ec..8eaa1a2a 100644 --- a/src/whatsapp/services/whatsapp.service.ts +++ b/src/whatsapp/services/whatsapp.service.ts @@ -357,10 +357,12 @@ export class WAStartupService { this.logger.verbose(`Chatwoot url: ${data.url}`); this.logger.verbose(`Chatwoot inbox name: ${data.name_inbox}`); this.logger.verbose(`Chatwoot sign msg: ${data.sign_msg}`); + this.logger.verbose(`Chatwoot sign delimiter: ${data.sign_delimiter}`); this.logger.verbose(`Chatwoot reopen conversation: ${data.reopen_conversation}`); this.logger.verbose(`Chatwoot conversation pending: ${data.conversation_pending}`); - Object.assign(this.localChatwoot, data); + Object.assign(this.localChatwoot, { ...data, sign_delimiter: data.sign_msg ? data.sign_delimiter : null }); + this.logger.verbose('Chatwoot set'); } @@ -378,6 +380,7 @@ export class WAStartupService { this.logger.verbose(`Chatwoot url: ${data.url}`); this.logger.verbose(`Chatwoot inbox name: ${data.name_inbox}`); this.logger.verbose(`Chatwoot sign msg: ${data.sign_msg}`); + this.logger.verbose(`Chatwoot sign delimiter: ${data.sign_delimiter}`); this.logger.verbose(`Chatwoot reopen conversation: ${data.reopen_conversation}`); this.logger.verbose(`Chatwoot conversation pending: ${data.conversation_pending}`); @@ -388,6 +391,7 @@ export class WAStartupService { url: data.url, name_inbox: data.name_inbox, sign_msg: data.sign_msg, + sign_delimiter: data.sign_delimiter || null, reopen_conversation: data.reopen_conversation, conversation_pending: data.conversation_pending, };