Python से WhatsApp मैसेज भेजें और पाएँ
पाना आपके वेब फ़्रेमवर्क का एक रूट है, जो Meta के पुष्टि GET का जवाब देता है और POST स्वीकार करता है। भेजना Cloud API को HTTPS अनुरोध है, जिसमें नंबर का phone number id और टोकन होता है। हमारा कोई SDK नहीं और कुछ इंस्टॉल करने की ज़रूरत नहीं।
Meta की पुष्टि के लिए GET और इवेंट के लिए POST। यही पाने वाला हिस्सा है।
ग्राहक के मैसेज के बाद की वह अवधि जिसमें मुक्त टेक्स्ट भेजा जा सकता है।
इस अवधि के बाहर मुक्त टेक्स्ट भेजने पर लौटने वाली गड़बड़ी।
Python में मैसेज कैसे पाते हैं?
एक ही रूट पर दो हैंडलर लगाकर, उस फ़्रेमवर्क में जिसे आप पहले से इस्तेमाल करते हैं।
GET हैंडलर Meta की पुष्टि का जवाब देता है। यह क्वेरी स्ट्रिंग से hub.mode, hub.verify_token और hub.challenge पढ़ता है, टोकन को आपके अपने टोकन से मिलाता है और challenge को कच्ची बॉडी के रूप में लौटाता है। यहाँ JSON लौटाना सबसे आम गलती है और यह चुपचाप विफल हो जाती है।
POST हैंडलर इवेंट पाता है। जल्दी 200 लौटाएँ और काम उसके बाद करें, क्योंकि Meta धीमे जवाब को विफलता मानकर फिर से भेजेगा। इससे वही मैसेज दो बार संभाला जा सकता है। इसे कतार में डालें या बैकग्राउंड टास्क को सौंपें, सीधे उसी अनुरोध में प्रोसेस न करें।
मैसेज wamid मैसेज id के साथ आते हैं। शुरुआत से ही इसी पर डुप्लिकेट हटाना उपयोगी है, क्योंकि रीट्राय सामान्य हैं, अपवाद नहीं।
मैसेज कैसे भेजते हैं?
phone number id के लिए Cloud API के messages एंडपॉइंट पर bearer टोकन के साथ एक POST करें।
दोनों मान कनेक्शन से मिलते हैं: डैशबोर्ड उन्हें दिखाता है और यदि आप किसी सहायक से उन्हें लाना चाहें तो get_api_credentials उन्हें लौटाता है। इस कॉल में हमारे लिए कुछ विशेष नहीं है, इसलिए कोई भी HTTP लाइब्रेरी काम करती है और अनुरोध Meta के अपने दस्तावेज़ जैसा ही दिखता है।
समय के अनुसार बॉडी बदलती है। ग्राहक के आख़िरी मैसेज के 24 घंटे के भीतर text ऑब्जेक्ट भेजें। इसके बाहर स्वीकृत टेम्पलेट और उसकी भाषा बताने वाला template ऑब्जेक्ट भेजें। जो क्लाइंट केवल पहला आकार जानता है, वह परीक्षण में ठीक चलता है, लेकिन पहली रात के बाद आए मैसेज पर विफल होकर गड़बड़ी 131047 लौटाता है।
इसके अलावा प्रोडक्शन हैंडलर को क्या चाहिए?
तीन चीज़ें जिन्हें छोड़ना आसान है, लेकिन बाद में जोड़ना महँगा पड़ता है।
मैसेज id पर डुप्लिकेट हटाएँ, क्योंकि Meta रीट्राय करता है। यदि आपका सिस्टम सार्वजनिक रूप से उपलब्ध है तो अनुरोध सिग्नेचर की पुष्टि करें, वरना आपका यूआरएल जानने वाला कोई भी व्यक्ति उस पर POST कर सकता है। और देखें कि संपर्क ने आख़िरी बार कितनी देर पहले लिखा था, ताकि भेजने का रास्ता बिना किसी व्यक्ति के तय किए text या template चुने।
इनमें से किसी के लिए फ़्रेमवर्क या लाइब्रेरी की ज़रूरत नहीं है। ये एक सेट, एक जाँच और एक तुलना हैं। पहले क्लाइंट से पहले इन्हें लगा देना शांतिपूर्वक चलने वाले एकीकरण और हर बार आपको सतर्क करने वाले एकीकरण के बीच का अंतर है।
आम गड़बड़ियाँ
- कच्चे challenge मान के बजाय पुष्टि GET से JSON लौटाना।
- 200 लौटाने से पहले सीधे प्रोसेस करना। Meta धीमे जवाबों पर रीट्राय करता है और आप मैसेज दो बार संभालते हैं।
- अवधि जाँचे बिना मुक्त टेक्स्ट भेजना। इससे 131047 लौटता है और लगता है कि कुछ हुआ ही नहीं।
easycoexistence.com पर नंबर कनेक्ट करें, वेबहुक डेस्टिनेशन अपने रूट पर सेट करें और डैशबोर्ड से phone number id और टोकन पढ़ें। US$ 9 प्रति नंबर प्रति माह से, ज़्यादा संख्या पर US$ 2 तक, पहले 7 दिन मुफ़्त।
अक्सर पूछे जाने वाले सवाल
क्या Python SDK है?
हमारी ओर से नहीं और आपको इसकी ज़रूरत भी नहीं। एपीआई Meta का है, दस्तावेज़ Meta ने दिए हैं और किसी भी HTTP लाइब्रेरी से पहुँचा जा सकता है।
कौन-सा फ़्रेमवर्क इस्तेमाल करूँ?
कोई भी। ज़रूरत ऐसे रूट की है जो GET का जवाब दे और POST स्वीकार करे, जो हर Python वेब फ़्रेमवर्क करता है।
मैसेज दो बार संभालने से कैसे बचूँ?
पेलोड में wamid मैसेज id पर डुप्लिकेट हटाएँ। Meta डिज़ाइन के अनुसार रीट्राय करता है, इसलिए यह अपेक्षित स्थिति है, कोई दुर्लभ मामला नहीं।
क्या टीम अब भी फ़ोन इस्तेमाल कर सकती है?
हाँ। Coexistence उसी नंबर पर WhatsApp Business ऐप को काम करने देता है और आपका हैंडलर टीम द्वारा भेजे गए मैसेज को echo इवेंट के रूप में देखता है।
पढ़ना जारी रखें
शुरू करने के लिए तैयार हैं?
WhatsApp Coexistence को महीनों में नहीं, मिनटों में कॉन्फ़िगर करें। ऐप्लिकेशन मोबाइल पर काम करता रहता है।
मुफ़्त ट्रायल शुरू करेंइस तारीख को सत्यापित