From 37f1620f7c4c66530a0ae23f2b9c3079527d812c Mon Sep 17 00:00:00 2001 From: Jean Carlo Nascimento Date: Sun, 12 Nov 2023 19:11:47 -0300 Subject: [PATCH 1/5] Update typebot.service.ts - element.underline change ~ for * There's no underline in WhatsApp ~ use strikethrough instead, I switched to * bold. --- src/whatsapp/services/typebot.service.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/whatsapp/services/typebot.service.ts b/src/whatsapp/services/typebot.service.ts index c329a169..07a05926 100644 --- a/src/whatsapp/services/typebot.service.ts +++ b/src/whatsapp/services/typebot.service.ts @@ -323,7 +323,7 @@ export class TypebotService { } if (element.underline) { - text = `~${text}~`; + text = `*${text}*`; } if (element.url) { From 8b4cdf3b9b6d1480b4647f6dc66fa2c960583f9a Mon Sep 17 00:00:00 2001 From: craines Date: Tue, 14 Nov 2023 16:47:25 -0300 Subject: [PATCH 2/5] fix: Removed await from webhook when sending a message --- src/whatsapp/services/whatsapp.service.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/whatsapp/services/whatsapp.service.ts b/src/whatsapp/services/whatsapp.service.ts index c4d25c88..c0c86ad8 100644 --- a/src/whatsapp/services/whatsapp.service.ts +++ b/src/whatsapp/services/whatsapp.service.ts @@ -2222,7 +2222,7 @@ export class WAStartupService { this.logger.log(messageRaw); this.logger.verbose('Sending data to webhook in event SEND_MESSAGE'); - await this.sendDataWebhook(Events.SEND_MESSAGE, messageRaw); + this.sendDataWebhook(Events.SEND_MESSAGE, messageRaw); if (this.localChatwoot.enabled && !isChatwoot) { this.chatwootService.eventWhatsapp(Events.SEND_MESSAGE, { instanceName: this.instance.name }, messageRaw); From 04e5443b82a57bfca3f9e8736d1834e0fa6416f1 Mon Sep 17 00:00:00 2001 From: craines Date: Wed, 15 Nov 2023 21:52:56 -0300 Subject: [PATCH 3/5] fix: send reaction --- src/whatsapp/services/whatsapp.service.ts | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/src/whatsapp/services/whatsapp.service.ts b/src/whatsapp/services/whatsapp.service.ts index c0c86ad8..2ab3ab10 100644 --- a/src/whatsapp/services/whatsapp.service.ts +++ b/src/whatsapp/services/whatsapp.service.ts @@ -2159,6 +2159,21 @@ export class WAStartupService { !message['conversation'] && sender !== 'status@broadcast' ) { + + if (message['reactionMessage']) { + this.logger.verbose('Sending reaction'); + return await this.client.sendMessage( + sender, + { + react: { + text: message['reactionMessage']['text'], + key: message['reactionMessage']['key'] + } + } as unknown as AnyMessageContent, + option as unknown as MiscMessageGenerationOptions, + ); + } + if (!message['audio']) { this.logger.verbose('Sending message'); return await this.client.sendMessage( @@ -2174,7 +2189,6 @@ export class WAStartupService { ); } } - if (message['conversation']) { this.logger.verbose('Sending message'); return await this.client.sendMessage( From e17baddf016835bda085f3f7c661ade1732bfc62 Mon Sep 17 00:00:00 2001 From: jaison-x Date: Fri, 24 Nov 2023 18:59:19 -0300 Subject: [PATCH 4/5] fix: workaround to manage param data as an array in mongodb When saving data from a group session (sender-key-xxxxx@g.us::xxxxx::xx) we receive the data param as an array. In mongodb we can't save an array as a root document. Bacause this, in this case we save the array in a property called content_array. --- src/utils/use-multi-file-auth-state-db.ts | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/src/utils/use-multi-file-auth-state-db.ts b/src/utils/use-multi-file-auth-state-db.ts index a021372a..237b15d0 100644 --- a/src/utils/use-multi-file-auth-state-db.ts +++ b/src/utils/use-multi-file-auth-state-db.ts @@ -25,7 +25,14 @@ export async function useMultiFileAuthStateDb( const writeData = async (data: any, key: string): Promise => { try { await client.connect(); - return await collection.replaceOne({ _id: key }, JSON.parse(JSON.stringify(data, BufferJSON.replacer)), { + let msgParsed = JSON.parse(JSON.stringify(data, BufferJSON.replacer)); + if (Array.isArray(msgParsed)) { + msgParsed = { + _id: key, + content_array: msgParsed, + }; + } + return await collection.replaceOne({ _id: key }, msgParsed, { upsert: true, }); } catch (error) { @@ -36,7 +43,10 @@ export async function useMultiFileAuthStateDb( const readData = async (key: string): Promise => { try { await client.connect(); - const data = await collection.findOne({ _id: key }); + let data = (await collection.findOne({ _id: key })) as any; + if (data?.content_array) { + data = data.content_array; + } const creds = JSON.stringify(data); return JSON.parse(creds, BufferJSON.reviver); } catch (error) { From 26d3ff97ce9e024da8e40b7ae51c5c2a7ba6af74 Mon Sep 17 00:00:00 2001 From: raimartinsb Date: Tue, 28 Nov 2023 11:10:29 -0300 Subject: [PATCH 5/5] fix messages not received: error handling when updating contact --- src/whatsapp/services/chatwoot.service.ts | 21 ++++++++++++++------- 1 file changed, 14 insertions(+), 7 deletions(-) diff --git a/src/whatsapp/services/chatwoot.service.ts b/src/whatsapp/services/chatwoot.service.ts index b19fa31f..463f81d7 100644 --- a/src/whatsapp/services/chatwoot.service.ts +++ b/src/whatsapp/services/chatwoot.service.ts @@ -338,14 +338,18 @@ export class ChatwootService { } this.logger.verbose('update contact in chatwoot'); - const contact = await client.contacts.update({ - accountId: this.provider.account_id, - id, - data, - }); + try { + const contact = await client.contacts.update({ + accountId: this.provider.account_id, + id, + data, + }); - this.logger.verbose('contact updated'); - return contact; + this.logger.verbose('contact updated'); + return contact; + } catch (error) { + this.logger.error(error); + } } public async findContact(instance: InstanceDto, phoneNumber: string) { @@ -488,6 +492,9 @@ export class ChatwootService { avatar_url: picture_url.profilePictureUrl || null, }); } + if (!contact) { + contact = await this.findContact(instance, chatId); + } } else { const jid = isGroup ? null : body.key.remoteJid; contact = await this.createContact(