WhatsApp यूटिलिटी टेम्पलेट
यूटिलिटी टेम्पलेट उस काम का फ़ॉलो-अप होता है जो प्राप्तकर्ता पहले ही कर चुका है, जैसे ऑर्डर, भुगतान, बुकिंग या साइन-इन। Bird के कैटलॉग में ऐसे आठ टेम्पलेट हैं, जिनमें bird_signin_alert और bird_delivery_update शामिल हैं। किसी स्लग की श्रेणी उसके नाम से नहीं, बल्कि टेम्पलेट सूची से देखें। उदाहरण के लिए, bird_signin_alert नाम से ऑथेंटिकेशन टेम्पलेट जैसा लगता है, पर वह यूटिलिटी टेम्पलेट है।
भेजने से पहले
कोई मैनेज्ड कैटलॉग टेम्पलेट चुनें या अपने कनेक्ट किए गए बिज़नेस खाते पर खुद एक टेम्पलेट बनाएँ।
Bird के कैटलॉग में उपलब्ध टेम्पलेट भेजने के लिए आपको किसी सत्यापन की ज़रूरत नहीं है, ठीक ऑथेंटिकेशन की तरह। अपना यूटिलिटी टेम्पलेट बनाने के लिए भी सत्यापन ज़रूरी नहीं है। ऑथेंटिकेशन के विपरीत, Meta का बिज़नेस-सत्यापन यूटिलिटी पर कभी लागू नहीं होता, इसलिए आप बिना सत्यापन वाले वर्कस्पेस पर भी यूटिलिटी टेम्पलेट बना और संपादित कर सकते हैं। सत्यापन से दूसरी जगहों पर क्या खुलता है, यह जानने के लिए WhatsApp बिज़नेस सत्यापन देखें।
to कोई E.164 फ़ोन नंबर या बिज़नेस-स्कोप वाला यूज़र ID हो सकता है। यूटिलिटी टेम्पलेट में OTP बटन नहीं होता, इसलिए इसमें ऑथेंटिकेशन की तरह प्राप्तकर्ता का केवल फ़ोन नंबर होना ज़रूरी नहीं है।
हर मैनेज्ड कैटलॉग यूटिलिटी टेम्पलेट केवल en में, on_missing_language: fail के साथ रजिस्टर है। अगर आप ऐसी भाषा का अनुरोध करते हैं जो कैटलॉग में नहीं है, तो मैसेज भेजना विफल हो जाता है। सिस्टम अंग्रेज़ी या किसी दूसरी भाषा पर वापस नहीं जाता।
यूटिलिटी टेम्पलेट भेजना
POST /v1/whatsapp/messages को ऐसे template ऑब्जेक्ट के साथ भेजें जिसमें कैटलॉग स्लग दिया गया हो:
const msg = await bird.whatsapp.send({
to: "+16505551234",
template: {
slug: "bird_order_confirmation",
language: "en",
components: [
{
type: "body",
parameters: [
{ type: "text", name: "ref", text: "A1B2C3D4" },
{ type: "text", name: "amount", text: "USD 49.99" },
],
},
],
},
});
console.log(msg.id, msg.status);msg = client.whatsapp.send(
to="+16505551234",
template="bird_order_confirmation",
language="en",
components=[
{
"type": "body",
"parameters": [
{"type": "text", "name": "ref", "text": "A1B2C3D4"},
{"type": "text", "name": "amount", "text": "USD 49.99"},
],
}
],
)
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)
}
ref := "A1B2C3D4"
amount := "USD 49.99"
refName := "ref"
amountName := "amount"
components := []bird.WhatsAppMessageTemplateComponent{{
Type: "body",
Parameters: &[]bird.WhatsAppMessageTemplateComponentParameter{
{Type: "text", Name: &refName, Text: &ref},
{Type: "text", Name: &amountName, Text: &amount},
},
}}
msg, err := client.Whatsapp.Send(context.Background(), bird.WhatsappSendParams{
To: "+16505551234",
Template: "bird_order_confirmation",
Language: "en",
Components: components,
})
if err != nil {
log.Fatal(err)
}
fmt.Println(msg.Id, *msg.Status)
}$components = [
(new WhatsAppMessageTemplateComponent())
->setType('body')
->setParameters([
(new WhatsAppMessageTemplateComponentParameter())->setType('text')->setName('ref')->setText('A1B2C3D4'),
(new WhatsAppMessageTemplateComponentParameter())->setType('text')->setName('amount')->setText('USD 49.99'),
]),
];
$message = $bird->whatsapp->send(
to: '+16505551234',
template: 'bird_order_confirmation',
language: 'en',
components: $components,
);
echo $message->getId(), ' ', $message->getStatus();bird whatsapp send \
--components '[{"parameters":[{"name":"ref","text":"A1B2C3D4","type":"text"},{"name":"amount","text":"USD 49.99","type":"text"}],"type":"body"}]' \
--language en \
--template bird_order_confirmation \
--to +16505551234curl -X POST "https://us1.platform.bird.com/v1/whatsapp/messages" \
-H "Authorization: Bearer $BIRD_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"to": "+16505551234",
"template": {
"slug": "bird_order_confirmation",
"language": "en",
"components": [
{
"type": "body",
"parameters": [
{
"type": "text",
"name": "ref",
"text": "A1B2C3D4"
},
{
"type": "text",
"name": "amount",
"text": "USD 49.99"
}
]
}
]
}
}'किसी भी मैनेज्ड टेम्पलेट की तरह, from न दें। Bird श्रेणी और क्षेत्र के आधार पर भेजने वाला नंबर चुनता है, और इसे सेट करने पर 422 E15018 WhatsAppSenderNotAllowed लौटता है। अपना यूटिलिटी टेम्पलेट बनाना और भेजना किसी भी दूसरे स्व-निर्मित टेम्पलेट को भेजने जैसा ही है। सामान्य नियमों के लिए टेम्पलेट के साथ भेजना देखें।
वेरिएबल भरना
यूटिलिटी पैरामीटर नाम वाले होते हैं, जबकि ऑथेंटिकेशन में एक ही स्थान-आधारित कोड होता है। हर पैरामीटर में एक name होता है, और ऐरे में नाम वाले पैरामीटर के क्रम का कोई अर्थ नहीं होता। जिस ब्लॉक में सच में कोई प्लेसहोल्डर है, उसी के लिए एक components एंट्री भेजें। जिस बॉडी में कोई वेरिएबल नहीं है, उसके लिए कोई components एंट्री नहीं भेजी जाती।
URL बटन इसका एकमात्र अपवाद है: उसका वेरिएबल हमेशा स्थान-आधारित {{1}} होता है, और भेजते समय पूरा पता नहीं, केवल मान भेजा जाता है:
{ "type": "button", "parameters": [{ "type": "text", "text": "A-4192" }] }कंपोनेंट, sub_type और भेजे गए components टेम्पलेट में घोषित प्लेसहोल्डर से कैसे मेल खाते हैं, इन साझा नियमों के लिए टेम्पलेट के साथ भेजना और कंपोनेंट और पैरामीटर देखें।
लागत
खुली ग्राहक सेवा विंडो के भीतर डिलीवर हुआ यूटिलिटी टेम्पलेट 30 सितंबर 2026 तक Meta की मुफ़्त दर के योग्य है। 1 अक्टूबर 2026 से Meta इसके लिए किसी भी अन्य यूटिलिटी टेम्पलेट की तरह शुल्क लेता है (अक्टूबर 2026 के मूल्य परिवर्तन)। Bird का आउटबाउंड शुल्क संदेश प्रोसेसिंग के दौरान, सबमिशन से पहले लिया जाता है। बाद में आने वाला delivered या read कॉलबैक तय करता है कि Meta का शुल्क लगेगा या नहीं। कुल लागत का अनुमान लगाते समय दोनों हिस्सों की जाँच करें।
संदेश भेजने पर शुल्क कब लगता है, यह जानने के लिए लागत और बिलिंग देखें, और दरों के लिए WhatsApp मूल्य देखें।
ध्यान रखने योग्य बातें
- Meta अपनी ओर से किसी यूटिलिटी टेम्पलेट को मार्केटिंग श्रेणी में बदल सकता है, और संदेश नई, ऊँची कीमत पर भेजे जाते रहते हैं। अप्रैल 2025 से, जिस व्यवसाय को Meta गलत श्रेणी के लिए पहले चेतावनी दे चुका है, उसे कोई अग्रिम सूचना नहीं मिलती और बदलाव तुरंत लागू होता है। यूटिलिटी टेम्पलेट के टेक्स्ट में प्रचार की भाषा, ऑफ़र या अपसेल न रखें, क्योंकि इन्हीं से श्रेणी बदलती है। कौन सी भाषा प्रचार मानी जाती है, यह जानने के लिए टेम्पलेट दिशानिर्देश देखें।
- मार्केटिंग के बाहर
gifहेडर याcopy_codeबटन अस्वीकार किया जाता है। दोनों केवल मार्केटिंग के कंपोनेंट हैं। यूटिलिटी टेम्पलेट पर इनमें से किसी को भी घोषित करने पर प्रक्रिया विफल होती है। - अपने बनाए टेम्पलेट से भेजने पर शुल्क लेने से पहले पैरामीटर की संख्या जाँची नहीं जाती। अपने टेम्पलेट पर गलत संख्या में पैरामीटर भेजने पर संदेश स्वीकार होता है और शुल्क लगता है, फिर Meta उसे अस्वीकार कर देता है। मैनेज्ड कैटलॉग से भेजने में यह कमी नहीं है।
- गलत WhatsApp Business Account पर मौजूद सेंडर किसी भी शुल्क से पहले अस्वीकार किया जाता है।
fromउसी खाते पर होना चाहिए जिस पर टेम्पलेट है। नहीं तो भेजना422E15023WhatsAppSenderWABAMismatchके साथ विफल होता है।
अगले कदम
- WhatsApp टेम्पलेट: कैटलॉग ब्राउज़ करना और टेम्पलेट से भेजने का साझा अनुबंध
- ऑथेंटिकेशन टेम्पलेट: वन-टाइम सत्यापन कोड और अपना टेम्पलेट बनाने पर लागू सत्यापन की शर्त
- मार्केटिंग टेम्पलेट: प्रचार संदेश भेजना और अपना टेम्पलेट बनाने के लिए ज़रूरी खाता
संबंधित संसाधन
इस विषय के लिए दस्तावेज़, गाइड और उदाहरणों के साथ आगे बढ़ें।