Skip to content

Commit 3b77455

Browse files
committed
feat(chatwoot): show edited messages from WhatsApp in Chatwoot
1 parent 901954d commit 3b77455

4 files changed

Lines changed: 43 additions & 2 deletions

File tree

src/utils/translations/en.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,5 +21,6 @@
2121
"cw.locationMessage.locationUrl": "URL",
2222
"cw.contactMessage.contact": "Contact",
2323
"cw.contactMessage.name": "Name",
24-
"cw.contactMessage.number": "Number"
24+
"cw.contactMessage.number": "Number",
25+
"cw.message.edited": "Edited Message"
2526
}

src/utils/translations/pt-BR.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,5 +21,6 @@
2121
"cw.locationMessage.locationUrl": "URL",
2222
"cw.contactMessage.contact": "Contato",
2323
"cw.contactMessage.name": "Nome",
24-
"cw.contactMessage.number": "Número"
24+
"cw.contactMessage.number": "Número",
25+
"cw.message.edited": "Mensagem editada"
2526
}

src/whatsapp/services/chatwoot.service.ts

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2047,6 +2047,34 @@ export class ChatwootService {
20472047
}
20482048
}
20492049

2050+
if (event === 'messages.edit') {
2051+
const editedText = `${
2052+
body?.editedMessage?.conversation || body?.editedMessage?.extendedTextMessage?.text
2053+
}\n\n_\`${i18next.t('cw.message.edited')}.\`_`;
2054+
const message = await this.getMessageByKeyId(instance, body?.key?.id);
2055+
const messageType = message.key?.fromMe ? 'outgoing' : 'incoming';
2056+
2057+
if (message && message.chatwoot?.conversationId) {
2058+
const send = await this.createMessage(
2059+
instance,
2060+
message.chatwoot.conversationId,
2061+
editedText,
2062+
messageType,
2063+
false,
2064+
[],
2065+
{
2066+
message: { extendedTextMessage: { contextInfo: { stanzaId: message.key.id } } },
2067+
},
2068+
'WAID:' + body.key.id,
2069+
);
2070+
if (!send) {
2071+
this.logger.warn('edited message not sent');
2072+
return;
2073+
}
2074+
}
2075+
return;
2076+
}
2077+
20502078
if (event === 'messages.read') {
20512079
this.logger.verbose('read message from instance: ' + instance.instanceName);
20522080

src/whatsapp/services/whatsapp.baileys.service.ts

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -937,6 +937,17 @@ export class BaileysStartupService extends WAStartupService {
937937
try {
938938
this.logger.verbose('Event received: messages.upsert');
939939
for (const received of messages) {
940+
if (
941+
this.localChatwoot.enabled &&
942+
(received.message?.protocolMessage?.editedMessage || received.message?.editedMessage?.message)
943+
) {
944+
const editedMessage =
945+
received.message?.protocolMessage || received.message?.editedMessage?.message?.protocolMessage;
946+
if (editedMessage) {
947+
this.chatwootService.eventWhatsapp('messages.edit', { instanceName: this.instance.name }, editedMessage);
948+
}
949+
}
950+
940951
if (
941952
(type !== 'notify' && type !== 'append') ||
942953
received.message?.protocolMessage ||

0 commit comments

Comments
 (0)