# WhatsApp लिंक बटन

लिंक बटन WhatsApp मैसेज के नीचे एक टैप करने योग्य बटन लगाता है जो प्राप्तकर्ता के ब्राउज़र में URL खोलता है। इसका उपयोग तब करें जब अगला कदम वेब पर हो, जैसे चेकआउट पेज या वर्कशॉप की तारीखों का सेट, न कि चैट के भीतर। यदि प्राप्तकर्ता WhatsApp के अंदर किसी विकल्प का जवाब देता है, तो इसके बजाय [रिप्लाई बटन](/docs/guides/whatsapp/message-types/interactive/reply-buttons) या [लिस्ट मेन्यू](/docs/guides/whatsapp/message-types/interactive/list-menus) का उपयोग करें।

## लिंक बटन भेजें

`interactive.type` को `cta_url` पर सेट करें, एक `body_text` और एक `cta_url` ऑब्जेक्ट के साथ जिसमें बटन का `text` और `url` हो:

**TypeScript**

```typescript
const msg = await bird.whatsapp.send({
  to: "+16505551234",
  from: "+13124495648",
  interactive: {
    type: "cta_url",
    body_text: "Tap the button below to see the available dates.",
    cta_url: { text: "See dates", url: "https://example.com/workshops?click_id=a1b2c3" },
  },
});
console.log(msg.id, msg.status);
```

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

`from` हर सर्विस मैसेज पर आवश्यक है: आपके वर्कस्पेस का अपना नंबर, Bird-प्रबंधित नहीं। पूरा ढाँचा एक वैकल्पिक हेडर, फ़ुटर, और पहले के मैसेज का कोट जोड़ता है:

```json
{
  "to": "+16505551234",
  "from": "+13124495648",
  "in_reply_to_message_id": "wam_01kya19eknftrs2s6p82asmvnh",
  "interactive": {
    "type": "cta_url",
    "header": {
      "type": "image",
      "url": "https://cdn.example.com/banners/workshop.png"
    },
    "body_text": "Tap the button below to see the available dates.",
    "footer_text": "Dates are subject to change.",
    "cta_url": {
      "text": "See dates",
      "url": "https://example.com/workshops?click_id=a1b2c3"
    }
  },
  "tags": [{ "name": "campaign", "value": "autumn-workshops" }],
  "metadata": { "order_id": "A-4192" }
}
```

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

