वेबहुक¶
चेतावनी
वेबहुक का इस्तेमाल करने का निर्णय लेते समय और पूरे इंप्लिमेंटेशन प्रक्रिया के दौरान डेवलपर, सॉल्यूशन आर्किटेक्ट या किसी अन्य टेक्निकल भूमिका से परामर्श करने की अत्यधिक अनुशंसा की जाती है। अगर ठीक से कॉन्फ़िगर नहीं किया गया, तो वेबहुक Odoo डेटाबेस को बाधित कर सकते हैं और उन्हें वापस करने में समय लग सकता है।
Webhooks, जो Odoo स्टूडियो में बनाए जा सकते हैं, आपको अपने Odoo डेटाबेस में एक ऐक्शन को ऑटोमेट करने की अनुमति देते हैं जब किसी अन्य, एक्सटर्नल सिस्टम में कोई विशिष्ट इवेंट होता है।
प्रैक्टिस में, यह इस प्रकार काम करता है: जब एक्सटर्नल सिस्टम में इवेंट होता है, तो एक डेटा फ़ाइल ("payload") को POST एपीआई अनुरोध के ज़रिए Odoo webhook के यूआरएल पर भेजा जाता है, और आपके Odoo डेटाबेस में एक पूर्वनिर्धारित ऐक्शन किया जाता है।
निर्धारित अंतराल पर चलने वाले शेड्यूल्ड ऐक्शन, या मैन्युअल एपीआई अनुरोध, जिन्हें स्पष्ट रूप से इनवोक करने की आवश्यकता होती है, के विपरीत, webhooks रियल-टाइम, इवेंट-ड्रिवन कम्युनिकेशन और ऑटोमेशन को सक्षम बनाते हैं। उदाहरण के लिए, आप एक webhook सेट अप कर सकते हैं ताकि जब किसी एक्सटर्नल पॉइंट-ऑफ़-सेल सिस्टम में सेल्स ऑर्डर कन्फर्म हो जाए तो आपका Odoo इन्वेंट्री डेटा ऑटोमैटिकली अपडेट हो जाए।
Odoo में webhook सेट अप करने के लिए दो Odoo डेटाबेस को कनेक्ट करते समय कोडिंग की आवश्यकता नहीं होती है, लेकिन webhook को टेस्ट करने के लिए एक एक्सटर्नल टूल की आवश्यकता होती है। कस्टम टार्गेट रिकॉर्ड या ऐक्शन के लिए प्रोग्रामिंग स्किल्स की आवश्यकता हो सकती है।
टिप्पणी
यह आर्टिकल एक webhook बनाने को कवर करता है जो एक्सटर्नल सोर्स से डेटा प्राप्त करता है। हालांकि, यह भी संभव है कि एक ऑटोमेटेड ऐक्शन बनाया जाए जो एक्सटर्नल webhook को डेटा भेजता है जब आपके Odoo डेटाबेस में कोई परिवर्तन होता है।
Odoo में webhook बनाएं¶
महत्त्वपूर्ण
लाइव डेटाबेस में webhook को लागू करने से पहले, डुप्लीकेट डेटाबेस का उपयोग करके इसे कॉन्फ़िगर और टेस्ट करें ताकि यह सुनिश्चित हो सके कि webhook इच्छित रूप से काम कर रहा है।
सलाह
वेबहुक बनाने से पहले डेवलपर मोड एक्टिवेट करने से ऑटोमेशन नियम जिस मॉडल को टारगेट करता है उसे चुनने में ज़्यादा लचीलापन मिलता है। यह मॉडल और फ़ील्ड का टेक्निकल नाम खोजने की भी सुविधा देता है, जो पेलोड कॉन्फ़िगर करने के लिए ज़रूरी हो सकता है।
मॉडल का टेक्निकल नाम खोजने के लिए, डेवलपर मोड एक्टिवेट करके, मॉडल नाम पर होवर करें और फिर (इंटरनल लिंक) पर क्लिक करें। टेक्निकल नाम मॉडल फ़ील्ड में मिल सकता है। उदाहरण के लिए, एक सेल्स ऑर्डर वेबहुक सेल्स ऑर्डर मॉडल का इस्तेमाल करता है, लेकिन पेलोड में टेक्निकल नाम sale.order का इस्तेमाल किया जाता है।
Studio में वेबहुक बनाने के लिए, निम्नलिखित तरीके से आगे बढ़ें:
स्टूडियो खोलें और Webhooks पर क्लिक करें, फिर नया पर क्लिक करें।
वेबहुक को एक स्पष्ट, सार्थक नाम दें जो इसके उद्देश्य को पहचानता हो।
यदि ज़रूरत हो, और डेवलपर मोड एक्टिवेट हो, तो ड्रॉपडाउन से उपयुक्त मॉडल चुनें। यदि डेवलपर मोड एक्टिवेट नहीं है, तो ऑटोमेशन नियम डिफ़ॉल्ट रूप से मौजूदा मॉडल को टारगेट करता है।
वेबहुक का यूआरएल ऑटोमैटिकली जनरेट हो जाता है, लेकिन ज़रूरत पड़ने पर Rotate Secret पर क्लिक करके इसे बदला जा सकता है। यह वह यूआरएल है जिसका इस्तेमाल एक्सटर्नल सिस्टम में वेबहुक इंप्लीमेंट करते समय किया जाना चाहिए जो डेटाबेस में अपडेट भेजेगा।
चेतावनी
यूआरएल गोपनीय है और इसे सावधानी से संभालना चाहिए। इसे ऑनलाइन या बिना सावधानी के शेयर करने से Odoo डेटाबेस तक अनपेक्षित एक्सेस मिल सकता है। यदि शुरुआती इंप्लिमेंटेशन के बाद यूआरएल अपडेट किया जाता है, तो सुनिश्चित करें कि इसे एक्सटर्नल सिस्टम में अपडेट कर दिया जाए।
यदि चाहें, तो वेबहुक के यूआरएल पर किए गए एपीआई अनुरोधों के इतिहास को ट्रैक करने के लिए Log Calls को एनेबल करें, जैसे समस्या निवारण के उद्देश्यों के लिए।
यदि वेबहुक भेजने वाला सिस्टम Odoo नहीं है, तो Target Record कोड को एडजस्ट करें ताकि वह पेलोड में शामिल JSON रिकॉर्ड को तलाश सके जब वेबहुक के यूआरएल पर एपीआई अनुरोध किया जाता है। यदि वेबहुक भेजने वाला सिस्टम एक Odoo डेटाबेस है, तो सुनिश्चित करें कि पेलोड में
idऔरmodelदिखाई दें।यदि वेबहुक का इस्तेमाल Odoo डेटाबेस में रिकॉर्ड बनाने के लिए किया जाता है, तो डिफ़ॉल्ट Target Record फ़ॉर्मैट की जगह
model.browse(i)याmodel.search(i)का इस्तेमाल करें।Actions To Do टैब में Add an action पर क्लिक करें ताकि निष्पादित किए जाने वाले एक्शन को परिभाषित किया जा सके।
एक्सटर्नल सिस्टम में वेबहुक इंप्लीमेंट करने से पहले, यह सुनिश्चित करने के लिए इसे टेस्ट करें कि यह उद्देश्य के अनुसार काम करता है।
सलाह
Studio में Automations मेन्यू के ज़रिए भी वेबहुक बनाए जा सकते हैं, ट्रिगर On webhook को चुनकर।
यदि Log Calls एनेबल किया गया है तो एपीआई अनुरोधों के इतिहास तक पहुंचने के लिए, Automation rules फ़ॉर्म के ऊपर Logs स्मार्ट बटन पर क्लिक करें।
यदि वेबहुक का उद्देश्य मौजूदा रिकॉर्ड को अपडेट करने के अलावा कुछ और है, जैसे नया रिकॉर्ड बनाना, तो Execute Code एक्शन को चुना जाना चाहिए।
वेबहुक को टेस्ट करें¶
वेबहुक को टेस्ट करने के लिए एक टेस्ट पेलोड और एक एक्सटर्नल टूल या सिस्टम की ज़रूरत होती है, जैसे Postman, ताकि POST एपीआई अनुरोध के ज़रिए पेलोड भेजा जा सके। यह सेक्शन Postman में वेबहुक को टेस्ट करने के चरणों को प्रस्तुत करता है।
सलाह
टेस्ट पेलोड का इस्तेमाल करके वेबहुक को टेस्ट करने के चरण-दर-चरण स्पष्टीकरण के लिए वेबहुक उपयोग केस सेक्शन देखें।
Postman के साथ वेबहुक को टेस्ट करने में विशिष्ट मदद पाने के लिए, उनकी सपोर्ट टीम से संपर्क करें।
Postman में, एक नया HTTP अनुरोध बनाएं और इसकी मेथड को POST पर सेट करें।
(लिंक) आइकॉन का इस्तेमाल करके अपने Odoo डेटाबेस से webhook का URL कॉपी करें और इसे Postman में URL फ़ील्ड में पेस्ट करें।
Body टैब पर क्लिक करें और raw सेलेक्ट करें।
फ़ाइल टाइप को JSON पर सेट करें, फिर टेस्ट payload से कोड कॉपी करें और इसे कोड एडिटर में पेस्ट करें।
Send पर क्लिक करें।
Postman में स्क्रीन के नीचे Response व्यूअर में, HTTP रिस्पांस कोड सहित विवरण यह दर्शाते हैं कि webhook सही तरीके से काम कर रहा है या नहीं।
200 OKयाstatus: okमैसेज यह दर्शाता है कि webhook Odoo की तरफ से सही तरीके से काम कर रहा है। यहां से, दूसरे सिस्टम के साथ इंप्लिमेंटेशन शुरू की जा सकती है ताकि Odoo webhook के URL पर API requests ऑटोमैटिकली भेजी जा सकें।अगर कोई दूसरा रिस्पांस रिटर्न होता है, तो इससे जुड़ा नंबर प्रॉब्लम को पहचानने में मदद करता है। उदाहरण के लिए,
500 Internal Server Errorमैसेज का मतलब है कि Odoo कॉल को सही तरीके से interpret नहीं कर पाया। इस स्थिति में, सुनिश्चित करें कि JSON फ़ाइल में मिले फ़ील्ड webhook के कॉन्फ़िगरेशन और टेस्ट कॉल भेजने वाले सिस्टम में सही तरीके से मैप किए गए हैं।
सलाह
Odoo में webhook के कॉन्फ़िगरेशन में कॉल लॉगिंग ऑन करने से, अगर webhook इच्छित तरीके से काम नहीं कर रहा है, तो एरर लॉग मिलते हैं।
एक्सटर्नल सिस्टम में webhook इंप्लिमेंट करें¶
जब webhook को Odoo में सफलतापूर्वक बनाया और टेस्ट किया जा चुका हो, तो इसे उस सिस्टम में इंप्लिमेंट करें जो Odoo डेटाबेस को डेटा भेजता है, यह सुनिश्चित करते हुए कि POST API requests webhook के URL पर भेजे जाएं।
वेबहुक के उपयोग केस¶
नीचे Odoo में webhooks का इस्तेमाल करने के दो उदाहरण दिए गए हैं। हर उदाहरण के लिए एक टेस्ट payload दिया गया है, और इसे webhook को टेस्ट करने के सेक्शन में पाया जा सकता है। टेस्ट payload भेजने के लिए Postman का इस्तेमाल किया जाता है।
सेल्स ऑर्डर की करेंसी अपडेट करें¶
यह webhook Sales ऐप्लिकेशन में एक सेल्स ऑर्डर को USD में अपडेट करता है जब एक्सटर्नल सिस्टम webhook के URL पर एक POST API request भेजता है जिसमें वह सेल्स ऑर्डर नंबर शामिल होता है (जिसे payload के id रिकॉर्ड द्वारा पहचाना जाता है)।
यह संयुक्त राज्य अमेरिका के बाहर की सब्सिडियरी के लिए उपयोगी हो सकता है जिनकी मदर कंपनी संयुक्त राज्य अमेरिका के अंदर स्थित है या मर्जर के दौरान जब डेटा को एक Odoo डेटाबेस में consolidate किया जा रहा हो।
webhook बनाएं¶
इस webhook को बनाने के लिए, निम्नानुसार आगे बढ़ें:
Sales ऐप्लिकेशन खोलें, फिर Studio खोलें और Webhooks पर क्लिक करें। Sales Order मॉडल डिफ़ॉल्ट रूप से सेलेक्ट किया गया है।
New पर क्लिक करें। Trigger डिफ़ॉल्ट रूप से On webhook पर सेट है।
Target Record को
model.env[payload.get('model')].browse(int(payload.get('id')))पर सेट करें, जहां:payload.get('model')payload मेंmodelkey से जुड़ी वैल्यू प्राप्त करता है, यानीsale.order, जो Sales Order मॉडल का टेक्निकल नाम है।payload.get('id')payload मेंidkey से जुड़ी वैल्यू प्राप्त करता है, यानी आपके Odoo डेटाबेस में टारगेट सेल्स ऑर्डर का नंबर जिसमें सेSऔर शुरुआती शून्य हटा दिए गए हैं।intरिट्रीव की गई आईडी को इंटीजर (यानी एक पूर्ण संख्या) में कन्वर्ट करता है क्योंकिbrowse()मेथड केवल इंटीजर के साथ ही इस्तेमाल किया जा सकता है।
ऐक्शन जोड़ें पर क्लिक करें।
टाइप सेक्शन में, रिकॉर्ड अपडेट करें पर क्लिक करें।
ऐक्शन डीटेल्स सेक्शन में, अपडेट करें सेलेक्ट करें, करेंसी फ़ील्ड चुनें, और USD सेलेक्ट करें।
सेव करें और बंद करें पर क्लिक करें।
वेबहुक टेस्ट करें¶
इस वेबहुक को टेस्ट करने के लिए, निम्नलिखित तरीके से आगे बढ़ें:
Postman खुला होने पर, एक नया HTTP रिक्वेस्ट बनाएं और इसकी मेथड को POST पर सेट करें।
(लिंक) आइकॉन का उपयोग करके Odoo वेबहुक के यूआरएल को कॉपी करें और इसे Postman में यूआरएल फ़ील्ड में पेस्ट करें।
Body टैब पर क्लिक करें और raw सेलेक्ट करें।
फ़ाइल टाइप को JSON पर सेट करें, फिर इस कोड, यानी पेलोड को कॉपी करें और इसे कोड एडिटर में पेस्ट करें:
{ "model": "sale.order", "id": "SALES ORDER NUMBER" }
अपने Odoo डेटाबेस में, वेबहुक टेस्ट करने के लिए एक सेल्स ऑर्डर चुनें। पेस्ट किए गए कोड में,
SALES ORDER NUMBERको सेल्स ऑर्डर के नंबर से बदलें, बिनाSया नंबर से पहले किसी ज़ीरो के। उदाहरण के लिए,S00007नंबर वाले सेल्स ऑर्डर को Postman में7के रूप में दर्ज किया जाना चाहिए।Send पर क्लिक करें।
यह निर्धारित करने के लिए कि वेबहुक सही तरीके से काम कर रहा है या नहीं, Postman में रिस्पांस व्यूअर देखें। यदि
200 OKयाstatus: okके अलावा कोई मैसेज रिटर्न होता है, तो मैसेज से जुड़ा नंबर समस्या की पहचान करने में मदद करता है।
नया संपर्क बनाएं¶
यह वेबहुक Odoo डेटाबेस में एक नया कॉन्टैक्ट बनाने के लिए कस्टम कोड का उपयोग करता है जब एक्सटर्नल सिस्टम वेबहुक के यूआरएल पर एक POST एपीआई रिक्वेस्ट भेजता है जिसमें कॉन्टैक्ट की जानकारी शामिल होती है। यह ऑटोमैटिकली नए वेंडर या कस्टमर बनाने के लिए सहायक हो सकता है।
webhook बनाएं¶
इस webhook को बनाने के लिए, निम्नानुसार आगे बढ़ें:
कॉन्टैक्ट ऐप्लिकेशन खोलें, फिर स्टूडियो खोलें और वेबहुक पर क्लिक करें। कॉन्टैक्ट मॉडल डिफ़ॉल्ट रूप से सेलेक्ट किया जाता है।
New पर क्लिक करें। Trigger डिफ़ॉल्ट रूप से On webhook पर सेट है।
टारगेट रिकॉर्ड को
model.browse([2])पर सेट करें। यह मूल रूप से एक प्लेसहोल्डर है क्योंकि ऑटोमेटेड ऐक्शन में कोड वेबहुक को बताता है कि पेलोड से क्या रिट्रीव करने की ज़रूरत है और किस मॉडल में रिकॉर्ड बनाने की ज़रूरत है।ऐक्शन जोड़ें पर क्लिक करें।
टाइप सेक्शन में, कोड एक्ज़ीक्यूट करें पर क्लिक करें।
इस कोड को कॉपी करें और ऐक्शन डीटेल्स सेक्शन के कोड टैब में कोड एडिटर में पेस्ट करें:
# variables to retrieve and hold data from the payload contact_name = payload.get('name') contact_email = payload.get('email') contact_phone = payload.get('phone') # a Python function to turn the variables into a contact in Odoo if contact_name and contact_email: new_partner = env['res.partner'].create({ 'name': contact_name, 'email': contact_email, 'phone': contact_phone, 'company_type':'person', 'customer_rank': 1, }) # an error message for missing required data in the payload else: raise ValueError("Missing required fields: 'name' and 'email'")
सेव करें और बंद करें पर क्लिक करें।
वेबहुक टेस्ट करें¶
इस वेबहुक को टेस्ट करने के लिए, निम्नलिखित तरीके से आगे बढ़ें:
Postman में, एक नया HTTP रिक्वेस्ट बनाएं और इसकी मेथड को POST पर सेट करें।
(लिंक) आइकॉन का उपयोग करके Odoo वेबहुक के यूआरएल को कॉपी करें और इसे Postman में यूआरएल फ़ील्ड में पेस्ट करें।
Body टैब पर क्लिक करें और raw सेलेक्ट करें।
फ़ाइल टाइप को JSON पर सेट करें, फिर इस कोड, यानी पेलोड को कॉपी करें और इसे कोड एडिटर में पेस्ट करें:
{ "name": "CONTACT NAME", "email": "CONTACTEMAIL@EMAIL.COM", "phone": "CONTACT PHONE NUMBER" }
पेस्ट किए गए कोड में,
CONTACT NAME,CONTACTEMAIL@EMAIL.COM, औरCONTACT PHONE NUMBERको नए कॉन्टैक्ट की जानकारी से बदलें।Send पर क्लिक करें।
यह निर्धारित करने के लिए कि वेबहुक सही तरीके से काम कर रहा है या नहीं, Postman में रिस्पांस व्यूअर देखें। यदि
200 OKयाstatus: okके अलावा कोई मैसेज रिटर्न होता है, तो मैसेज से जुड़ा नंबर समस्या की पहचान करने में मदद करता है।