WhatsApp लोकेशन रिक्वेस्ट
लोकेशन रिक्वेस्ट एक WhatsApp मैसेज के नीचे एक बटन लगाती है जो प्राप्तकर्ता से उनकी लोकेशन शेयर करने के लिए कहता है। इसका उपयोग तब करें जब आपको किसी सेव किए गए पते की बजाय वर्तमान स्थिति चाहिए, जैसे पिकअप पॉइंट। फ़ोन नंबर के लिए, संपर्क जानकारी रिक्वेस्ट का उपयोग करें।
लोकेशन रिक्वेस्ट भेजें
interactive.type को location_request_message पर सेट करें, एक body_text के साथ और कुछ नहीं। WhatsApp बटन को खुद रेंडर करता है, इसलिए उसे लेबल करने के लिए कुछ नहीं है:
const msg = await bird.whatsapp.send({
to: "+16505551234",
from: "+13124495648",
interactive: {
type: "location_request_message",
body_text:
"Let's start with your pickup. Share your current location, or type an address instead.",
},
});
console.log(msg.id, msg.status);msg = client.whatsapp.send(
to="+16505551234",
from_="+13124495648",
interactive={
"type": "location_request_message",
"body_text": "Let's start with your pickup. Share your current location, or type an address instead.",
},
)
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: "location_request_message",
BodyText: "Let's start with your pickup. Share your current location, or type an address instead.",
},
})
if err != nil {
log.Fatal(err)
}
fmt.Println(msg.Id, *msg.Status)
}$interactive = (new WhatsAppMessageSendRequestInteractive())
->setType('location_request_message')
->setBodyText("Let's start with your pickup. Share your current location, or type an address instead.");
$message = $bird->whatsapp->send(
to: '+16505551234',
from: '+13124495648',
interactive: $interactive,
);
echo $message->getId(), ' ', $message->getStatus();bird whatsapp send \
--from +13124495648 \
--interactive "{\"body_text\":\"Let's start with your pickup. Share your current location, or type an address instead.\",\"type\":\"location_request_message\"}" \
--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": "location_request_message",
"body_text": "Let'\''s start with your pickup. Share your current location, or type an address instead."
}
}'from हर सर्विस मैसेज पर ज़रूरी है: आपके वर्कस्पेस का अपना नंबर, Bird-प्रबंधित नहीं। इस टाइप का कोई अपना फ़ील्ड नहीं है, और स्कीमा header, footer_text, और हर दूसरे टाइप के फ़ील्ड (buttons, list, cta_url, cards) को पूरी तरह रोकता है, इसलिए body_text ही पूरा मैसेज है, अधिकतम 1,024 कैरेक्टर।
in_reply_to_message_id इस टाइप पर भी काम करता है, उसी बातचीत में किसी पहले के मैसेज को कोट करने के लिए। रिज़ॉल्यूशन कैसे काम करता है और क्या छूट सकता है, इसके लिए हब का रिप्लाई को कोरिलेट करने के लिए मैसेज कोट करना देखें।
शेयर की गई लोकेशन पढ़ना
टैप करने पर कोई interactive_reply नहीं बनता। यह एक साधारण इनबाउंड location मैसेज के रूप में आता है, वही आकार जो कोई संपर्क बिना कहे अपनी लोकेशन शेयर करने पर बनाता, इसलिए जो इंटीग्रेशन पहले से इनबाउंड लोकेशन पढ़ता है उसे इस टाइप के लिए कोई नई ब्रांच नहीं चाहिए:
{
"id": "wam_01kyb2m4xq7whs0d8n3prv6tez",
"direction": "inbound",
"from": { "phone_number": "+16505551234" },
"to": { "phone_number": "+13124495648" },
"status": "received",
"in_reply_to_message_id": "wam_01kya19eknftrs2s6p82asmvnh",
"location": {
"latitude": 37.7793,
"longitude": -122.4193,
"name": "Embarcadero Plaza",
"address": "1 Market St, San Francisco, CA 94105"
},
"created_at": "2026-08-25T09:04:11Z"
}location का कोई भी फ़ील्ड ज़रूरी नहीं है: latitude और longitude आमतौर पर दोनों मौजूद होते हैं, लेकिन जब प्राप्तकर्ता ने सादा पिन शेयर किया तो name नहीं होता, address केवल तभी दिखता है जब name भी सेट हो, और url केवल उन बिज़नेस लोकेशन पर दिखता है जो प्राप्तकर्ता के क्लाइंट ने भेजी हों। यह मान कर न चलें कि पिन के साथ सड़क का पता भी आएगा, डिफ़ेंसिव कोड लिखें। यह रिप्लाई आपको मैसेज लिस्ट या GET /v1/whatsapp/messages/{id} के ज़रिए दिखता है; पूरे पथ के लिए हब का रिप्लाई पढ़ना देखें।
जवाब को सवाल से कोरिलेट करना
Meta इस टाइप के रिप्लाई पर एक context सेट करता है जो उस रिक्वेस्ट को नाम देता है जिसका यह जवाब है, इसलिए इनबाउंड मैसेज में in_reply_to_message_id होता है और आपको अपनी कोई कोरिलेशन स्कीम नहीं चाहिए:
{
"direction": "inbound",
"in_reply_to_message_id": "wam_01kya19eknftrs2s6p82asmvnh",
"location": { "latitude": 37.7793, "longitude": -122.4193 }
}रिज़ॉल्यूशन कैसे काम करता है और मिस कैसा दिखता है, इसके लिए रिप्लाई को कोरिलेट करने के लिए मैसेज कोट करना देखें।
यह संपर्क जानकारी रिक्वेस्ट से जानबूझकर किया गया अंतर है: उस टाइप के रिप्लाई में कोई context नहीं होता, इसलिए उसका in_reply_to_message_id कभी रिज़ॉल्व नहीं होता और कोरिलेशन from और टाइमिंग पर निर्भर हो जाता है। लोकेशन रिक्वेस्ट का रिप्लाई रिज़ॉल्व होता है, इसलिए शेयर की गई लोकेशन को उस रिक्वेस्ट से जोड़ने का भरोसेमंद तरीका in_reply_to_message_id है।
ध्यान रखने योग्य बातें
- कस्टमर सर्विस विंडो खुली होनी चाहिए। लोकेशन रिक्वेस्ट एक सर्विस मैसेज है, केवल खुली विंडो के अंदर ही डिलीवर होती है; हब की कस्टमर सर्विस विंडो देखें। विंडो चेक fail open होता है, इसलिए
202इस बात का प्रमाण नहीं है कि भेजते समय विंडो वाकई खुली थी। fromआपके वर्कस्पेस का अपना नंबर होना चाहिए। इसे छोड़ देना, या ऐसा नंबर देना जो कनेक्टेड सेंडर नहीं है, सेंड बनने से पहले ही रिजेक्ट हो जाता है।- रिप्लाई की गारंटी नहीं है। प्राप्तकर्ता लोकेशन-शेयरिंग स्क्रीन को बंद कर सकता है, मैसेज को पूरी तरह अनदेखा कर सकता है, या फ़्री टेक्स्ट में पता टाइप कर सकता है, जो बिना किसी
locationके एक साधारण इनबाउंड टेक्स्ट मैसेज के रूप में आता है। Meta अस्वीकृत या खारिज किए गए शेयर के लिए कोई सिग्नल दस्तावेज़ित नहीं करता, इसलिए इसे fire-and-forget मानें और ऐसे रिस्पॉन्स का इंतज़ार करने की बजाय जो शायद कभी न आए, अपनी तरफ़ से टाइम आउट करें। - शेयर किए गए पिन में केवल कोऑर्डिनेट्स हो सकते हैं। नाम और पता जोड़ना है या नहीं, यह प्राप्तकर्ता का क्लाइंट तय करता है; सादे पिन में दोनों नहीं होते, इसलिए यह न मानें कि एक के साथ दूसरा भी आएगा।
- कोई हेडर नहीं, कोई फ़ुटर नहीं, और कोई अपना फ़ील्ड नहीं। स्कीमा इस टाइप पर
headerऔरfooter_textको पूरी तरह रोकता है, और बटन को लेबल करने के लिए कोई फ़ील्ड नहीं है। जो भी छोटा प्रिंट चाहिए वहbody_textके अंदर डालना होगा। - रिप्लाई एक
locationमैसेज है,interactive_replyनहीं। जो इंटीग्रेशन टैप के लिए केवलinteractive_replyदेखता है, वह इस टाइप को पूरी तरह मिस करेगा; इसके बजाय इनबाउंडlocationदेखें।
स्कीमा यहाँ जो कुछ भी व्यक्त कर सकता है, एक बहुत लंबा body_text, एक header, एक footer_text, या buttons, list, cta_url, cards में से कोई भी, बिना कैटलॉग कोड वाली सामान्य request-validation विफलता है। जो कोट रिज़ॉल्व नहीं होता वह कुछ बनने या चार्ज होने से पहले रिक्वेस्ट को फ़ेल कर देता है: 404 E15071 जब id ऐसे मैसेज का नाम देती है जो इस वर्कस्पेस में नहीं है, 422 E15072 जब वह ऐसे मैसेज का नाम देती है जिसे कोट नहीं किया जा सकता। पूरी इंटरैक्टिव एरर टेबल के लिए हब की एरर और किसी भी WhatsApp सेंड में आने वाली एरर के लिए WhatsApp मैसेज भेजना देखें।
अगले कदम
- WhatsApp इंटरैक्टिव मैसेज: सभी छह इंटरैक्टिव टाइप में क्या समान है
- संपर्क जानकारी रिक्वेस्ट: लोकेशन की बजाय फ़ोन नंबर माँगें
- WhatsApp मैसेज भेजना: रिक्वेस्ट एन्वेलप,
202मॉडल, और सुरक्षित फिर से प्रयास
संबंधित संसाधन
इस विषय के लिए दस्तावेज़, गाइड और उदाहरणों के साथ आगे बढ़ें।