यह टाइप ठीक एक `cta_url` बटन भेजता है और इसके साथ `buttons`, `list`, या `cards` नहीं भेज सकता। साझा बटन शेप के लिए हब का [buttons](/docs/guides/whatsapp/message-types/interactive#buttons) सेक्शन देखें, जिसे कैरोसेल कार्ड का अपना लिंक बटन भी पुन: उपयोग करता है।

## हेडर और फ़ुटर

हेडर वैकल्पिक है, और यह चार में से एक शेप का होता है:

```text
"header": { "type": "text",     "text": "New workshop dates" }
"header": { "type": "image",    "url": "https://cdn.example.com/a.png" }
"header": { "type": "video",    "url": "https://cdn.example.com/a.mp4" }
"header": { "type": "document", "url": "https://cdn.example.com/a.pdf" }
```

मीडिया हेडर (`image`, `video`, या `document`) अपनी फ़ाइल एक पब्लिक `https` URL के रूप में ले जाता है जिसे WhatsApp भेजते समय फ़ेच करता है, न कि अपलोड किए गए मीडिया हैंडल के रूप में। `footer_text` वैकल्पिक है और बटन के नीचे एक लाइन जोड़ता है।

## सीमाएँ

| फ़ील्ड                | सीमा                        |
| --------------------- | --------------------------- |
| `cta_url` बटन         | ठीक एक                      |
| `cta_url.text` (लेबल) | आवश्यक, 1 से 20 कैरेक्टर    |
| `cta_url.url`         | आवश्यक, 1 से 2,000 कैरेक्टर |
| `body_text`           | आवश्यक, 1 से 1,024 कैरेक्टर |
| `footer_text`         | वैकल्पिक, 1 से 60 कैरेक्टर  |
| `header.text`         | 1 से 60 कैरेक्टर            |

`url` पर 2,000-कैरेक्टर की सीमा Bird की अपनी है: Meta इस फ़ील्ड के लिए कोई लंबाई सीमा प्रकाशित नहीं करता। `url` यह भी सत्यापित करता है कि `format: uri` स्कीम सहित एक absolute पता हो, लेकिन Bird यह जाँच नहीं करता कि कौन सी स्कीम है: एक `http://` पता Bird की वैलिडेशन पास कर जाता है, और यह केवल Meta तय करता है कि वह डिलीवर होगा या नहीं।

## क्लिक क्या रिपोर्ट करता है

टैप करने पर पता प्राप्तकर्ता के ब्राउज़र में खुलता है और API के ज़रिए आपको कुछ वापस नहीं आता। लिंक बटन का टैप एक `interactive_reply` नहीं है: जो इनबाउंड मैपर `interactive_reply` बनाता है वह केवल रिप्लाई-बटन टैप और लिस्ट-रो टैप को हैंडल करता है, और `cta_url` लिंक का कोई समकक्ष इनबाउंड शेप नहीं है। जो आप देखते हैं वह सामान्य आउटबाउंड लाइफ़साइकल है, मैसेज के `sent`, `delivered`, और `read` स्टेटस, लेकिन `read_at` आपको बताता है कि मैसेज खोला गया, न कि बटन टैप किया गया। कोई क्लिक इवेंट नहीं, कोई टाइमस्टैम्प नहीं, और WhatsApp या Bird से कोई प्रति-प्राप्तकर्ता टैप सिग्नल नहीं।

एट्रिब्यूशन वापस पाने के दो तरीके, क्योंकि भेजना स्वयं आपको यह नहीं देगा:

- **लैंडिंग पेज को इंस्ट्रूमेंट करें।** क्लिक का एकमात्र प्रमाण आपके अपने डेस्टिनेशन सर्वर पर उपलब्ध है, उस URL से जो आपने दिया था।
- **URL को स्वयं, प्रति प्राप्तकर्ता बदलें।** आप जो `url` भेजते हैं वह एक लिटरल स्ट्रिंग है: Bird इसे स्टोर करता है और बिना किसी substitution या variable syntax के Meta को अपरिवर्तित पास करता है। यह एक सेंड के हर प्राप्तकर्ता के लिए समान होता है, इसलिए प्रति-प्राप्तकर्ता एट्रिब्यूशन का मतलब है कि आप अपना खुद का क्वेरी पैरामीटर जनरेट करें, जैसे `?click_id=<value>`, और प्रति प्राप्तकर्ता एक `POST /v1/whatsapp/messages` कॉल करें। एंडपॉइंट पहले से प्रति कॉल एक `to` लेता है, इसलिए यह आपकी तरफ़ बुककीपिंग है, न कि API की कोई अनुपलब्ध सुविधा।

एक तीसरा विकल्प इस टाइप के बाहर मौजूद है: एक [टेम्पलेट](/docs/guides/whatsapp/templates) जिसमें `url` बटन वेरिएबल हो, WhatsApp स्वयं प्रति प्राप्तकर्ता पर्सनलाइज़ करता है, जो सेंड के `button` कंपोनेंट के ज़रिए दिया जाता है। वह वेरिएबल पते के अंत में होना चाहिए, `{{1}}` के रूप में लिखा जाता है, ताकि यह ट्रेलिंग पाथ सेगमेंट या क्वेरी वैल्यू बदल सके लेकिन होस्ट या URL के बीच का हिस्सा कभी नहीं। ट्रेड-ऑफ़: टेम्पलेट आपको प्रति-प्राप्तकर्ता URL और कस्टमर सर्विस विंडो के बाहर डिलीवरी देता है, लेकिन Meta की समीक्षा और एक निश्चित अनुमोदित शेप की कीमत पर, जबकि `cta_url` सेंड खुली विंडो के अंदर फ़्री-फ़ॉर्म, बिना समीक्षा भेजने की सुविधा देता है जहाँ URL आप स्वयं बदलते हैं।

## सीमाएँ और विशेष स्थितियाँ

- **कस्टमर सर्विस विंडो खुली होनी चाहिए।** लिंक बटन एक सर्विस मैसेज है, जो केवल खुली विंडो के अंदर डिलीवर किया जा सकता है; हब का [कस्टमर सर्विस विंडो](/docs/guides/whatsapp/message-types#the-customer-service-window) देखें। विंडो जाँच fail open होती है, इसलिए `202` इस बात का प्रमाण नहीं है कि भेजते समय विंडो वास्तव में खुली थी।
- **`from` आपके वर्कस्पेस का अपना नंबर होना चाहिए।** इसे छोड़ना, या ऐसा नंबर देना जो कनेक्टेड सेंडर नहीं है, सेंड बनने से पहले ही रिजेक्ट हो जाता है।
- **URL पूरे सेंड के लिए स्टैटिक है, और हर प्राप्तकर्ता के लिए समान है।** इस टाइप पर कोई प्रति-प्राप्तकर्ता वेरिएबल नहीं है। क्लिक को फिर भी एट्रिब्यूट कैसे करें, इसके लिए [क्लिक क्या रिपोर्ट करता है](#क्लिक-क्या-रिपोर्ट-करता-है) देखें।
- **कोई टैप सिग्नल नहीं, कभी भी।** लिंक बटन के टैप से कोई इनबाउंड मैसेज और कोई webhook इवेंट नहीं बनता। ऐसा फ़ीचर न बनाएँ जो केवल इस टाइप से क्लिक मेट्रिक्स का वादा करे।
- **Bird URL के शेप की जाँच करता है, स्कीम की नहीं।** `url` स्कीम सहित एक absolute पता होना चाहिए, लेकिन Bird को `https` की आवश्यकता नहीं है, और Meta भी कोई स्कीम प्रतिबंध प्रकाशित नहीं करता। इसकी तुलना मीडिया हेडर के `url` से करें, जिसके लिए `https` आवश्यक बताया गया है।
- **एक मीडिया हेडर URL जिसे WhatsApp फ़ेच नहीं कर पाता, सेंड स्वीकार होने के बाद फ़ेल होता है।** WhatsApp भेजते समय हेडर ऐसेट फ़ेच करता है और इसे 10 मिनट तक कैश करता है; साइन किए गए URL को सेंड से अधिक समय तक वैध रहना चाहिए, और पहुँच से बाहर URL असिंक्रोनस रूप से फ़ेल होता है, मैसेज के `last_error` पर `media_rejected` के साथ।

हब की [errors](/docs/guides/whatsapp/message-types/interactive#errors) तालिका में सूचीबद्ध कोई भी शेप जाँच इस टाइप पर फ़ायर नहीं हो सकती: वे लिस्ट की रो, `buttons` ऐरे, या कैरोसेल के कार्ड्स का निरीक्षण करती हैं, और `cta_url` मैसेज में इन तीनों में से कोई नहीं होता। शेप की गलती, जैसे 20 कैरेक्टर से अधिक का `text` लेबल, उन कोड्स में से किसी के बजाय जेनेरिक request-validation एरर के रूप में वापस आती है। जो कोट रिज़ॉल्व नहीं होता वह कुछ भी बनने या चार्ज होने से पहले रिक्वेस्ट को फ़ेल कर देता है: `404` [`E15071`](/docs/api/errors/E15071) जब id ऐसे मैसेज को नाम देती है जो इस वर्कस्पेस में नहीं है, `422` [`E15072`](/docs/api/errors/E15072) जब वह ऐसे मैसेज को नाम देती है जिसे कोट नहीं किया जा सकता। जो एरर किसी भी WhatsApp सेंड पर आ सकते हैं, बंद विंडो, अनुपलब्ध या अमान्य सेंडर, या अमान्य प्राप्तकर्ता, उनके लिए हब के [errors](/docs/guides/whatsapp/message-types/interactive#errors) और [WhatsApp मैसेज भेजना](/docs/guides/whatsapp/sending-whatsapp) देखें।

## अगले कदम

- [WhatsApp इंटरैक्टिव मैसेज](/docs/guides/whatsapp/message-types/interactive): सभी छह इंटरैक्टिव टाइप में क्या साझा है
- [WhatsApp टेम्पलेट](/docs/guides/whatsapp/templates): `url` बटन वेरिएबल के लिए जिसे WhatsApp प्रति प्राप्तकर्ता पर्सनलाइज़ करता है
- [WhatsApp मैसेज भेजना](/docs/guides/whatsapp/sending-whatsapp): रिक्वेस्ट एनवेलप, `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)
