WhatsApp वेबहुक एंडपॉइंटची पडताळणी
कोणताही इव्हेंट पाठवण्यापूर्वी Meta GET द्वारे hub.mode, hub.verify_token आणि hub.challenge घेऊन तुमच्या एंडपॉइंटला विनंती करते. तुमच्या एंडपॉइंटने टोकनची तुलना करून चॅलेंज raw body म्हणून परत करणे आवश्यक आहे. याशिवाय डिलिव्हरी सुरू होत नाही.
प्रतिसादाच्या body मध्ये परत करायची मूल्य.
पडताळणीच्या विनंतीतील hub.mode चे मूल्य.
Meta पडताळणारी एकमेव योजना. कॉल होण्यापूर्वी HTTP नाकारले जाते.
Meta नेमके काय पाठवते?
तुमच्या यूआरएलवर तीन query parameters असलेली GET विनंती येते. hub.mode ची किंमत subscribe असते. destination सेट करताना तुम्ही कॉन्फिगर केलेले टोकन hub.verify_token मध्ये असते. या प्रयत्नासाठी Meta तयार केलेली मूल्य hub.challenge मध्ये असते.
तुम्ही निवडलेल्या टोकनशी hub.verify_token ची तुलना करा. ते जुळल्यास 200 प्रतिसादासह hub.challenge संपूर्ण response body म्हणून परत करा. ते JSON मध्ये गुंडाळू नका, त्याभोवती अवतरणचिन्हे लावू नका आणि काही फ्रेमवर्क डीफॉल्टने जोडतात ती शेवटची नवीन ओळही देऊ नका.
टोकन जुळत नसल्यास 403 प्रतिसाद द्या. हाच संपूर्ण प्रोटोकॉल आहे आणि तो मुद्दाम लहान ठेवला आहे.
चुकीचे उत्तर शांतपणे का अपयशी ठरते?
कारण पडताळणी अयशस्वी होणे ही तुमच्या प्रणालीतील त्रुटी नसून Meta च्या प्रणालीतील अनुपस्थिती आहे.
चॅलेंज योग्यरीत्या परत न आल्यास Meta त्या destination वर डिलिव्हरी सुरूच करत नाही. तुमचा सर्व्हर पडताळणीला 200 प्रतिसाद देतो, लॉगमध्ये विनंती आल्याचे दिसते आणि कोणताही डॅशबोर्ड समस्या दाखवत नाही. एकमेव लक्षण म्हणजे मेसेज येत नाहीत. त्यामुळे बहुतेक जण याचे निदान handshake समस्येऐवजी Coexistence समस्या म्हणून करतात.
म्हणून कॉल करण्यापूर्वी पडताळणी करणे महत्त्वाचे आहे. Graph विनंती करण्याआधी यूआरएल HTTPS आहे आणि verify token दिले आहे याची आम्ही तपासणी करतो. त्यामुळे चुकीचे destination कनेक्टेड दिसण्याऐवजी लगेच अपयशी ठरते.
पडताळणी आणखी कशामुळे अडू शकते?
कोडशी संबंध नसलेल्या तीन गोष्टी.
एंडपॉइंटसमोर authentication असणे. gateway, basic auth layer किंवा IP allowlist Meta ची विनंती नाकारतील, कारण Meta कडे सादर करण्यासाठी credentials नाहीत. पडताळणीचा मार्ग त्यांच्याशिवाय पोहोचण्याजोगा असला पाहिजे.
redirect. Meta तुम्ही दिलेल्या यूआरएलवर कॉल करते आणि canonical host कडे जाणारे 301 handshake पूर्ण होईल अशा प्रकारे follow होत नाही. तिला अंतिम यूआरएल द्या.
तसेच, response serialise करणारे framework. प्रत्येक गोष्ट JSON मध्ये गुंडाळणाऱ्या handler मधून string परत केल्यास body मध्ये challenge भोवती अवतरणचिन्हे येतात आणि ते जुळत नाही.
सामान्य चुका
- JSON परत करणे. Body मध्ये फक्त raw challenge value असली पाहिजे.
- एंडपॉइंट authentication मागे ठेवणे. Meta कडे credentials नसल्याने विनंती नाकारली जाईल.
- Meta ला redirect होणारी यूआरएल देणे. अंतिम यूआरएल वापरा.
Meta ला कॉल करण्यापूर्वी EasyCoexistence destination HTTPS आहे आणि verify token आहे याची पडताळणी करते. अयशस्वी handshake कनेक्शनच्या timeline मध्ये नोंदवला जातो.
वारंवार विचारले जाणारे प्रश्न
मी कोणते टोकन वापरावे?
तुम्ही निवडलेली कोणतीही अक्षरमालिका. यूआरएल माहीत असलेल्या इतर कोणाच्याही विनंतीपासून Meta ची विनंती ओळखता यावी म्हणून ते असते.
पडताळणी किती वेळा होते?
सेटअपच्या वेळी आणि destination सेट केल्यावर पुन्हा. कार्यरत एंडपॉइंट प्रत्येक इव्हेंटवर पुन्हा पडताळला जात नाही.
मी स्वतः त्याची चाचणी करू शकतो का?
हो. तीन parameters सह तुमच्या एंडपॉइंटला कॉल करा आणि body अगदी challenge value प्रमाणे परत येते का ते तपासा.
पडताळणीच्या वेळी माझा सर्व्हर बंद असेल तर?
handshake अयशस्वी होतो आणि destination सक्रिय होत नाही. ते पुन्हा सेव्ह केल्यावर पडताळणी पुन्हा चालते.
पुढे वाचा
सुरुवात करण्यासाठी तयार आहात?
WhatsApp Coexistence काही मिनिटांत सेट करा, काही महिन्यांत नाही. ॲप फोनवर काम करत राहते.
मोफत ट्रायल सुरू करापडताळले: