Sign inGet Started

WhatsApp संदेश स्थिति इवेंट

Bird आने वाले और भेजे जाने वाले WhatsApp संदेशों के लिए इवेंट दर्ज करता है। भेजे गए संदेश की टाइमलाइन दिखाती है कि भेजने के अनुरोध से 202 लौटने के बाद क्या हुआ: स्वीकृति, WhatsApp को सौंपा जाना, डिलीवरी, पढ़ा जाना या विफलता। आने वाले संदेश की टाइमलाइन दर्ज करती है कि Bird को संदेश कब मिला।

यह पेज API के ज़रिए उस टाइमलाइन को पढ़ने के बारे में है। अगर आप चाहते हैं कि Bird हर इवेंट होते ही आपके एंडपॉइंट पर भेजे, तो संदेश स्थिति वेबहुक देखें। प्रतिक्रियाओं का अपना अलग इतिहास होता है, जिसकी जानकारी प्रतिक्रिया इवेंट में है।

संदेश स्थिति इवेंट

इवेंट समय के क्रम में दिखते हैं। भेजा गया संदेश whatsapp.failed या whatsapp.rejected पर रुक सकता है, और उसका whatsapp.read इवेंट तभी दिखता है जब प्राप्तकर्ता संदेश खोलता है। आने वाले संदेश की टाइमलाइन whatsapp.received से शुरू होती है, और जब आपका वर्कस्पेस संदेश को पढ़ा हुआ चिह्नित करता है, तो उसमें whatsapp.read दर्ज हो सकता है।

इवेंटअर्थ
whatsapp.acceptedBird ने भेजने का अनुरोध स्वीकार किया। 202 ने यही बताया था।
whatsapp.sentBird ने संदेश WhatsApp नेटवर्क को सौंप दिया।
whatsapp.deliveredWhatsApp ने प्राप्तकर्ता के डिवाइस पर डिलीवरी की पुष्टि की।
whatsapp.readप्राप्तकर्ता ने संदेश खोला।
whatsapp.failedसंदेश डिलीवर नहीं हुआ। error.code बताता है कि उसे किसने रोका।
whatsapp.rejectedBird ने संदेश भेजने से पहले ही उसे अस्वीकार कर दिया। इसके लिए कोई शुल्क नहीं लिया गया।
whatsapp.receivedBird को किसी संपर्क से इनबाउंड संदेश मिला।

लागू delivered या read कॉलबैक से Meta का मूल्य हिस्सा लग सकता है। WhatsApp इवेंट पेलोड में कोई लागत नहीं होती। संदेश की लागत देखने के लिए उसे GET /v1/whatsapp/messages/{message_id} से दोबारा पढ़ें। लागत और बिलिंग देखें।

किसी इनबाउंड मैसेज को पढ़ा गया चिह्नित करने से उसकी टाइमलाइन में whatsapp.read दर्ज होता है, लेकिन इससे पढ़ने की पुष्टि वाला कोई वेबहुक नहीं भेजा जाता। इनबाउंड मैसेज का स्टेटस received ही रहता है, और WhatsApp के पुष्टि स्वीकार करने के बाद उसमें read_at दर्ज होता है।

whatsapp.read मैसेज का status नहीं बदलता। डिलीवर हुआ मैसेज delivered ही रहता है; मैसेज पढ़े जाने को read_at में भी दर्ज करता है।

whatsapp.delivered पूरी तरह छूट सकता है। जब प्राप्तकर्ता के डिवाइस पर चैट पहले से खुली होती है, तो Meta डिलीवरी की सूचना दिए बिना ही पढ़े जाने की सूचना देता है। ऐसे में टाइमलाइन whatsapp.accepted → whatsapp.sent → whatsapp.read होती है, और बीच में कोई whatsapp.delivered नहीं होता। read को डिलीवरी का प्रमाण मानें। जो कंज़्यूमर मैसेज को पहुँचा हुआ मानने से पहले delivered का इंतज़ार करता है, वह ठीक उन्हीं प्राप्तकर्ताओं पर अटका रहेगा जिन्होंने मैसेज सबसे जल्दी देखा। जो केवल delivered से डिलीवरी दर निकालता है, वह दर को कम बताएगा। इस स्थिति में मैसेज का status sent ही रहता है, क्योंकि उसे केवल डिलीवरी रसीद आगे बढ़ाती है।

केवल पढ़े जाने वाला कॉलबैक भी लागू Meta शुल्क ट्रिगर कर सकता है। Bird डिलीवर और पढ़े जाने, दोनों रास्तों के लिए एक ही शुल्क पहचान का उपयोग करता है; डिलीवरी इवेंट न होने का मतलब यह नहीं कि Meta वाला हिस्सा मुफ़्त है। लागत और बिलिंग देखें।

