Node.js मधून WhatsApp मेसेज पाठवा आणि घ्या
मेसेज घेण्यासाठी Meta च्या पडताळणी GET ला प्रतिसाद देणारा आणि POST स्वीकारणारा रूट असतो. मेसेज पाठवण्यासाठी नंबरच्या phone number id आणि टोकनसह Cloud API ला fetch कॉल केला जातो. आमचे SDK नाही आणि काहीही इंस्टॉल करण्याची गरज नाही.
Meta च्या पडताळणीसाठी एक GET आणि इव्हेंटसाठी एक POST.
ग्राहकाच्या मेसेजनंतर मोकळा मजकूर पाठवता येणारी कालमर्यादा.
त्या कालमर्यादेबाहेर मोकळा मजकूर पाठवल्यावर मिळणारी त्रुटी.
Node मध्ये मेसेज कसे घ्याल?
Express, Fastify, Next route handler किंवा साध्या सर्व्हरमध्ये दोन पद्धती असलेला एक रूट ठेवा.
GET मधून Meta ची पडताळणी हाताळा: क्वेरीमधून hub.mode, hub.verify_token आणि hub.challenge वाचा, टोकनची तुमच्या टोकनशी तुलना करा आणि challenge साध्या मजकूराच्या रूपात परत पाठवा. तो JSON म्हणून परत पाठवणे ही नेहमीची चूक आहे. त्यामुळे योग्य दिसणारा एंडपॉइंट प्रत्यक्षात कधीही काही स्वीकारत नाही.
POST मधून इव्हेंट स्वीकारा. लगेच 200 प्रतिसाद द्या आणि त्यानंतर प्रक्रिया करा. उशीर झाल्यास Meta पुन्हा विनंती करते. प्रतिसाद देण्यापूर्वी काम करणाऱ्या handler ला तोच मेसेज एकापेक्षा जास्त वेळा दिसतो. विशेषतः serverless मध्ये आधी प्रतिसाद देऊन काम रांगेत पाठवल्याने cold start मुळे डुप्लिकेट तयार होत नाहीत.
मेसेज कसे पाठवाल?
phone number id साठी Cloud API वरील messages endpoint ला टोकन bearer header म्हणून देऊन fetch कॉल करा.
यातील काहीही आमच्यापुरते विशिष्ट नाही. त्यामुळे विनंती Meta च्या स्वतःच्या दस्तऐवजाशी अगदी जुळते आणि शिकण्यासाठी किंवा त्यात अडकून राहण्यासाठी कोणताही wrapper नाही. दोन्ही मूल्ये डॅशबोर्डमध्ये आहेत. असिस्टंट wiring करत असल्यास MCP connector मधून get_api_credentials ही मूल्ये परत करते.
बॉडी वेळेनुसार बदलते. ग्राहकाच्या शेवटच्या आलेल्या मेसेजनंतर 24 तासांच्या आत text object पाठवा. त्यानंतर मान्य केलेल्या टेम्प्लेटचे नाव आणि भाषा असलेला template object पाठवा. फक्त मजकूर पाठवणारा कोड प्रत्येक चाचणी पास करतो, पण रात्री आलेल्या पहिल्याच मेसेजवर अपयशी ठरतो.
serverless मध्ये काय वेगळे असते?
दोन गोष्टी, आणि दोन्ही काम पूर्ण होण्यापूर्वी function संपण्याशी संबंधित आहेत.
200 परत पाठवल्यानंतर प्रक्रिया सुरू ठेवणे, प्रतिसाद मिळताच गोठणाऱ्या function मध्ये टिकत नाही. प्रतिसादानंतरही काम सुरू ठेवण्यासाठी तुमचे प्लॅटफॉर्म जे देते ते वापरा, किंवा पेलोड queue मध्ये पाठवून स्वतंत्र function कडून त्याची प्रक्रिया करून घ्या. Meta ला फक्त जलद स्वीकृती हवी असते, काम पूर्ण झालेले असणे आवश्यक नसते.
Cold start मुळे प्रतिसाद आणखी उशिरा येऊ शकतो. त्यामुळे पुन्हा विनंत्या आणि डुप्लिकेट वाढतात. wamid message id वर डुप्लिकेट हटवणे पर्यायी नाही. या रचनेत विश्वासार्हता टिकवणारी हीच गोष्ट आहे.
सामान्य चुका
- challenge कच्च्या body ऐवजी JSON म्हणून परत पाठवणे.
- 200 प्रतिसाद देण्यापूर्वी काम करणे. Serverless मध्ये प्रतिसाद मिळताच function गोठू शकते.
- डुप्लिकेट हटवणे टाळणे. Meta नियमानुसार पुन्हा विनंती करते आणि डुप्लिकेट सामान्य आहेत, अपवाद नाहीत.
easycoexistence.com वर नंबर कनेक्ट करा, webhook destination तुमच्या रूटवर सेट करा आणि डॅशबोर्डमधून phone number id व टोकन घ्या. US$ 9 प्रति नंबर दरमहा, मोठ्या प्रमाणावर US$ 2 पर्यंत कमी, आणि पहिले 7 दिवस मोफत.
वारंवार विचारले जाणारे प्रश्न
मला लायब्ररीची गरज आहे का?
नाही. एक रूट आणि fetch पुरेसे आहेत, आणि कॉल Meta च्या दस्तऐवजाशी अगदी जुळतो.
हे Vercel किंवा Lambda वर चालते का?
होय. नेहमीची serverless अट लागू आहे: आधी स्वीकृती द्या, मग queue किंवा background mechanism मधून प्रक्रिया करा, inline नाही.
विनंती Meta कडून आली हे कसे पडताळाल?
तुमच्या app secret विरुद्ध signature header तपासा. एंडपॉइंट सार्वजनिक होताच हे करणे योग्य आहे.
मी TypeScript वापरू शकतो का?
होय. आमच्याकडून टाइप करण्यासारखे काही नाही, कारण पेलोड Meta चे आहे आणि त्याचे दस्तऐवजीकरणही Meta ने केले आहे.
पुढे वाचा
सुरुवात करण्यासाठी तयार आहात?
WhatsApp Coexistence काही मिनिटांत सेट करा, काही महिन्यांत नाही. ॲप फोनवर काम करत राहते.
मोफत ट्रायल सुरू करापडताळले: