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 है।
ध्यान रखने योग्य बातें
- ग्राहक सेवा विंडो खुली होनी चाहिए। लोकेशन अनुरोध एक सर्विस मैसेज है, जो केवल खुली विंडो के भीतर डिलीवर हो सकता है; हब का ग्राहक सेवा विंडो देखें। विंडो जाँच विफल होने पर भी अनुरोध को आगे जाने देती है, इसलिए
202इस बात का सबूत नहीं है कि मैसेज भेजे जाते समय विंडो सच में खुली थी। fromआपके वर्कस्पेस का अपना नंबर होना चाहिए। इसे छोड़ देने पर, या ऐसा नंबर देने पर जो कनेक्टेड सेंडर नहीं है, भेजने का अनुरोध बनने से पहले ही अस्वीकार हो जाता है।- जवाब मिलने की कोई गारंटी नहीं है। प्राप्तकर्ता लोकेशन साझा करने वाली स्क्रीन बंद कर सकता है, मैसेज को पूरी तरह अनदेखा कर सकता है, या पता सामान्य टेक्स्ट में टाइप कर सकता है। ऐसा पता बिना किसी
locationके एक सामान्य इनबाउंड टेक्स्ट मैसेज के रूप में आता है। Meta अस्वीकार या बंद किए गए शेयर का कोई संकेत दर्ज नहीं करता, इसलिए अनुरोध भेजकर जवाब की प्रतीक्षा पर निर्भर न रहें और अपनी तरफ़ टाइमआउट तय करें। - साझा किए गए पिन में केवल निर्देशांक हो सकते हैं। नाम और पता जोड़ना है या नहीं, यह प्राप्तकर्ता का क्लाइंट तय करता है; सामान्य पिन में दोनों में से कोई नहीं होता, इसलिए यह न मानें कि एक के साथ दूसरा भी आएगा।
- न हेडर, न फ़ुटर, और न कोई अपना फ़ील्ड। स्कीमा इस टाइप पर
headerऔरfooter_textको पूरी तरह रोकता है, और बटन का लेबल देने के लिए कोई फ़ील्ड नहीं है। जो भी छोटी सूचना आपको चाहिए, उसेbody_textके भीतर ही लिखना होगा। - जवाब एक
locationमैसेज होता है,interactive_replyनहीं। जो इंटीग्रेशन टैप के लिए केवलinteractive_replyपर नज़र रखता है, वह इस टाइप को पूरी तरह चूक जाएगा; इसके बजाय इनबाउंडlocationपर नज़र रखें।
यहाँ स्कीमा जो कुछ भी पकड़ सकता है, जैसे बहुत लंबा body_text, header, footer_text, या buttons, list, cta_url, cards में से कोई भी, वह बिना कैटलॉग कोड वाली सामान्य अनुरोध-सत्यापन विफलता होती है। रिज़ॉल्व न होने वाला कोट कुछ भी बनने या शुल्क लगने से पहले अनुरोध को विफल कर देता है: जब id इस वर्कस्पेस के किसी मैसेज की ओर इशारा नहीं करता, तो 404 E15071, और जब वह ऐसे मैसेज की ओर इशारा करता है जिसे कोट नहीं किया जा सकता, तो 422 E15072। इंटरैक्टिव त्रुटियों की पूरी तालिका के लिए हब का त्रुटियाँ देखें, और किसी भी WhatsApp भेजने में आ सकने वाली त्रुटियों के लिए WhatsApp मैसेज भेजना देखें।
अगले कदम
- WhatsApp इंटरैक्टिव संदेश: सभी छह इंटरैक्टिव प्रकारों में क्या समान है
- संपर्क जानकारी अनुरोध: लोकेशन के बजाय फ़ोन नंबर माँगें
- WhatsApp संदेश भेजना: अनुरोध की संरचना,
202मॉडल और सुरक्षित तरीके से फिर से प्रयास करना
संबंधित संसाधन
इस विषय के लिए दस्तावेज़, गाइड और उदाहरणों के साथ आगे बढ़ें।