Skip to content

Commit 61884d8

Browse files
authored
Update whatsapp.baileys.service.ts
Alteração realizada para preservar todos os metadados recebidos no contextInfo (incluindo ctwa_clid, ctwaPayload, conversionData e entryPointConversion*), unificando dados vindos de: - message.message[contentType].contextInfo - message.message.contextInfo - message.messageContextInfo Essa mudança evita a perda de informações enviadas pela Meta em diferentes níveis da estrutura da mensagem, garantindo que esses campos sejam repassados integralmente para o webhook, permitindo integrações completas com a API de Conversões.
1 parent 9cdb897 commit 61884d8

File tree

1 file changed

+35
-18
lines changed

1 file changed

+35
-18
lines changed

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

Lines changed: 35 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -4250,24 +4250,41 @@ export class BaileysStartupService extends ChannelStartupService {
42504250
}
42514251

42524252
private prepareMessage(message: proto.IWebMessageInfo): any {
4253-
const contentType = getContentType(message.message);
4254-
const contentMsg = message?.message[contentType] as any;
4255-
4256-
const messageRaw = {
4257-
key: message.key,
4258-
pushName:
4259-
message.pushName ||
4260-
(message.key.fromMe
4261-
? 'Você'
4262-
: message?.participant || (message.key?.participant ? message.key.participant.split('@')[0] : null)),
4263-
status: status[message.status],
4264-
message: { ...message.message },
4265-
contextInfo: contentMsg?.contextInfo,
4266-
messageType: contentType || 'unknown',
4267-
messageTimestamp: message.messageTimestamp as number,
4268-
instanceId: this.instanceId,
4269-
source: getDevice(message.key.id),
4270-
};
4253+
const contentType = getContentType(message.message);
4254+
const contentMsg = message?.message[contentType] as any;
4255+
4256+
// [ADD] Merge seguro de contextInfo
4257+
const mm = message.message as Record<string, any> | undefined;
4258+
const contentCtx =
4259+
contentType && mm && typeof mm[contentType] === 'object'
4260+
? mm[contentType]?.contextInfo
4261+
: undefined;
4262+
4263+
const mergedContext: Record<string, any> = {
4264+
...(contentCtx || {}),
4265+
...(message.message?.contextInfo || {}),
4266+
...(message.messageContextInfo || {}),
4267+
};
4268+
4269+
const contextInfoFinal = Object.keys(mergedContext).length > 0 ? mergedContext : undefined;
4270+
4271+
const messageRaw = {
4272+
key: message.key,
4273+
pushName:
4274+
message.pushName ||
4275+
(message.key.fromMe
4276+
? 'Você'
4277+
: message?.participant ||
4278+
(message.key?.participant ? message.key.participant.split('@')[0] : null)),
4279+
status: status[message.status],
4280+
message: { ...message.message },
4281+
// [REPLACE] antes: contextInfo: contentMsg?.contextInfo,
4282+
contextInfo: contextInfoFinal,
4283+
messageType: contentType || 'unknown',
4284+
messageTimestamp: message.messageTimestamp as number,
4285+
instanceId: this.instanceId,
4286+
source: getDevice(message.key.id),
4287+
};
42714288

42724289
if (!messageRaw.status && message.key.fromMe === false) {
42734290
messageRaw.status = status[3]; // DELIVERED MESSAGE

0 commit comments

Comments
 (0)