WhatsApp ग्रुप को भेजना
ग्रुप को भेजा गया संदेश एक सामान्य POST /v1/whatsapp/messages है, जिसका to किसी व्यक्ति के बजाय एक ग्रुप को बताता है: एक अनुरोध, एक संदेश, और उस ग्रुप चैट का हर प्रतिभागी उसे प्राप्त करता है और ऐसी जगह जवाब दे सकता है जहाँ बाकी सभी उसे देखते हैं। बदलाव केवल रिपोर्टिंग में होता है। संदेश में काउंटर होते हैं, जो बताते हैं कि वह कितने प्रतिभागियों तक पहुँचा, और डिलीवरी की पुष्टि एक-एक प्रतिभागी के लिए अलग से होती है।
ग्रुप बनाना और उसका प्रबंधन करना, उसे संदेश भेजने से अलग काम है। WhatsApp ग्रुप का प्रबंधन में API के ज़रिए ग्रुप बनाने और उसका इनवाइट लिंक बाँटने के बारे में बताया गया है, और WhatsApp ग्रुप में बताया गया है कि ग्रुप किस काम आता है और WhatsApp उस पर कौन-सी सीमाएँ लगाता है।
पूर्व आवश्यकताएँ
आपको WhatsApp लिखने की अनुमति वाली एक API कुंजी और किसी Active ग्रुप की ID (wag_…) चाहिए। इसे Groups पेज पर ग्रुप के Details टैब से कॉपी करें, ग्रुप के ज़रिए आए किसी संदेश के to.group_id से पढ़ें, या अपने ग्रुप की सूची देखें।
उदाहरण वाली ग्रुप ID की जगह अपनी ID डालें। अपनी भाषा के लिए क्लाइंट को TypeScript, Python, Go या PHP SDK गाइड की मदद से इनिशियलाइज़ करें। CLI उदाहरणों के लिए, WhatsApp लिखने की अनुमति के साथ CLI इंस्टॉल और प्रमाणित करें। cURL अनुरोधों में अपने वर्कस्पेस क्षेत्र का API होस्ट इस्तेमाल करें।
1. संदेश भेजें
ग्रुप ID को to में डालें और from को छोड़ दें। ग्रुप उसी बिज़नेस नंबर तक सीमित होता है जिससे उसे बनाया गया था, इसलिए संदेश केवल उसी नंबर से भेजा जा सकता है; भेजने वाले का नाम देने पर 422 E15018 मिलता है।
const msg = await bird.whatsapp.send({
to: "wag_01krdgeqcxet5s7t44vh8rt9mg",
text: { body: "The route sheet for Tuesday is up." },
});
console.log(msg.id, msg.status);msg = client.whatsapp.send(
to="wag_01krdgeqcxet5s7t44vh8rt9mg",
text={"body": "The route sheet for Tuesday is up."},
)
print(msg.id, msg.status)msg, err := client.Whatsapp.Send(context.Background(), bird.WhatsappSendParams{
To: "wag_01krdgeqcxet5s7t44vh8rt9mg",
Text: &bird.WhatsAppTextSend{Body: "The route sheet for Tuesday is up."},
})
if err != nil {
log.Fatal(err)
}
fmt.Println(msg.Id, *msg.Status)$text = (new WhatsAppMessageSendRequestText())
->setBody("The route sheet for Tuesday is up.");
$message = $bird->whatsapp->send(
to: 'wag_01krdgeqcxet5s7t44vh8rt9mg',
text: $text,
);
echo $message->getId(), ' ', $message->getStatus();bird whatsapp send \
--text 'The route sheet for Tuesday is up.' \
--to wag_01krdgeqcxet5s7t44vh8rt9mgcurl -X POST "https://us1.platform.bird.com/v1/whatsapp/messages" \
-H "Authorization: Bearer $BIRD_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"to": "wag_01krdgeqcxet5s7t44vh8rt9mg",
"text": { "body": "The route sheet for Tuesday is up." }
}'API जवाब में 202 लौटाता है, जिसमें to.group_id पर ग्रुप दोहराया जाता है, साथ में status: accepted और recipient_count होते हैं: यानी भेजने का अनुरोध स्वीकार होने के समय ग्रुप में कितने लोग थे। यही संख्या चरण 3 की हर गिनती का आधार है, और यह उसी क्षण तय हो जाती है। अगर संदेश के रास्ते में रहते हुए कोई इनवाइट लिंक से ग्रुप में जुड़ता है, तो उसे यह संदेश नहीं मिलता और गिनती भी नहीं बदलती।
2. ग्रुप में क्या भेजा जा सकता है
किसी समूह को टेक्स्ट, इमेज, वीडियो, ऑडियो, स्टिकर, दस्तावेज़, लोकेशन, संपर्क कार्ड और आपके वर्कस्पेस द्वारा बनाया गया टेम्पलेट भेजा जा सकता है, टेम्पलेट ऑथेंटिकेशन को छोड़कर किसी भी श्रेणी का हो सकता है। दो तरह की सामग्री को मैसेज बनने या शुल्क लगने से पहले ही 422 E15052 के साथ अस्वीकार कर दिया जाता है, क्योंकि WhatsApp इनमें से किसी को भी ग्रुप चैट में डिलीवर नहीं करता:
- कोई भी इंटरैक्टिव सामग्री: रिप्लाई बटन, लिस्ट मेन्यू, लिंक बटन, कैरोसेल, और लोकेशन व संपर्क-जानकारी के अनुरोध।
- ऑथेंटिकेशन टेम्पलेट। इसके बजाय सत्यापन कोड सीधे उस प्रतिभागी को भेजें।
Bird-प्रबंधित टेम्पलेट Bird के स्वामित्व वाले नंबर से भेजा जाता है, और यह नंबर कभी वह नंबर नहीं होता जिससे समूह जुड़ा है। इसलिए ऐसा टेम्पलेट किसी समूह को भेजने पर 422 E15001 मिलता है।
फ़्री-फ़ॉर्म सामग्री के लिए अब भी खुली ग्राहक सेवा विंडो ज़रूरी है, और समूह की अपनी अलग विंडो होती है। कोई भी प्रतिभागी समूह में मैसेज भेजता है तो पूरे समूह के लिए एक 24-घंटे की विंडो खुलती है। वही व्यक्ति समूह के बाहर आपको मैसेज भेजे तो यह विंडो नहीं खुलती। विंडो बंद होने के बाद समूह तक केवल टेम्पलेट पहुँचता है।
3. फ़ैन-आउट पर नज़र रखें
मैसेज कितनी दूर तक पहुँचा है, यह देखने के लिए मैसेज प्राप्त करें। तीन काउंटर फ़ैन-आउट की जानकारी देते हैं:
| फ़ील्ड | यह क्या बताता है |
|---|---|
recipient_count | स्वीकार किए जाने के समय प्रतिभागियों की संख्या, जो बाकी दोनों काउंटर का हर (denominator) है |
delivered_count | कितने प्रतिभागियों तक संदेश पहुँचने की पुष्टि WhatsApp ने की है, जिनमें वे भी शामिल हैं जिन्होंने केवल पढ़े जाने की सूचना दी |
read_count | कितने प्रतिभागियों ने इसे खोला है |
ग्रुप संदेश पर status वह सबसे आगे का चरण बताता है जहाँ तक हर प्राप्तकर्ता पहुँच चुका है: यह delivered तभी होता है जब delivered_count, recipient_count के बराबर हो जाए, और जब तक कुछ ने पुष्टि की हो और कुछ ने नहीं, तब तक sent रहता है। किसी भी WhatsApp संदेश की read स्थिति नहीं होती, इसलिए पढ़े जाने की जानकारी read_count और read_at से मिलती है। delivered_at और read_at पहले प्राप्तकर्ता के होते हैं, अंतिम के नहीं। failed और rejected कभी प्रति प्रतिभागी नहीं होते, क्योंकि WhatsApp को संदेश एक ही बार सौंपा जाता है और उसे अस्वीकार किए जाने का भी एक ही तरीका है।
ऐसे ग्रुप को भेजे गए संदेश में कोई काउंटर नहीं होता जिसमें अभी तक कोई शामिल नहीं हुआ, क्योंकि बताने के लिए कोई हर (denominator) नहीं होता। इसलिए ग्रुप संदेश को एक-से-एक संदेश से अलग पहचानने के लिए काउंटर के बजाय to.group_id देखें।
कोई पुष्टि किस प्रतिभागी के बारे में है, यह जानने के लिए संदेश के इवेंट की सूची देखें। ग्रुप को भेजा गया संदेश हर प्रतिभागी के लिए अधिकतम एक whatsapp.delivered और अधिकतम एक whatsapp.read इवेंट बनाता है। हर इवेंट में recipient होता है, जिसमें उस व्यक्ति का फ़ोन नंबर, उसकी बिज़नेस-स्कोप्ड यूज़र ID, या दोनों होते हैं। किसी के लिए भी इनमें से किसी इवेंट की गारंटी नहीं है: जो प्रतिभागी पहले से चैट देख रहा है, उसके लिए WhatsApp डिलीवरी रसीद नहीं भेजता, और पढ़े जाने का इवेंट तभी आता है जब वह संदेश खोले। हर प्रतिभागी के लिए दोनों इवेंट का इंतज़ार करने के बजाय जो इवेंट आएँ उन्हें गिनें, और कुल संख्या के लिए काउंटर पढ़ें। एकमात्र whatsapp.sent इवेंट में recipient नहीं होता: यह WhatsApp को संदेश सौंपे जाने का एकमात्र इवेंट है, जिसमें किसी व्यक्ति का नाम नहीं होता। whatsapp.delivered और whatsapp.read वेबहुक में भी यही फ़ील्ड होता है, और इसी से आप बाकी हर तरह से एक जैसे कॉलबैक को अलग पहचानते हैं।
4. किसी एक ग्रुप की बातचीत पढ़ें
किसी एक ग्रुप का थ्रेड दोनों दिशाओं में पाने के लिए संदेशों की सूची में group_id पास करें:
for await (const msg of bird.whatsapp.list({ group_id: "wag_01krdgeqcxet5s7t44vh8rt9mg" })) {
console.log(msg.id, msg.direction, msg.status);
}for msg in client.whatsapp.list(group_id="wag_01krdgeqcxet5s7t44vh8rt9mg"):
print(msg.id, msg.direction, msg.status)for msg, err := range client.Whatsapp.List(context.Background(), bird.WhatsappListParams{
GroupID: "wag_01krdgeqcxet5s7t44vh8rt9mg",
}) {
if err != nil {
log.Fatal(err)
}
fmt.Println(msg.Id, *msg.Direction, *msg.Status)
}foreach ($bird->whatsapp->list(['group_id' => 'wag_01krdgeqcxet5s7t44vh8rt9mg']) as $message) {
echo $message->getId(), ' ', $message->getDirection(), "\n";
}bird whatsapp list --group-id wag_01krdgeqcxet5s7t44vh8rt9mgcurl "https://us1.platform.bird.com/v1/whatsapp/messages?group_id=wag_01krdgeqcxet5s7t44vh8rt9mg" \
-H "Authorization: Bearer $BIRD_API_KEY"ग्रुप से आया संदेश पढ़ने पर from में वह प्रतिभागी दिखता है जिसने उसे लिखा, और to में आपका बिज़नेस नंबर और group_id दोनों होते हैं: यानी वह नंबर जिस पर संदेश आया, साथ में वह ग्रुप जिसके ज़रिए वह आया। न तो to और न ही from किसी ग्रुप से मेल खाता है, इसलिए सूची को एक ग्रुप तक सीमित करने वाला एकमात्र फ़िल्टर group_id है। यही संदेश डैशबोर्ड के WhatsApp लॉग में भी दिखते हैं।
लागत
ग्रुप को भेजे गए संदेश का शुल्क उन्हीं दो हिस्सों में लगता है जिनका वर्णन WhatsApp संदेश भेजना में है, पर हर हिस्से की कीमत तय करने में एक अंतर है। Bird का शुल्क हर भेजे गए संदेश पर एक बार लगता है और उसकी कीमत उस बिज़नेस नंबर के देश के आधार पर तय होती है जिससे संदेश भेजा गया, क्योंकि एक ग्रुप में कई देशों के लोग हो सकते हैं और उसका कोई एक प्राप्तकर्ता देश नहीं होता। Meta का हिस्सा हर उस प्रतिभागी के लिए जुड़ता है जिस तक संदेश पहुँचा, और हर प्रतिभागी की कीमत उसके अपने देश की सामान्य एक-से-एक दर पर लगती है, इसलिए रसीदें आने के साथ passthrough_amount बढ़ता है। 1 अक्टूबर 2026 से इस हिस्से में ग्रुप को भेजा गया फ़्री-फ़ॉर्म कंटेंट भी शामिल है, जिसके लिए Meta हर पहुँचे प्रतिभागी के हिसाब से शुल्क लेता है और जो भेजने वाले नंबर के हर महीने के 1,000 मुफ़्त सर्विस संदेशों में से घटाया जाता है: अक्टूबर 2026 के मूल्य परिवर्तन।
समस्या निवारण
404(E15046): यह ग्रुप ID इस वर्कस्पेस के किसी ग्रुप से मेल नहीं खाती। ग्रुप उसी वर्कस्पेस का होता है जिसने उसे बनाया है, इसलिए किसी दूसरे वर्कस्पेस की ID यहाँ नहीं मिलती।409(E15047): ग्रुप लंबित, निलंबित, हटाया गया या विफल है। केवल Active ग्रुप को ही मैसेज भेजा जा सकता है, और ग्रुप तब तक लंबित रहता है जब तक WhatsApp उसकी पुष्टि नहीं करता।422(E15018):fromहटा दें। ग्रुप उसी नंबर से भेजता है जिससे उसे बनाया गया था।422(E15052): इंटरैक्टिव कंटेंट या ऑथेंटिकेशन टेम्पलेट। देखें ग्रुप क्या स्वीकार करता है।422(E15044): ग्रुप की सर्विस विंडो बंद है। टेम्पलेट भेजें, या किसी प्रतिभागी के ग्रुप में लिखने का इंतज़ार करें।statussentपर अटका है:recipient_countसे कम प्रतिभागियों ने डिलीवरी की पुष्टि की है। किसकी पुष्टि बाकी है, यह देखने के लिए मैसेज के इवेंट पढ़ें।
अगले कदम
- WhatsApp ग्रुप मैसेज प्राप्त करना: भेजने वाले की पहचान करें और ग्रुप को जवाब दें
- WhatsApp ग्रुप प्रबंधित करना: प्रतिभागियों, इनवाइट लिंक और जुड़ने के अनुरोधों को प्रबंधित करें
- मैसेज स्टेटस वेबहुक: अपने मैसेज के डिलीवरी अपडेट प्राप्त करें
- बिज़नेस-स्कोप्ड यूज़र ID: ऐसे प्रतिभागी की पहचान करें जिसका फ़ोन नंबर आपके पास नहीं है
संबंधित संसाधन
इस विषय के लिए दस्तावेज़, गाइड और उदाहरणों के साथ आगे बढ़ें।