# WhatsApp contact info requests

Contact info request एक WhatsApp संदेश के नीचे एक बटन लगाता है जो प्राप्तकर्ता से फ़ोन नंबर साझा करने के लिए कहता है। इसे तब उपयोग करें जब आपको किसी से संपर्क करने के लिए नंबर चाहिए, जैसे कॉलबैक या बुकिंग पुष्टि के लिए, न कि किसी सेव किए गए पते के लिए। लोकेशन के लिए, [location requests](/docs/guides/whatsapp/message-types/interactive/location-requests) का उपयोग करें।

## Contact info request भेजें

`interactive.type` को `request_contact_info` पर सेट करें, एक `body_text` के साथ और कुछ नहीं। WhatsApp बटन को खुद रेंडर करता है, इसलिए इसे लेबल करने के लिए कुछ नहीं है:

**TypeScript**

```typescript
const msg = await bird.whatsapp.send({
  to: "+16505551234",
  from: "+13124495648",
  interactive: {
    type: "request_contact_info",
    body_text:
      "To confirm your booking we need a number to reach you on. Tap below to share yours.",
  },
});
console.log(msg.id, msg.status);
```

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

`from` हर service message पर ज़रूरी है: आपके वर्कस्पेस का अपना नंबर, Bird-managed नहीं। इस type का कोई अपना फ़ील्ड नहीं है, और schema `header`, `footer_text`, और हर दूसरे type के फ़ील्ड (`buttons`, `list`, `cta_url`, `cards`) को पूरी तरह रोकता है, इसलिए `body_text` ही पूरा संदेश है, जो अधिकतम 1,024 कैरेक्टर का हो सकता है। Meta इस type के लिए कोई body-length सीमा नहीं बताता; Bird वह 1,024-कैरेक्टर सीमा लागू करता है जो list menu को छोड़कर हर दूसरे interactive type पर लागू होती है।

`in_reply_to_message_id` इस type पर भी काम करता है, उसी बातचीत में किसी पुराने संदेश को quote करने के लिए। resolution कैसे काम करता है और क्या छूट सकता है, इसके लिए हब का [quoting a message to correlate a reply](/docs/guides/whatsapp/message-types/interactive#quoting-a-message-to-correlate-a-reply) देखें।

## साझा किए गए contact को पढ़ना

टैप करने पर कोई `interactive_reply` नहीं बनता। यह एक सामान्य inbound संदेश के रूप में आता है जिसमें एक `contact_cards` array होता है:

```json
{
  "id": "wam_01kyb2m4xq7whs0d8n3prv6tez",
  "direction": "inbound",
  "from": { "phone_number": "+16505551234", "bsuid": "US.13491208655302741918" },
  "to": { "phone_number": "+13124495648" },
  "status": "received",
  "contact_cards": [
    {
      "origin": "contact_request",
      "phone_numbers": [{ "phone_number": "+14155550829", "type": "cell" }]
    }
  ],
  "created_at": "2026-08-26T10:00:00Z"
}
```

`contact_cards` एक array है, और जिस `contacts` संदेश में कोई card नहीं था, वह absent फ़ील्ड के बजाय `[]` के रूप में वापस आता है। यही फ़ील्ड [आपके द्वारा भेजा गया card](/docs/guides/whatsapp/message-types/contact-cards) भी ले जाता है, इसलिए इस अनुरोध का जवाब देने वाले card को `origin` से अलग पहचाना जाता है, न कि उस फ़ील्ड से जिस पर वह आता है। **किसी card को अपना जवाब मानने से पहले `origin` की जाँच अनिवार्य है।** `origin` तब `contact_request` होता है जब card इस अनुरोध का जवाब है, या `other` जब contact ने बिना माँगे card साझा किया, जो पूरी तरह किसी तीसरे व्यक्ति का हो सकता है और contact का बिल्कुल नहीं। टैप में केवल `phone_numbers[].{phone_number, type}` होता है और `vcard` नहीं आता; पूरा contact object, जिसमें `name`, `org`, `birthday` और बाकी सब शामिल है, केवल `origin: "other"` पर आता है। आप यह रिप्लाई message list या `GET /v1/whatsapp/messages/{id}` के ज़रिए देखते हैं; उस पूरे पथ के लिए हब का [reading a reply](/docs/guides/whatsapp/message-types/interactive#reading-a-reply) देखें।

## जवाब को सवाल से जोड़ना

Location request के विपरीत, Meta इस type के रिप्लाई पर कोई `context` नहीं डालता, इसलिए `in_reply_to_message_id` resolve होने के बजाय omit हो जाता है। `from` और अपने हाल के send के आधार पर correlate करें, या स्वीकार करें कि यह संभव नहीं है। **एक ही contact को भेजे गए दो अनुत्तरित अनुरोध अलग नहीं किए जा सकते:** रिप्लाई पर कुछ भी यह नहीं बताता कि वह किस अनुरोध का जवाब है, इसलिए जो वर्कस्पेस पहले का जवाब आने से पहले दूसरा contact info request भेजता है, वह नहीं बता सकता कि कौन सा card किसके जवाब में आया।

यह [location requests](/docs/guides/whatsapp/message-types/interactive/location-requests) से जानबूझकर किया गया अंतर है: उस type का रिप्लाई Meta का अपना `context` लेकर आता है, इसलिए `in_reply_to_message_id` resolve हो जाता है और हब का [quoting a message to correlate a reply](/docs/guides/whatsapp/message-types/interactive#quoting-a-message-to-correlate-a-reply) तंत्र जवाब को अपने आप वापस जोड़ देता है। Contact info request के रिप्लाई में ऐसा कोई तंत्र नहीं है।

## इसके बजाय template के अंदर पूछना

`request_contact_info` interactive message, `REQUEST_CONTACT_INFO` template button का फ्री-फ़ॉर्म समकक्ष है, जो उसी contact card की माँग करता है लेकिन उस प्राप्तकर्ता तक पहुँच सकता है जिसकी customer service window बंद है। Interactive message तब उपयोग करें जब प्राप्तकर्ता ने हाल ही में आपको संदेश भेजा हो और आप इस बातचीत के लिए अनुरोध को अपने शब्दों में लिखना चाहें; template button तब उपयोग करें जब window बंद हो, या जब यह अनुरोध उस संदेश के साथ जाए जिसे आप पहले से template के रूप में भेजते हैं। Template से भेजने के लिए [WhatsApp templates](/docs/guides/whatsapp/templates) देखें।

## ध्यान देने योग्य बातें

- **Customer service window खुली होनी चाहिए।** Contact info request एक service message है, जो केवल खुली window के अंदर डिलीवर हो सकता है; हब की [customer service window](/docs/guides/whatsapp/message-types#the-customer-service-window) देखें। Window की जाँच fail-open है, इसलिए `202` इस बात का प्रमाण नहीं है कि भेजते समय window वास्तव में खुली थी।
- **`from` आपके वर्कस्पेस का अपना नंबर होना चाहिए**, और जिस window का खुला होना ज़रूरी है वह उस नंबर से जुड़ी है, पूरे वर्कस्पेस से नहीं।
- **रिप्लाई को id से अनुरोध से नहीं जोड़ा जा सकता।** Meta की तरफ़ कोई `context` न होने का मतलब है कि रिप्लाई पर `in_reply_to_message_id` omit हो जाता है; `from` और अपने हाल के send के आधार पर correlate करें।
- **अस्वीकृति मौन होती है।** WhatsApp प्राप्तकर्ता को एक share sheet दिखाता है, और उसे dismiss करने पर न कोई संदेश आता है और न कोई webhook। `contact_cards` संदेश की अनुपस्थिति ही एकमात्र संकेत है, इसलिए जवाब का इंतज़ार करने वाले किसी भी flow को decline event के बजाय अपना खुद का timeout लगाना होगा।
- **कोई हेडर नहीं, कोई फ़ुटर नहीं, और कोई बटन लेबल नहीं।** Schema इस type पर `header` और `footer_text` को पूरी तरह रोकता है, और बटन को लेबल करने के लिए कोई फ़ील्ड नहीं है। प्राप्तकर्ता जो कुछ भी पढ़ता है वह `body_text` में होना चाहिए।
- **साझा किया गया नंबर उस नंबर से मेल खाएगा इसकी गारंटी नहीं है जिससे contact चैट कर रहा है।** Meta चेतावनी देता है कि उपयोगकर्ता की ID और फ़ोन नंबर हमेशा मेल नहीं खा सकते, इसलिए यह न मानें कि साझा किया गया नंबर `from.phone_number` के बराबर है। यह E.164 होगा इसकी भी गारंटी नहीं है: Bird जहाँ parse हो सके वहाँ इसे normalize करता है और जहाँ न हो सके वहाँ जैसा है वैसा पास करता है।
- **रिप्लाई एक `contact_cards` संदेश है, `interactive_reply` नहीं।** जो integration केवल टैप के लिए `interactive_reply` देखता है वह इस type को पूरी तरह मिस कर देगा, और वह भी जो केवल दूसरे request type के लिए inbound `location` देखता है।

Schema यहाँ जो भी व्यक्त कर सकता है, एक बहुत लंबा `body_text`, एक `header`, एक `footer_text`, या `buttons`, `list`, `cta_url`, `cards` में से कोई भी, बिना किसी catalog code के एक सामान्य request-validation failure है। जो quote resolve नहीं होता वह कुछ भी बनने या चार्ज होने से पहले request को fail कर देता है: `404` [`E15071`](/docs/api/errors/E15071) जब id ऐसे संदेश का नाम लेती है जो इस वर्कस्पेस में नहीं है, `422` [`E15072`](/docs/api/errors/E15072) जब वह ऐसे संदेश का नाम लेती है जिसे quote नहीं किया जा सकता। पूरी interactive error table के लिए हब का [errors](/docs/guides/whatsapp/message-types/interactive#errors) और किसी भी WhatsApp send में आने वाली errors के लिए [Sending WhatsApp messages](/docs/guides/whatsapp/sending-whatsapp) देखें।

## अगले कदम

- [WhatsApp interactive messages](/docs/guides/whatsapp/message-types/interactive): सभी छह interactive types में क्या समान है
- [Location requests](/docs/guides/whatsapp/message-types/interactive/location-requests): फ़ोन नंबर के बजाय लोकेशन माँगें
- [WhatsApp templates](/docs/guides/whatsapp/templates): उस प्राप्तकर्ता तक पहुँचें जिसकी customer service window बंद है
- [Sending WhatsApp messages](/docs/guides/whatsapp/sending-whatsapp): request envelope, `202` मॉडल, और सुरक्षित फिर से प्रयास

## 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](/products/whatsapp) (product)

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