Skip to content

Commit b8e4bfa

Browse files
committed
fix(meta): mark cloud api echoes as fromMe and match display phone
1 parent a82c2c4 commit b8e4bfa

1 file changed

Lines changed: 21 additions & 1 deletion

File tree

src/api/integrations/channel/meta/whatsapp.business.service.ts

Lines changed: 21 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -159,6 +159,26 @@ export class BusinessStartupService extends ChannelStartupService {
159159
return normalized;
160160
}
161161

162+
private normalizePhoneNumber(value?: string) {
163+
return typeof value === 'string' ? value.replace(/\D/g, '') : '';
164+
}
165+
166+
private isCloudApiEchoPayload(received: any) {
167+
return Array.isArray(received?.message_echoes) || Array.isArray(received?.smb_message_echoes);
168+
}
169+
170+
private isCloudApiFromMe(message: any, received: any) {
171+
if (this.isCloudApiEchoPayload(received)) return true;
172+
173+
const from = this.normalizePhoneNumber(message?.from);
174+
const displayPhone = this.normalizePhoneNumber(received?.metadata?.display_phone_number);
175+
const phoneNumberId = this.normalizePhoneNumber(received?.metadata?.phone_number_id);
176+
177+
if (!from) return false;
178+
179+
return from === displayPhone || from === phoneNumberId;
180+
}
181+
162182
private async downloadMediaMessage(message: any) {
163183
try {
164184
const id = message[message.type].id;
@@ -418,7 +438,7 @@ export class BusinessStartupService extends ChannelStartupService {
418438
const key = {
419439
id: message.id,
420440
remoteJid,
421-
fromMe: message.from === received.metadata.phone_number_id,
441+
fromMe: this.isCloudApiFromMe(message, received),
422442
};
423443

424444
if (message.type === 'sticker') {

0 commit comments

Comments
 (0)