# WhatsApp संदेश प्राप्त करना

इनबाउंड संदेश उसी रिसोर्स पर आते हैं जिस पर आउटबाउंड संदेश होते हैं; पोल करने के लिए कोई अलग इनबॉक्स एंडपॉइंट नहीं है। इन्हें डैशबोर्ड में [संदेश सूची](/docs/guides/whatsapp/message-log) से पढ़ें, या सूची को इनबाउंड पर फ़िल्टर करके API पर `GET /v1/whatsapp/messages/{id}` से पढ़ें।

हर इनबाउंड संदेश [कस्टमर सर्विस विंडो](/docs/knowledge-base/whatsapp/customer-service-window) को उस संदेश के अपने टाइमस्टैम्प के बाद 24 घंटे तक बढ़ा देता है, और इसी कारण आपका फ़्री-फ़ॉर्म जवाब डिलीवर हो पाता है। कोई संदेश जो Bird तक देर से पहुँचता है, वह उस विंडो को लेकर आता है जो उसके संपर्क ने वास्तव में दी थी, और पहले से रिकॉर्ड पर मौजूद बाद की डेडलाइन कभी छोटी नहीं की जाती।

## इनबाउंड संदेश में क्या होता है

हर इनबाउंड संदेश एक साझा एन्वेलप रखता है: एक `id`, `direction: "inbound"`, `from` में संपर्क, `to` में आपका अपना नंबर, `received` का एक `status`, और एक `created_at`। इसके साथ ठीक एक कंटेंट फ़ील्ड होती है, जो बताती है कि संपर्क ने क्या भेजा:

```json
{
  "id": "wam_01kya19eknftrs2s6p82asmvnh",
  "direction": "inbound",
  "from": { "phone_number": "+14155550100" },
  "to": { "phone_number": "+13124495569" },
  "status": "received",
  "text": { "body": "Is my order out for delivery yet?" },
  "created_at": "2026-08-25T09:04:11Z"
}
```

`from` संपर्क को उस पहचान से नाम देता है जो WhatsApp रिपोर्ट करता है: एक E.164 `phone_number`, एक `bsuid`, या दोनों, साथ ही वे `username` और `display_name` जो वे प्रकाशित करते हैं। जिस संपर्क ने WhatsApp यूज़रनेम अपनाया है, वह बिना किसी फ़ोन नंबर के भी आप तक पहुँच सकता है; क्या स्टोर करना है और नंबर कैसे माँगना है, इसके लिए [बिज़नेस-स्कोप्ड यूज़र ID](/docs/guides/whatsapp/business-scoped-user-ids) देखें।

इन कंटेंट फ़ील्ड में से एक, जिसे **आर्म** कहते हैं, वह बताती है कि उन्होंने क्या भेजा, और किसी भी संदेश पर ठीक एक आर्म सेट होती है। हर आर्म का अपना पेज है, जिसमें रीड शेप, `whatsapp.received` पेलोड, और किन बातों का ध्यान रखना है:

| फ़ील्ड                                                                              | इनबाउंड में क्या होता है                                             |
| ----------------------------------------------------------------------------------- | -------------------------------------------------------------------- |
| [`text`](/docs/guides/whatsapp/receiving-whatsapp/plain-text)                       | `body`, वह संदेश जो संपर्क ने टाइप किया                              |
| [`image`](/docs/guides/whatsapp/receiving-whatsapp/images)                          | एक `id`, `url`, `mime_type`, और कोई भी `caption`                     |
| [`video`](/docs/guides/whatsapp/receiving-whatsapp/video)                           | वही मीडिया फ़ील्ड, साथ ही कोई भी `caption`                           |
| [`audio`](/docs/guides/whatsapp/receiving-whatsapp/audio)                           | वही मीडिया फ़ील्ड, साथ ही वॉइस नोट पर `voice`; कोई कैप्शन नहीं होता  |
| [`sticker`](/docs/guides/whatsapp/receiving-whatsapp/stickers)                      | वही मीडिया फ़ील्ड, साथ ही `animated`                                 |
| [`document`](/docs/guides/whatsapp/receiving-whatsapp/documents)                    | वही मीडिया फ़ील्ड, साथ ही कोई भी `filename` और `caption`             |
| [`location`](/docs/guides/whatsapp/receiving-whatsapp/location)                     | `latitude` और `longitude`, और कभी-कभी `name`, `address`, या एक `url` |
| [`contact_cards`](/docs/guides/whatsapp/receiving-whatsapp/contact-cards)           | संपर्क द्वारा शेयर किए गए एक या अधिक कॉन्टैक्ट कार्ड                 |
| [`interactive_reply`](/docs/guides/whatsapp/receiving-whatsapp/interactive-replies) | संपर्क द्वारा टैप किए गए बटन या पंक्ति का `slug` और `text`           |
| [`unsupported`](/docs/guides/whatsapp/receiving-whatsapp/unsupported)               | वह WhatsApp कंटेंट टाइप जिसे API मॉडल नहीं करता, जैसे कि ऑर्डर       |

