Sign inGet Started

WhatsApp संपर्क कार्ड प्राप्त करना

contact_cards अकेला ऐसा आर्म है जो एक ही फ़ील्ड को दोनों दिशाओं में ले जाता है। संपर्क अपनी एड्रेस बुक से कोई कार्ड साझा कर सकता है, और आपके भेजे गए संपर्क जानकारी अनुरोध पर किया गया टैप भी यहीं आता है, जिसमें वह नंबर होता है जिसे संपर्क ने बताना चुना।

आने वाले संपर्क कार्ड में क्या होता है

contact_cards हमेशा एक ऐरे होता है, और origin बताता है कि कार्ड कैसे आया:

कोड उदाहरण
{
  "id": "wam_01kyg9v3timy1w7n0r4cbh9ukf",
  "direction": "inbound",
  "from": { "phone_number": "+14155550100" },
  "to": { "phone_number": "+13124495569" },
  "status": "received",
  "contact_cards": [
    {
      "origin": "contact_request",
      "phone_numbers": [{ "phone_number": "+14155550100", "type": "cell" }]
    }
  ],
  "created_at": "2026-08-25T09:27:45Z"
}
originकार्ड कैसे आया
contact_requestसंपर्क ने आपका भेजा वह बटन टैप किया जो उनका नंबर माँगता है
otherसंपर्क ने बिना पूछे चैट में एक कार्ड साझा किया

किसी कार्ड को अपने अनुरोध का जवाब मानने से पहले origin जाँचें। केवल यही संकेत दोनों को अलग करता है, और बिना पूछे साझा किया गया कार्ड संपर्क के बजाय किसी बिल्कुल तीसरे व्यक्ति का हो सकता है। मानों की सूची खुली है, इसलिए किसी अपरिचित मान को साझा करने का ऐसा तरीका मानें जो बाद में जोड़ा गया है।

इस वर्कस्पेस से भेजा गया कार्ड वापस पढ़ने पर उसमें origin बिल्कुल नहीं होता। इसी से एक ही फ़ील्ड पर भेजे गए कार्ड को प्राप्त कार्ड से अलग पहचाना जाता है।

टैप में क्या आता है, और साझा किए गए कार्ड में क्या आता है

दोनों अलग-अलग मात्रा में जानकारी के साथ आते हैं, और कार्ड पर कुछ भी अनिवार्य नहीं है: WhatsApp कार्ड में मौजूद हिस्से भेजता है और बाकी छोड़ देता है, इसलिए केवल origin वाला कार्ड भी हटाया नहीं जाता, बल्कि पहुँचता है।

फ़ील्डबटन टैप परचैट में साझा किए गए कार्ड पर
phone_numbers[].phone_number, typeवह नंबर जो संपर्क ने बताना चुनाकार्ड में मौजूद सभी नंबर
vcardनहीं होता; टैप में केवल नंबर आता हैvCard फ़ॉर्मैट में कार्ड
name, org, birthday, emails, urls, addressesWhatsApp जो भी भेजे, जो आमतौर पर कुछ नहीं होतातब मौजूद, जब कार्ड में ये हों
कोड उदाहरण
{
  "contact_cards": [
    {
      "origin": "other",
      "vcard": "BEGIN:VCARD\nVERSION:3.0\nN:Johnson;Barbara;;;\nTEL;type=CELL:+16505551234\nEND:VCARD\n",
      "name": {
        "formatted_name": "Barbara J. Johnson",
        "first_name": "Barbara",
        "last_name": "Johnson"
      },
      "org": { "company": "Northside Plumbing" },
      "phone_numbers": [{ "phone_number": "+16505551234", "type": "cell" }]
    }
  ]
}

