WhatsApp संपर्क जानकारी अनुरोध
संपर्क जानकारी अनुरोध किसी WhatsApp संदेश के नीचे एक बटन जोड़ता है, जो प्राप्तकर्ता से फ़ोन नंबर साझा करने को कहता है। इसका उपयोग तब करें जब आपको किसी से संपर्क करने के लिए नंबर चाहिए, जैसे कॉलबैक या बुकिंग की पुष्टि के लिए, न कि कोई सहेजा गया पता। इसके बजाय लोकेशन चाहिए तो लोकेशन अनुरोध का उपयोग करें।
संपर्क जानकारी अनुरोध भेजें
interactive.type को request_contact_info पर सेट करें, साथ में केवल एक body_text दें और कुछ नहीं। बटन को WhatsApp स्वयं दिखाता है, इसलिए उस पर लेबल लगाने के लिए कुछ नहीं है:
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);msg = client.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.",
},
)
print(msg.id, msg.status)package main
import (
"context"
"fmt"
"log"
"os"
bird "github.com/messagebird/bird-sdk-go"
"github.com/messagebird/bird-sdk-go/option"
)
func main() {
client, err := bird.NewClient(option.WithAPIKey(os.Getenv("BIRD_API_KEY")))
if err != nil {
log.Fatal(err)
}
msg, err := client.Whatsapp.Send(context.Background(), bird.WhatsappSendParams{
To: "+16505551234",
From: "+13124495648",
Interactive: &bird.WhatsAppInteractiveSend{
Type: "request_contact_info",
BodyText: "To confirm your booking we need a number to reach you on. Tap below to share yours.",
},
})
if err != nil {
log.Fatal(err)
}
fmt.Println(msg.Id, *msg.Status)
}$interactive = (new WhatsAppMessageSendRequestInteractive())
->setType('request_contact_info')
->setBodyText('To confirm your booking we need a number to reach you on. Tap below to share yours.');
$message = $bird->whatsapp->send(
to: '+16505551234',
from: '+13124495648',
interactive: $interactive,
);
echo $message->getId(), ' ', $message->getStatus();bird whatsapp send \
--from +13124495648 \
--interactive '{"body_text":"To confirm your booking we need a number to reach you on. Tap below to share yours.","type":"request_contact_info"}' \
--to +16505551234curl -X POST "https://{region}.platform.bird.com/v1/whatsapp/messages" \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{
"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."
}
}'हर सर्विस संदेश पर from ज़रूरी है: यह आपके वर्कस्पेस का अपना नंबर होना चाहिए, Bird द्वारा प्रबंधित नंबर नहीं। इस प्रकार का अपना कोई फ़ील्ड नहीं है, और स्कीमा header, footer_text और बाकी हर प्रकार के फ़ील्ड (buttons, list, cta_url, cards) को सीधे रोकता है। इसलिए पूरा संदेश body_text ही है, जिसकी सीमा 1024 अक्षर है। Meta इस प्रकार के लिए बॉडी की लंबाई की कोई सीमा नहीं बताता; Bird वही 1024 अक्षरों की सीमा लागू करता है जो लिस्ट मेन्यू को छोड़कर हर दूसरे इंटरैक्टिव प्रकार पर लागू होती है।
इस प्रकार पर भी in_reply_to_message_id काम करता है, ताकि आप उसी बातचीत के किसी पिछले संदेश को उद्धृत कर सकें। यह कैसे हल होता है और इससे क्या छूट सकता है, यह जानने के लिए हब का जवाब को जोड़ने के लिए संदेश उद्धृत करना देखें।
साझा किया गया संपर्क पढ़ना
टैप करने से interactive_reply नहीं बनता। जवाब एक सामान्य इनबाउंड संदेश के रूप में आता है, जिसमें contact_cards ऐरे होता है:
{
"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 एक ऐरे है, और जिस contacts संदेश में कोई कार्ड नहीं था, वह अनुपस्थित फ़ील्ड के बजाय [] के रूप में पढ़ा जाता है। यही फ़ील्ड आपके भेजे गए कार्ड को भी ले जाता है, इसलिए इस अनुरोध का जवाब देने वाला कार्ड फ़ील्ड से नहीं, बल्कि origin से पहचाना जाता है। किसी कार्ड को अपना जवाब मानने से पहले origin जाँचना अनिवार्य है। जब कार्ड इस अनुरोध का जवाब हो, तो origin का मान contact_request होता है। जब संपर्क ने बिना पूछे कार्ड साझा किया हो, तो मान other होता है, और वह कार्ड संपर्क का नहीं, बल्कि पूरी तरह किसी तीसरे व्यक्ति का हो सकता है। टैप में केवल phone_numbers[].{phone_number, type} होता है और vcard नहीं होता; name, org, birthday और बाकी जानकारी वाला पूरा संपर्क ऑब्जेक्ट केवल origin: "other" पर आता है। आप यह जवाब संदेश सूची या GET /v1/whatsapp/messages/{id} के ज़रिए देखते हैं; इस प्रक्रिया के पूरे विवरण के लिए हब का जवाब पढ़ना देखें।
उत्तर को प्रश्न से जोड़ना
लोकेशन अनुरोध के विपरीत, Meta इस प्रकार के जवाब पर कोई context नहीं देता, इसलिए in_reply_to_message_id रिज़ॉल्व होने के बजाय छोड़ दिया जाता है। from और अपने किसी हाल के भेजे गए संदेश के आधार पर जवाब को जोड़ें, या मान लें कि आप उसे नहीं जोड़ सकते। एक ही संपर्क को भेजे गए दो लंबित अनुरोधों में अंतर नहीं किया जा सकता: जवाब में कुछ भी नहीं बताता कि वह किस अनुरोध का उत्तर है, इसलिए जो वर्कस्पेस पहले अनुरोध का उत्तर आने से पहले दूसरा संपर्क जानकारी अनुरोध भेजता है, वह यह नहीं बता सकता कि कौन-सा कार्ड किस अनुरोध का उत्तर है।
यह लोकेशन अनुरोधों से जानबूझकर किया गया अंतर है: उस प्रकार के जवाब में Meta का अपना context होता है, इसलिए in_reply_to_message_id रिज़ॉल्व हो जाता है और हब का जवाब को जोड़ने के लिए संदेश उद्धृत करना तंत्र उत्तर को अपने आप वापस जोड़ देता है। संपर्क जानकारी अनुरोध के जवाब के पास ऐसा कोई तंत्र नहीं है।
इसके बजाय टेम्पलेट के भीतर अनुरोध करना
request_contact_info इंटरैक्टिव संदेश, REQUEST_CONTACT_INFO टेम्पलेट बटन का फ़्री-फ़ॉर्म समकक्ष है। टेम्पलेट बटन भी वही संपर्क कार्ड माँगता है, लेकिन ऐसे प्राप्तकर्ता तक पहुँच सकता है जिसकी ग्राहक सेवा विंडो बंद है। जब प्राप्तकर्ता ने आपको हाल ही में संदेश भेजा हो और आप अनुरोध को इसी बातचीत के अनुसार लिखना चाहते हों, तब इंटरैक्टिव संदेश का उपयोग करें। जब विंडो बंद हो, या जब अनुरोध किसी ऐसे संदेश के साथ जाता हो जिसे आप पहले से टेम्पलेट के रूप में भेजते हैं, तब टेम्पलेट बटन का उपयोग करें। टेम्पलेट से भेजने के लिए WhatsApp टेम्पलेट देखें।
ध्यान देने योग्य बातें
- ग्राहक सेवा विंडो खुली होनी चाहिए। संपर्क जानकारी अनुरोध एक सेवा संदेश है, जो केवल खुली विंडो के भीतर डिलीवर हो सकता है; हब का ग्राहक सेवा विंडो देखें। विंडो की जाँच विफल होने पर भी भेजना जारी रहता है, इसलिए
202इस बात का प्रमाण नहीं है कि संदेश भेजे जाते समय विंडो सच में खुली थी। fromआपके वर्कस्पेस के स्वामित्व वाला नंबर होना चाहिए, और जिस विंडो का खुला होना ज़रूरी है, वह उसी नंबर से जुड़ी होती है, पूरे वर्कस्पेस से नहीं।- जवाब को id के ज़रिए अनुरोध से नहीं जोड़ा जा सकता। Meta की ओर से कोई
contextनहीं होता, इसलिए जवाब परin_reply_to_message_idछोड़ दिया जाता है;fromऔर अपने किसी हाल के भेजे गए संदेश के आधार पर जोड़ें। - अस्वीकार करने की कोई सूचना नहीं आती। WhatsApp प्राप्तकर्ता को एक शेयर शीट दिखाता है, और उसे बंद करने पर न कोई संदेश बनता है, न कोई webhook।
contact_cardsसंदेश का न आना ही एकमात्र संकेत है, इसलिए उत्तर का इंतज़ार करने वाले हर फ़्लो को अस्वीकृति इवेंट पर निर्भर रहने के बजाय अपना टाइमआउट रखना होगा। - कोई हेडर नहीं, कोई फ़ुटर नहीं, और कोई बटन लेबल नहीं। स्कीमा इस प्रकार पर
headerऔरfooter_textको पूरी तरह रोकता है, और बटन को लेबल देने के लिए कोई फ़ील्ड नहीं है। प्राप्तकर्ता जो कुछ भी पढ़ता है, वह सबbody_textमें होना चाहिए। - यह ज़रूरी नहीं कि बताया गया नंबर वही हो जिससे संपर्क चैट करता है। Meta चेतावनी देता है कि उपयोगकर्ता की ID और फ़ोन नंबर हमेशा मेल नहीं खाते, इसलिए यह न मानें कि शेयर किया गया नंबर
from.phone_numberके बराबर है। यह भी ज़रूरी नहीं कि नंबर E.164 में हो: Bird पार्स हो सकने पर उसे सामान्य रूप में बदलता है, और न हो सकने पर उसे जैसा का तैसा आगे भेज देता है। - जवाब एक
contact_cardsमैसेज होता है,interactive_replyनहीं। जो इंटीग्रेशन टैप के लिए केवलinteractive_replyपर नज़र रखता है, वह इस टाइप को पूरी तरह चूक जाएगा। इसी तरह, जो इंटीग्रेशन दूसरे अनुरोध टाइप के लिए केवल इनबाउंडlocationपर नज़र रखता है, वह भी इसे चूक जाएगा।
यहाँ स्कीमा जो कुछ भी व्यक्त कर सकता है, जैसे बहुत लंबा body_text, header, footer_text, या buttons, list, cta_url, cards में से कोई भी, वह बिना किसी कैटलॉग कोड वाली सामान्य अनुरोध-सत्यापन विफलता है। जो कोट रिज़ॉल्व नहीं होता, वह कुछ भी बनाए जाने या चार्ज होने से पहले ही अनुरोध को विफल कर देता है। अगर id इस वर्कस्पेस में मौजूद किसी मैसेज की ओर इशारा नहीं करता, तो 404 E15071 मिलता है। अगर वह ऐसे मैसेज की ओर इशारा करता है जिसे कोट नहीं किया जा सकता, तो 422 E15072 मिलता है। पूरी इंटरैक्टिव त्रुटि तालिका के लिए हब का त्रुटियाँ देखें, और किसी भी WhatsApp भेजने पर आ सकने वाली त्रुटियों के लिए WhatsApp मैसेज भेजना देखें।
अगले कदम
- WhatsApp इंटरैक्टिव मैसेज: सभी छह इंटरैक्टिव टाइप में क्या साझा है
- लोकेशन अनुरोध: फ़ोन नंबर की जगह लोकेशन माँगें
- WhatsApp टेम्पलेट: उस प्राप्तकर्ता तक पहुँचें जिसकी ग्राहक सेवा विंडो बंद है
- WhatsApp मैसेज भेजना: अनुरोध का ढाँचा,
202मॉडल, और सुरक्षित रूप से फिर से प्रयास करना
संबंधित संसाधन
इस विषय के लिए दस्तावेज़, गाइड और उदाहरणों के साथ आगे बढ़ें।