दो टैप एक ऐसे आर्म पर आते हैं जिसकी आप उम्मीद नहीं करेंगे। एक [लोकेशन रिक्वेस्ट](/docs/guides/whatsapp/message-types/interactive/location-requests) का जवाब सामान्य इनबाउंड `location` के रूप में आता है, और एक [कॉन्टैक्ट इन्फ़ो रिक्वेस्ट](/docs/guides/whatsapp/message-types/interactive/contact-info-requests) का जवाब `contact_cards` के रूप में आता है, इसलिए टैप के लिए केवल `interactive_reply` को देखने वाला इंटीग्रेशन दोनों को चूक जाता है।

## इनबाउंड मीडिया फ़ेच करना

एक इनबाउंड `image`, `video`, `audio`, `sticker`, या `document` फ़ाइल के बजाय Bird द्वारा स्टोर की गई फ़ाइल के रेफ़रेंस के रूप में आता है:

```json
{
  "image": {
    "id": "waf_01kyb2m4xq7whs0d8n3prv6tez",
    "url": "https://platform.bird.com/v1/whatsapp/messages/wam_01kya19eknftrs2s6p82asmvnh/media/waf_01kyb2m4xq7whs0d8n3prv6tez",
    "mime_type": "image/jpeg",
    "caption": "Is this the right part?"
  }
}
```

चैनल के मीडिया मेथड से बाइट्स फ़ेच करें, message id और मीडिया `id` पास करें:

**TypeScript**

```typescript
const media = await bird.whatsapp.messages.media(
  "wam_01kya19eknftrs2s6p82asmvnh",
  "waf_01kyb2m4xq7whs0d8n3prv6tez",
);
console.log(media.contentType, media.contentLength);
```

Examples: [TypeScript](/hi-in/dastavez/guides/whatsapp/receiving-whatsapp.ts.md) · [Python](/hi-in/dastavez/guides/whatsapp/receiving-whatsapp.py.md) · [Go](/hi-in/dastavez/guides/whatsapp/receiving-whatsapp.go.md) · [PHP](/hi-in/dastavez/guides/whatsapp/receiving-whatsapp.php.md) · [CLI](/hi-in/dastavez/guides/whatsapp/receiving-whatsapp.cli.md) · [MCP](/hi-in/dastavez/guides/whatsapp/receiving-whatsapp.mcp.md) · [cURL](/hi-in/dastavez/guides/whatsapp/receiving-whatsapp.curl.md)

आपको बाइट्स उनके लिए घोषित `mime_type` स्टोरेज के साथ वापस मिलते हैं। कोई ऐसी id जिसे Bird पहचान नहीं पाता, `404` लौटाती है, और आउटबाउंड संदेश में सर्व करने के लिए कोई स्टोर्ड मीडिया नहीं होता।

**एक संदेश आने के बाद 30 दिनों तक पढ़ा जा सकता है, और उसका मीडिया उससे ज़्यादा समय तक नहीं रहता।** यह एंडपॉइंट फ़ाइल सर्व करने से पहले संदेश पढ़ता है, इसलिए जब वह विंडो बीत जाती है तो दोनों `404` का जवाब देते हैं। जो फ़ाइल आपको ज़्यादा समय तक चाहिए उसे तब तक स्टोर कर लें जब तक संदेश अभी भी पढ़ने योग्य है। एक ऐसा मामला है जो पहले समाप्त होता है: स्टोर्ड बाइट्स विंडो पूरी होने से पहले ही हट जाएँ; तब फ़ेच `410` [`E15021`](/docs/api/errors/E15021) का जवाब देता है, और संदेश अभी भी मीडिया के `mime_type` और `caption` के साथ पढ़ा जा सकता है।

अंदरूनी तौर पर यह एंडपॉइंट `302` का जवाब देता है जिसमें 15 मिनट के लिए मान्य एक प्रीसाइन्ड URL होता है। SDK और CLI यह हॉप आपके लिए लेते हैं। सीधे कॉल करते समय, प्रीसाइन्ड URL अपना क्रेडेंशियल खुद रखता है, इसलिए रीडायरेक्ट किए गए रिक्वेस्ट को आपका `Authorization` हेडर भी नहीं भेजना चाहिए। दोनों भेजने पर फ़ेल होता है। `curl -L` क्रॉस-होस्ट रीडायरेक्ट पर हेडर को अपने आप हटा देता है; जो क्लाइंट हेडर को यथावत फ़ॉरवर्ड करता है उसे `Location` को एक अलग, बिना ऑथेंटिकेशन वाले रिक्वेस्ट के रूप में फ़ेच करना होगा।