दो फ़ील्ड पार्स करते समय सावधानी चाहिए। phone_number को जहाँ पार्स किया जा सके वहाँ E.164 में सामान्य किया जाता है, और जहाँ न किया जा सके, जैसे एक्सटेंशन वाले नंबर, वहाँ उसे ठीक वैसे ही आगे भेजा जाता है जैसे संपर्क के डिवाइस ने सहेजा था। इसलिए E.164 मानकर न चलें, सावधानी से पार्स करें। birthday उसी डिवाइस से बिना जाँच के आता है और तारीख़ के प्रकार के बजाय YYYY-MM-DD आकार के टेक्स्ट के रूप में आगे भेजा जाता है, इसलिए यह न मानें कि वह पार्स हो जाएगा। प्राप्त कार्ड पर type लेबल छोटे अक्षरों में होता है, और WhatsApp उसके लिए कोई तय शब्दावली नहीं देता, इसलिए CELL पर स्विच करने के बजाय उसे केस-असंवेदी ढंग से मिलाएँ।

संपर्क द्वारा बताया गया फ़ोन नंबर

जिस संपर्क ने WhatsApp यूज़रनेम अपना लिया है, वह आप तक बिज़नेस-स्कोप्ड यूज़र ID के ज़रिए पहुँचता है और from पर कोई फ़ोन नंबर नहीं होता। नंबर माँगने के लिए आप संपर्क जानकारी अनुरोध भेजते हैं, और उसका जवाब इसी आर्म में आता है, जिसमें origin: "contact_request" होता है और नंबर phone_numbers में होता है।

संपर्क जो नंबर बताता है, यह ज़रूरी नहीं कि वही नंबर हो जिससे वह चैट करता है। Meta चेतावनी देता है कि उपयोगकर्ता का पहचानकर्ता और फ़ोन नंबर हमेशा मेल नहीं खाते। इसलिए from पर मौजूद पहचान को बदलने के बजाय बताए गए नंबर को एक अलग जानकारी के रूप में सहेजें।

वेबहुक पेलोड

whatsapp.received इवेंट एनवेलप पर contact_cards ऐरे भेजता है:

कोड उदाहरण
{
  "type": "whatsapp.received",
  "timestamp": "2026-08-25T09:27:45.019Z",
  "data": {
    "whatsapp_id": "wam_01kyg9v3timy1w7n0r4cbh9ukf",
    "workspace_id": "ws_01ky7m235keycbnwyajabe1a6b",
    "direction": "inbound",
    "from": { "phone_number": "+14155550100", "bsuid": "US.13491208655302741918" },
    "to": { "phone_number": "+13124495569" },
    "contact_cards": [
      {
        "origin": "contact_request",
        "phone_numbers": [{ "phone_number": "+14155550100", "type": "cell" }]
      }
    ]
  }
}

ध्यान रखने योग्य बातें

  • अस्वीकार किए गए अनुरोध से कुछ नहीं आता। WhatsApp संपर्क को एक शेयर शीट दिखाता है, और उसे बंद करने पर न कोई संदेश जाता है न कोई वेबहुक चलता है। इसलिए नंबर की प्रतीक्षा करने वाले फ़्लो को अस्वीकृति इवेंट पर निर्भर रहने के बजाय अपना टाइमआउट रखना होगा।
  • दो लंबित अनुरोधों में अंतर नहीं किया जा सकता। संपर्क जानकारी अनुरोध का जवाब देने वाले कार्ड में कोई in_reply_to_message_id नहीं होता, इसलिए अगर आप पहले अनुरोध का जवाब आने से पहले दूसरा अनुरोध भेजते हैं, तो हर जवाब को उसके अपने अनुरोध से नहीं मिलाया जा सकता।
  • ऐरे में कई कार्ड हो सकते हैं। जब कोई संपर्क एक ही संदेश में कई कार्ड साझा करता है, तो ऐरे में कई प्रविष्टियाँ बनती हैं, और हर प्रविष्टि का अपना origin होता है।
  • कार्ड ऐसा संपर्क डेटा है जिसे आपने एकत्र नहीं किया। इसमें किसी तीसरे व्यक्ति का नाम, नंबर और जन्मदिन हो सकता है, इसलिए इसे संग्रहीत करने से पहले वही प्रतिधारण और सहमति नियम लागू करें जो आप किसी भी अन्य व्यक्तिगत डेटा पर लागू करते हैं।

अगले कदम

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