feat: add automatic CTWA (Click-to-WhatsApp) ads message recovery
Messages from Facebook/Instagram ads (Click-to-WhatsApp) don't arrive on linked devices because Meta's ads endpoint doesn't encrypt for multi-device. They arrive as "Message absent from node" placeholders. This change automatically requests the message from the primary phone via PDO (Peer Data Operation) when a CTWA placeholder is detected. Changes: - Add enableCTWARecovery config option (default: true) - Trigger requestPlaceholderResend() for "Message absent from node" errors - Add Prometheus metrics for CTWA recovery tracking - Add comprehensive unit tests for CTWA recovery functionality Resolves: https://github.com/WhiskeySockets/Baileys/issues/1723 Resolves: https://github.com/WhiskeySockets/Baileys/issues/1034
This commit is contained in:
@@ -1385,6 +1385,24 @@ export const metrics = {
|
||||
new Gauge('messages_queued', 'Current number of messages in queue', ['priority'])
|
||||
),
|
||||
|
||||
// ========== CTWA (Click-to-WhatsApp Ads) Metrics ==========
|
||||
/**
|
||||
* Messages from Facebook/Instagram ads that arrive as placeholder messages
|
||||
* and are recovered via PDO (Peer Data Operation) request
|
||||
*/
|
||||
ctwaRecoveryRequests: baileysMetrics.register(
|
||||
new Counter('ctwa_recovery_requests_total', 'Total CTWA placeholder resend requests', ['status'])
|
||||
),
|
||||
ctwaMessagesRecovered: baileysMetrics.register(
|
||||
new Counter('ctwa_messages_recovered_total', 'Total CTWA messages successfully recovered')
|
||||
),
|
||||
ctwaRecoveryLatency: baileysMetrics.register(
|
||||
new Histogram('ctwa_recovery_latency_ms', 'CTWA message recovery latency in ms', [], [500, 1000, 2000, 3000, 5000, 8000, 10000])
|
||||
),
|
||||
ctwaRecoveryFailures: baileysMetrics.register(
|
||||
new Counter('ctwa_recovery_failures_total', 'Total CTWA recovery failures', ['reason'])
|
||||
),
|
||||
|
||||
// ========== Media Metrics ==========
|
||||
mediaUploads: baileysMetrics.register(
|
||||
new Counter('media_uploads_total', 'Total media uploads', ['type', 'status'])
|
||||
|
||||
Reference in New Issue
Block a user