## उद्धृत जवाब

`in_reply_to_message_id` उस संदेश को नाम देता है जिसका इनबाउंड संदेश जवाब देता है, जब WhatsApp इसे रिप्लाई के रूप में चिह्नित करता है:

```json
{
  "id": "wam_01kyb2m4xq7whs0d8n3prv6tez",
  "direction": "inbound",
  "in_reply_to_message_id": "wam_01kya19eknftrs2s6p82asmvnh",
  "text": { "body": "Yes, that one" }
}
```

WhatsApp हर रिप्लाई को चिह्नित नहीं करता, और एक अचिह्नित रिप्लाई में कोई ID नहीं होती। यह फ़ील्ड तब भी छोड़ दी जाती है जब उद्धृत संदेश को Bird के पास मौजूद किसी संदेश से मिलान नहीं किया जा सकता: इस वर्कस्पेस द्वारा रिकॉर्डिंग शुरू करने से पहले भेजा गया संदेश, या Bird द्वारा WhatsApp की अपनी message id रखने की 15 दिन की सीमा पार कर चुका संदेश। मिलान न होने पर फ़ील्ड छोड़ दी जाती है, रिपोर्ट नहीं की जाती, जो वैसा ही दिखता है जैसे कोई रिप्लाई जो किसी चीज़ का जवाब नहीं देता।

इस फ़ील्ड को एक संकेत मानें, कुंजी नहीं। आपके अपने सेंड पर `metadata` यहाँ मदद नहीं करता, क्योंकि यह आपके संदेश पर रहता है और कभी संपर्क के जवाब तक नहीं पहुँचता, इसलिए जिस इंटीग्रेशन को यह जानना ज़रूरी है कि कौन सा जवाब किस सवाल का है, वह खुद ट्रैक करता है कि उसने उस संपर्क से आखिरी बार कौन सा सवाल पूछा था। आउटबाउंड पक्ष के लिए [किसी संदेश को उद्धृत करना](/docs/guides/whatsapp/sending-whatsapp#quoting-a-message) देखें।

## वेबहुक

सूची को पोल करने के बजाय इनबाउंड संदेश आते ही उस पर कार्रवाई करने के लिए `whatsapp.received` की सदस्यता लें। पेलोड इवेंट एन्वेलप के ऊपर कंटेंट रखता है, इसलिए एंडपॉइंट को फ़ॉलो-अप रीड की ज़रूरत नहीं:

```json
{
  "type": "whatsapp.received",
  "timestamp": "2026-08-25T09:04:11.118Z",
  "data": {
    "whatsapp_id": "wam_01kyb2m4xq7whs0d8n3prv6tez",
    "workspace_id": "ws_01ky7m235keycbnwyajabe1a6b",
    "direction": "inbound",
    "from": { "phone_number": "+14155550100", "display_name": "Alex Rivera" },
    "to": { "phone_number": "+13124495569" },
    "in_reply_to_message_id": "wam_01kya19eknftrs2s6p82asmvnh",
    "interactive_reply": {
      "type": "button",
      "button": { "slug": "cancel-booking", "text": "Cancel" }
    },
    "tags": null,
    "metadata": null
  }
}
```

पूरे एन्वेलप और बाकी इवेंट सूची के लिए [WhatsApp इवेंट्स](/docs/guides/whatsapp/events#webhooks) देखें।

## अगले कदम

- [सर्विस संदेश](/docs/guides/whatsapp/message-types): उन्हीं कंटेंट आर्म का सेंड पक्ष
- [WhatsApp संदेश भेजना](/docs/guides/whatsapp/sending-whatsapp): सर्विस विंडो के अंदर जवाब देना, और किसी संदेश को उद्धृत करना
- [WhatsApp इवेंट्स](/docs/guides/whatsapp/events): पूरी इवेंट सूची, API या वेबहुक के ज़रिए
- [WhatsApp लॉग](/docs/guides/whatsapp/message-log): डैशबोर्ड में बातचीत ब्राउज़ करना

## Related resources

- [Connecting WhatsApp to Bird: from buying a number to a live channel](/learn/whatsapp/connecting-whatsapp-to-bird) (video)
- [What is the 24-hour customer service window on WhatsApp?](/explained/whatsapp/what-is-the-24-hour-customer-service-window) (answer)
- [WhatsApp message builder](/tools/whatsapp-message-builder) (tool)
- [WhatsApp](/whatsapp) (product)

[Get an implementation brief](/learn/workspace?topic=whatsapp)
