feat(experimental): add interactive messages support (buttons, lists, templates, carousel)
⚠️ EXPERIMENTAL FEATURE - Use only for testing with disposable accounts Implements full support for WhatsApp interactive messages including: - Simple text buttons (up to 3 buttons) - Buttons with images/videos - List messages (up to 10 items in sections) - Template buttons (quick reply, URL, call actions) - Carousel messages (up to 10 scrollable cards) Features: - Feature flag 'enableInteractiveMessages' (default: true for dev/testing) - Prometheus metrics for tracking sends, successes, failures, and latency - Comprehensive TypeScript types for all interactive message formats - Extensive logging with warnings about potential account bans - Automatic 'biz' node injection when feature is enabled CRITICAL WARNINGS: - These features may NOT work on non-business WhatsApp accounts - Can cause temporary or permanent account BANS - WhatsApp actively blocks this functionality since April 2022 - Messages may be rejected or fail silently - Use ONLY in dev environment with test accounts Architecture: - Added ButtonInfo, Templatable, Listable, Carouselable types to Message.ts - Extended AnyMediaMessageContent and AnyRegularMessageContent - Implemented message generation in messages.ts - Added getButtonType() and getButtonArgs() helpers in messages-send.ts - Injected 'biz' node in stanza construction with metrics tracking - Added 4 new Prometheus metrics: interactiveMessagesSent, Success, Failures, Latency Documentation: - Complete usage guide in INTERACTIVE_MESSAGES.md - Examples for all interactive message types - Metrics monitoring queries - Troubleshooting guide - Migration path to WhatsApp Business API Related issues: - https://github.com/WhiskeySockets/Baileys/issues/56 - https://github.com/WhiskeySockets/Baileys/issues/25 - https://github.com/WhiskeySockets/Baileys/pull/2291 Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
This commit is contained in:
@@ -1436,6 +1436,20 @@ export const metrics = {
|
||||
new Counter('ctwa_recovery_failures_total', 'Total CTWA recovery failures', ['reason'])
|
||||
),
|
||||
|
||||
// ========== Interactive Messages Metrics (EXPERIMENTAL) ==========
|
||||
interactiveMessagesSent: baileysMetrics.register(
|
||||
new Counter('interactive_messages_sent_total', 'Total interactive messages sent (buttons/lists/templates/carousel)', ['type'])
|
||||
),
|
||||
interactiveMessagesSuccess: baileysMetrics.register(
|
||||
new Counter('interactive_messages_success_total', 'Total interactive messages successfully sent', ['type'])
|
||||
),
|
||||
interactiveMessagesFailures: baileysMetrics.register(
|
||||
new Counter('interactive_messages_failures_total', 'Total interactive message send failures', ['type', 'reason'])
|
||||
),
|
||||
interactiveMessagesLatency: baileysMetrics.register(
|
||||
new Histogram('interactive_messages_latency_ms', 'Interactive message send latency in ms', ['type'], [100, 250, 500, 1000, 2500, 5000, 10000])
|
||||
),
|
||||
|
||||
// ========== Media Metrics ==========
|
||||
mediaUploads: baileysMetrics.register(
|
||||
new Counter('media_uploads_total', 'Total media uploads', ['type', 'status'])
|
||||
|
||||
Reference in New Issue
Block a user