WhatsApp टेम्पलेट
व्यवसाय की ओर से शुरू किए गए WhatsApp संदेश पहले से स्वीकृत टेम्पलेट का उपयोग करते हैं। टेम्पलेट में निश्चित टेक्स्ट और वेरिएबल होते हैं, इसलिए संदेश भेजते समय आपको केवल मान देने होते हैं, जैसे OTP कोड या ऑर्डर नंबर।
Bird एक प्रबंधित कैटलॉग देता है, उसकी सामग्री WhatsApp के पास पंजीकृत करता है और उसे Bird के अपने नंबरों से भेजता है; इसके slug bird_ से शुरू होते हैं। जिस वर्कस्पेस ने अपना नंबर जोड़ा है, वह अपने WhatsApp Business Account पर अपने टेम्पलेट भी बना सकता है। Templates पेज वे सभी टेम्पलेट दिखाता है जिन्हें वर्कस्पेस भेज सकता है, और यह भी कि हर टेम्पलेट कैसा दिखता है।

डैशबोर्ड में टेम्पलेट देखना
WhatsApp > Templates पर जाकर Templates खोलें। Your templates में वे टेम्पलेट हैं जिन्हें इस वर्कस्पेस ने बनाया है; All templates में Bird द्वारा प्रबंधित कैटलॉग भी जुड़ जाता है। नाम से खोजें या स्थिति और श्रेणी के अनुसार फ़िल्टर करें। फ़िल्टर के पास वाले टॉगल से कार्ड ग्रिड और सूची व्यू के बीच बदलें।
सूची व्यू में हर पंक्ति वे फ़ील्ड दिखाती है जिनकी ज़रूरत आपको टेम्पलेट चुनने और भेजने के लिए होती है:
- Status: क्या टेम्पलेट कुल मिलाकर भेजा जा सकता है। प्रबंधित कैटलॉग के टेम्पलेट
activeदिखाते हैं; आपका अपना टेम्पलेट अपनी स्वीकृति की मौजूदा स्थिति दिखाता है। ज़रूरी भाषा उपलब्ध है या नहीं, यह पक्का करने के लिए भाषा सूची जाँचें। - Name: दिखाया जाने वाला नाम, जिसके नीचे टेम्पलेट का
slugहोता है। भेजते समयslugका उपयोग करें। - Languages: वे भाषाएँ जिनमें टेम्पलेट पंजीकृत है, जैसे अंग्रेज़ी और डच।
- श्रेणी:
authentication,utility, याmarketing। श्रेणी से तय होता है कि WhatsApp संदेश को कैसे संभालता है, मैनेज्ड टेम्पलेट किस Bird नंबर से भेजा जाता है, और गंतव्य देश के साथ मिलकर उसकी कीमत क्या होगी। - WABA: कैटलॉग टेम्पलेट के लिए Bird-managed। आपका अपना टेम्पलेट वह WhatsApp Business Account दिखाता है जिसमें वह रखा है, और वह केवल उसी अकाउंट के नंबर से भेजा जाता है।
- अपडेट किया गया: टेम्पलेट में पिछली बार कब बदलाव हुआ।
टेम्पलेट का विवरण खोलने के लिए किसी पंक्ति पर क्लिक करें।
टेम्पलेट में क्या होता है
विवरण दृश्य संदेश का मुख्य भाग, वेरिएबल और बटन WhatsApp जैसे प्रीव्यू में दिखाता है।
विवरण में POST /v1/whatsapp/messages के लिए एक cURL उदाहरण भी होता है, जो क्षेत्रीय होस्ट और टेम्पलेट के उदाहरण मानों का उपयोग करता है। भेजने से पहले API कुंजी, प्राप्तकर्ता और वेरिएबल के मान बदल दें।
यह उदाहरण दिखाता है कि भेजे गए अनुरोध का ढांचा कैसा होना चाहिए। API के ज़रिए यही सामग्री टेम्पलेट के वर्शन से मिलती है (टेम्पलेट की सामग्री पढ़ना)।
API से टेम्पलेट की सूची प्राप्त करना
GET /v1/whatsapp/templates कर्सर-आधारित पेजिनेशन वाला कैटलॉग लौटाता है। इस अनुरोध के लिए whatsapp_management पढ़ने की अनुमति ज़रूरी है। HTTP या किसी SDK की raw-request मेथड का उपयोग करें।
type Templates = { data: Array<{ slug: string; status: string }> };
const templates = await bird.request<Templates>({
method: "GET",
path: "/v1/whatsapp/templates",
});templates = client.get("/v1/whatsapp/templates")var out struct {
Data []struct {
Slug string `json:"slug"`
Status string `json:"status"`
} `json:"data"`
}
if err := client.Get(context.Background(), "/v1/whatsapp/templates", &out); err != nil {
log.Fatal(err)
}$templates = $bird->get('/v1/whatsapp/templates');curl https://us1.platform.bird.com/v1/whatsapp/templates \
-H "Authorization: Bearer $BIRD_API_KEY"हर प्रविष्टि टेम्पलेट, उसकी श्रेणी और उसकी उपलब्ध भाषाओं की पहचान बताती है। संदेश की सामग्री के लिए लाइव वर्शन को अलग से पढ़ें।
{
"available_languages": ["en", "es", "pt-BR", "..."],
"category": "authentication",
"default_language": "en",
"description": "One-time passcode",
"id": "wat_01ky4x8e4genzb7way45txfkm1",
"languages": {
"en": { "status": "approved" },
"es": { "status": "approved" },
"pt-BR": { "status": "approved" },
"...": "..."
},
"name": "bird_otp",
"on_missing_language": "fail",
"scope": "system",
"slug": "bird_otp",
"status": "active"
}उदाहरण प्रतिक्रिया में bird_otp भाषा सूचियाँ संक्षिप्त की गई हैं।
भेजना इन फ़ील्ड पर निर्भर करता है:
slug: भेजते समय इस्तेमाल होने वाला हैंडल। प्रबंधित टेम्पलेट के स्लगbird_से शुरू होते हैं, जो उन्हीं के लिए आरक्षित प्रीफ़िक्स है।waba: वह WhatsApp Business Account जिसमें Meta पर टेम्पलेट की भाषाएँ रखी हैं, और जिससे भेजने वाले नंबर का जुड़ा होना ज़रूरी है। प्रबंधित टेम्पलेट पर यह फ़ील्ड नहीं होता, क्योंकि उसका अकाउंट Bird प्रबंधित करता है।available_languages: वे भाषाएँ जिनमें भेजा जा सकता है। रोकी गई, अक्षम, संग्रहीत या सीमित भाषा इस सूची से हट जाती है।on_missing_language: अनुरोधित भाषा उपलब्ध न होने पर क्या होता है। Bird द्वारा प्रबंधित WhatsApp टेम्पलेटfailका उपयोग करते हैं, जो किसी दूसरी भाषा से बदलने के बजाय भेजने का अनुरोध अस्वीकार कर देता है।
स्थिति और भाषा की स्थिति
Bird द्वारा प्रबंधित टेम्पलेट status: active दिखाते हैं। languages.<tag>.status किसी एक भाषा के लिए WhatsApp की स्थिति बताता है, जैसे approved, paused या disabled।
सक्रिय टेम्पलेट में भी कोई भाषा अनुपलब्ध हो सकती है। कोई भाषा भेजी जा सकती है या नहीं, यह तय करने के लिए available_languages देखें।
टेम्पलेट की सामग्री पढ़ना
संदेश की सामग्री लाइव संस्करण की किसी भाषा से जुड़ी होती है। टेम्पलेट से live_version_id पढ़ें, फिर ज़रूरी भाषा का अनुरोध करें:
const language = await bird.request({
method: "GET",
path: "/v1/whatsapp/templates/bird_order_confirmation/versions/{version_id}/languages/en",
});language = client.get(
"/v1/whatsapp/templates/bird_order_confirmation/versions/{version_id}/languages/en"
)var language map[string]any
if err := client.Get(context.Background(),
"/v1/whatsapp/templates/bird_order_confirmation/versions/{version_id}/languages/en",
&language); err != nil {
log.Fatal(err)
}$language = $bird->get('/v1/whatsapp/templates/bird_order_confirmation/versions/{version_id}/languages/en');curl https://us1.platform.bird.com/v1/whatsapp/templates/bird_order_confirmation/versions/{version_id}/languages/en \
-H "Authorization: Bearer $BIRD_API_KEY"टेम्पलेट संदर्भ में slug या wat_ ID दी जा सकती है। GET …/versions/{version_id}/languages संस्करण की भाषाओं को उनकी सामग्री के बिना सूचीबद्ध करता है।
{
"category": "utility",
"components": [
{
"example_parameters": [
{ "name": "ref", "text": "A1B2C3D4", "type": "text" },
{ "name": "amount", "text": "USD 49.99", "type": "text" }
],
"text": "Your order {{ref}} has been confirmed for a total of {{amount}}. Thanks for shopping with us.",
"type": "body"
}
],
"language": "en",
"status": "approved"
}भेजने के अनुरोध का components टेम्पलेट से मेल खाना चाहिए। example_parameters हर प्लेसहोल्डर की पहचान करता है। इस उदाहरण में बॉडी पैरामीटर name: "ref" और name: "amount" का उपयोग करते हैं। पोज़िशनल टेम्पलेट में name नहीं होता और मान {{n}} के क्रम में लिए जाते हैं। पैरामीटर वाले बटनों के अपने example_parameters होते हैं।
भाषा का category वह Meta श्रेणी है जिससे मूल्य तय होता है। अगर Meta उस भाषा को दोबारा वर्गीकृत करता है, तो यह टेम्पलेट की पंजीकृत श्रेणी से अलग हो सकती है।
वर्ज़न की variables सूची हर प्लेसहोल्डर का सारांश देती है: उसकी कुंजी, प्रकार, आवश्यक होने का फ़्लैग और शर्त। नामित प्लेसहोल्डर अपने नाम को कुंजी के रूप में इस्तेमाल करते हैं। स्थितिगत प्लेसहोल्डर अपनी संख्या इस्तेमाल करते हैं।
टेम्पलेट के साथ भेजना
भेजने के template ऑब्जेक्ट में टेम्पलेट का नाम दें और components के ज़रिए उसके वेरिएबल भरें। पूरे पेलोड के लिए WhatsApp संदेश भेजना देखें:
const msg = await bird.whatsapp.send({
to: "+15551234567",
template: {
slug: "bird_otp",
components: [{ type: "body", parameters: [{ type: "text", text: "123456" }] }],
},
});
console.log(msg.id, msg.status);msg = client.whatsapp.send(
to="+31612345678",
template="bird_otp",
language="en",
components=[{"type": "body", "parameters": [{"type": "text", "text": "123456"}]}],
)
print(msg.id, msg.status)code := "123456"
msg, err := client.Whatsapp.Send(context.Background(), bird.WhatsappSendParams{
To: "+15551234567",
Template: "bird_otp",
Language: "en",
Components: []bird.WhatsAppMessageTemplateComponent{{
Type: "body",
Parameters: &[]bird.WhatsAppMessageTemplateComponentParameter{{Type: "text", Text: &code}},
}},
})
if err != nil {
log.Fatal(err)
}
fmt.Println(msg.Id, *msg.Status)$message = $bird->whatsapp->send(
to: '+15551234567',
template: 'bird_otp',
language: 'en',
components: [
(new WhatsAppMessageTemplateComponent())
->setType('body')
->setParameters([
(new WhatsAppMessageTemplateComponentParameter())->setType('text')->setText('123456'),
]),
],
);
echo $message->getId(), ' ', $message->getStatus();bird whatsapp send \
--components '[{"parameters":[{"text":"1234","type":"text"}],"type":"body"},{"parameters":[{"text":"1234","type":"text"}],"type":"button"}]' \
--language en \
--template bird_otp \
--to +31612345678curl -X POST https://us1.platform.bird.com/v1/whatsapp/messages \
-H "Authorization: Bearer $BIRD_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"to": "+14155550100",
"template": {
"slug": "bird_otp",
"language": "en",
"components": [
{ "type": "body", "parameters": [{ "type": "text", "text": "481920" }] },
{ "type": "button", "parameters": [{ "type": "text", "text": "481920" }] }
]
}
}'श्रेणी के अनुसार भेजना
हर टेम्पलेट में Meta की तीन श्रेणियों में से एक होती है। श्रेणी तय करती है कि भेजना सफल होने से पहले आपको क्या करना होगा और उसकी लागत क्या होगी। अपना ऑथेंटिकेशन टेम्पलेट बनाने या कॉपी करने के लिए सत्यापित व्यवसाय चाहिए, लेकिन उसे भेजने के लिए नहीं। Bird का प्रबंधित bird_otp, Bird के अपने WhatsApp Business Account पर है और आपके किसी सत्यापन के बिना भेजा जाता है। मार्केटिंग टेम्पलेट हमेशा आपके अपने WhatsApp Business Account से भेजे जाते हैं, Meta के एक दूसरे API के ज़रिए, जिस पर Bird अपने आप रूट करता है। तीनों में यूटिलिटी टेम्पलेट की पूर्व-शर्तें सबसे कम हैं।
- ऑथेंटिकेशन टेम्पलेट: एक बार इस्तेमाल होने वाले सत्यापन कोड, कोड कॉपी करने का बटन, और इसे बनाने पर लागू सत्यापन की शर्त
- यूटिलिटी टेम्पलेट: ऑर्डर अपडेट, अपॉइंटमेंट रिमाइंडर और खाता सूचनाएँ
- मार्केटिंग टेम्पलेट: प्रचार संदेश, ज़रूरी बिज़नेस खाता, और ऑप्ट-आउट की अपेक्षा
अगले कदम
- WhatsApp संदेश भेजना: भेजने का पूरा पेलोड, जिसमें
templateऑब्जेक्ट जुड़ता है - WhatsApp टेम्पलेट दिशानिर्देश: वे नियम जिनके आधार पर Meta टेम्पलेट की समीक्षा करता है
- ऑथेंटिकेशन टेम्पलेट: वन-टाइम सत्यापन कोड, और टेम्पलेट बनाने से पहले आवश्यक व्यवसाय सत्यापन
- WhatsApp मूल्य निर्धारण: श्रेणी और गंतव्य से कीमत कैसे तय होती है
संबंधित संसाधन
इस विषय के लिए दस्तावेज़, गाइड और उदाहरणों के साथ आगे बढ़ें।