इवेंट प्रकारों की सूची खुली है: समय के साथ नए प्रकार जुड़ सकते हैं, इसलिए किसी अनजान मान को त्रुटि नहीं, बल्कि भविष्य का इवेंट मानें।

विफलता इवेंट

whatsapp.failed और whatsapp.rejected अंतिम स्थितियाँ हैं। अस्वीकृति का मतलब है कि Bird ने मैसेज को WhatsApp को भेजने से पहले रोक दिया, इसलिए उसका शुल्क नहीं लगा। इसके कारणों में सप्रेस किया गया या ऑप्ट-आउट कर चुका प्राप्तकर्ता, वॉलेट में अपर्याप्त बैलेंस, या ऐसा गंतव्य शामिल है जिसकी कीमत कॉन्फ़िगर नहीं है। विफलता का मतलब है कि मैसेज डिलीवर नहीं हुआ, और error.code बताता है कि यह किसने तय किया। ज़्यादातर कोड WhatsApp का निर्णय दर्शाते हैं, जो उसके बताए कोड से मैप किया जाता है। internal_error अपवाद है: यह दर्ज करता है कि भेजने वाले का कोई उपयोग योग्य क्रेडेंशियल नहीं था या प्रोसेसिंग के फिर से प्रयास समाप्त हो गए। अनिश्चित ट्रांसपोर्ट प्रयास यह साबित नहीं करता कि Meta को अनुरोध कभी मिला ही नहीं। उपलब्ध होने पर meta_error_code में WhatsApp का कोड होता है, और internal_error विफलता में बनावट के अनुसार कोई कोड नहीं होता।

दोनों इवेंट में एक error ऑब्जेक्ट होता है, जिसमें स्थिर Bird code, मनुष्य के पढ़ने योग्य description, वैकल्पिक meta_error_code और occurred_at होते हैं। यह ऑब्जेक्ट API रिकॉर्ड और वेबहुक पेलोड में केवल इन्हीं इवेंट प्रकारों के लिए आता है।

API से इवेंट पढ़ना

GET /v1/whatsapp/messages/{message_id}/events टाइमलाइन को समय के क्रम में लौटाता है। यह सीमित सूची पेजों में नहीं बँटती। इवेंट पढ़ने के लिए whatsapp:read वाली API कुंजी चाहिए:

const { data } = await bird.whatsapp.listEvents("wa_abc123");
for (const event of data) console.log(event.type, event.occurred_at);

जो मैसेज स्वीकार, भेजा, डिलीवर और पढ़ा गया, उसके लिए चार इवेंट लौटते हैं:

कोड उदाहरण
{
  "data": [
    {
      "id": "ev_01ky7q6a1fejfbvs0myn41hj41",
      "occurred_at": "2026-07-23T14:48:34.71Z",
      "type": "whatsapp.accepted"
    },
    {
      "id": "ev_01ky7q6a2denvtd6jg1vqwmg13",
      "occurred_at": "2026-07-23T14:48:35.671Z",
      "type": "whatsapp.sent"
    },
    {
      "id": "ev_01ky7q6a2zff9r2qm74mmg1g6z",
      "occurred_at": "2026-07-23T14:48:36.642Z",
      "type": "whatsapp.delivered"
    },
    {
      "id": "ev_01ky7q6c21frssf0vj8h50qysw",
      "occurred_at": "2026-07-23T14:48:38.65Z",
      "type": "whatsapp.read"
    }
  ]
}

ठीक एक सार्वजनिक इवेंट प्रकार, जैसे ?type=whatsapp.failed या ?type=whatsapp.read, पाने के लिए type पास करें। पूरी टाइमलाइन के लिए इसे छोड़ दें।

जब आप कोई मैसेज खोलते हैं, तो WhatsApp लॉग पेज यही टाइमलाइन दिखाता है।

Bird डैशबोर्ड में WhatsApp मैसेज विवरण शीट, जो डिलीवर हुए bird_delivery_update मैसेज के लिए खुली है: Events टैब में मैसेज स्टेटस इवेंट की टाइमलाइन दिख रही है, जिसमें Accepted, Sent, Delivered और Read हैं, हर एक के साथ बीता समय और टाइमस्टैम्प है, और पीछे धुंधली मैसेज सूची है

अगले कदम

इस विषय के लिए दस्तावेज़, गाइड और उदाहरणों के साथ आगे बढ़ें।