Skip to content

Commit 1059ed6

Browse files
committed
feat(chatwoot): add forwarded message indicator for text messages
- Extract isForwarded and forwardingScore from contextInfo - Add ↪️ _Encaminhada_ indicator in Chatwoot for forwarded messages - Remove fields before saving to database to avoid Prisma errors - Works only for text messages (conversation type)
1 parent f05d95c commit 1059ed6

2 files changed

Lines changed: 33 additions & 4 deletions

File tree

src/api/integrations/channel/whatsapp/whatsapp.baileys.service.ts

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1438,6 +1438,19 @@ export class BaileysStartupService extends ChannelStartupService {
14381438

14391439
const messageRaw = this.prepareMessage(received);
14401440

1441+
// ✅ Preserva campos de encaminhamento do contextInfo
1442+
const contentType = getContentType(received.message);
1443+
const contentMsg = received?.message?.[contentType] as any;
1444+
const msgContextInfo = contentMsg?.contextInfo;
1445+
1446+
if (msgContextInfo?.isForwarded) {
1447+
(messageRaw as any).isForwarded = msgContextInfo.isForwarded;
1448+
(messageRaw as any).forwardingScore = msgContextInfo.forwardingScore || 1;
1449+
this.logger.verbose(
1450+
`✅ Mensagem encaminhada detectada - isForwarded: ${msgContextInfo.isForwarded}, forwardingScore: ${msgContextInfo.forwardingScore}`,
1451+
);
1452+
}
1453+
14411454
// Converter menções de LID em números de telefone legíveis com nomes de contato
14421455
// Em vez de @176407292411998, os usuários verão @5511951279027 - Henrique Nord
14431456
// Funciona tanto para mensagens recebidas quanto enviadas
@@ -1632,8 +1645,11 @@ export class BaileysStartupService extends ChannelStartupService {
16321645
}
16331646

16341647
if (this.configService.get<Database>('DATABASE').SAVE_DATA.NEW_MESSAGE) {
1648+
// Remove campos que não existem no schema do Prisma antes de salvar
1649+
const { isForwarded, forwardingScore, ...messageToSave } = messageRaw as any;
1650+
16351651
const msg = await this.prismaRepository.message.create({
1636-
data: messageRaw,
1652+
data: messageToSave,
16371653
});
16381654

16391655
const { remoteJid } = received.key;

src/api/integrations/chatbot/chatwoot/services/chatwoot.service.ts

Lines changed: 16 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2436,10 +2436,22 @@ export class ChatwootService {
24362436
return result;
24372437
}
24382438

2439-
public getConversationMessage(msg: any) {
2439+
public getConversationMessage(msg: any, fullMessage?: any) {
24402440
const types = this.getTypeMessage(msg);
24412441

2442-
const messageContent = this.getMessageContent(types);
2442+
let messageContent = this.getMessageContent(types);
2443+
2444+
// ✅ Adiciona indicador de mensagem encaminhada
2445+
const isForwarded = fullMessage?.isForwarded || msg?.isForwarded;
2446+
const forwardingScore = fullMessage?.forwardingScore || msg?.forwardingScore;
2447+
2448+
if (isForwarded) {
2449+
const forwardCount = forwardingScore || 1;
2450+
const forwardIndicator = forwardCount > 1 ? `↪️ _Encaminhada ${forwardCount}x_\n\n` : `↪️ _Encaminhada_\n\n`;
2451+
2452+
this.logger.log(`✅ Mensagem encaminhada detectada (score: ${forwardCount})`);
2453+
messageContent = forwardIndicator + messageContent;
2454+
}
24432455

24442456
return messageContent;
24452457
}
@@ -2516,7 +2528,8 @@ export class ChatwootService {
25162528
};
25172529
}
25182530

2519-
const originalMessage = await this.getConversationMessage(body.message);
2531+
const originalMessage = await this.getConversationMessage(body.message, body);
2532+
25202533
const bodyMessage = originalMessage
25212534
? originalMessage
25222535
.replaceAll(/\*((?!\s)([^\n*]+?)(?<!\s))\*/g, '**$1**')

0 commit comments

Comments
 (0)