Webhooks
जब कोई API task progress करे या पूरा हो जाए, तो Meshy को अपने सर्वर पर POST रिक्वेस्ट भेजने दें, ताकि आपको पोल करने की ज़रूरत न पड़े।
Webhooks का उपयोग क्यों करें
हर task की स्थिति के लिए API को पोल करने की तुलना में Webhooks में कम काम लगता है और कम लागत आती है। Meshy हर अपडेट को होते ही भेज देता है, इसलिए आपको वह जल्दी मिलता है, और Webhooks पोलिंग की तुलना में बेहतर स्केल करते हैं। आप कम रिक्वेस्ट भी भेजते हैं, जिससे आप अपनी rate limits से और दूर रहते हैं।
Webhook सेट अप करें
webhook जोड़ने के लिए, ये चरण फ़ॉलो करें:
- Developer Platform में Webhooks पेज खोलें, और Create Webhook पर क्लिक करें।
- Payload URL में, वह URL डालें जो डिलीवरी प्राप्त करेगा। Meshy केवल
https://पर डिलीवर करता है। - डायलॉग द्वारा भरे गए Webhook Secret की एक कॉपी रखें। हर डिलीवरी इसे साथ लेकर आती है, ताकि आपका सर्वर जांच सके कि रिक्वेस्ट Meshy से आई है। किसी ऐसे webhook के लिए जो आपके पास पहले से है, उसे देखने के लिए उसके Secret कॉलम में आँख वाले आइकन पर क्लिक करें।
- Active चुनें, और Confirm पर क्लिक करें।
प्रत्येक अकाउंट में 5 सक्रिय webhook और कुल मिलाकर 10 तक हो सकते हैं। हर सक्रिय webhook आपके सभी API tasks के स्टेटस अपडेट प्राप्त करता है।
अपने कंप्यूटर पर किसी सर्वर के साथ webhook को टेस्ट करने के लिए, अपने कंप्यूटर पर टेस्ट करें देखें।
डिलीवरी को हैंडल करें
डिलीवरी स्वीकार करने के लिए, 400 से कम का स्टेटस दें, जैसे 200 या 202। Meshy रिस्पॉन्स के लिए लगभग 25 सेकंड प्रतीक्षा करता है, इसलिए पहले डिलीवरी को स्टोर करें और रिस्पॉन्स दें। उसके बाद धीमा काम करें, जैसे मॉडल डाउनलोड करना।
400 या उससे ऊपर का स्टेटस, या कोई रिस्पॉन्स न मिलना, असफल डिलीवरी माना जाता है। Meshy इसे लंबे अंतराल के साथ फिर से भेजता है, IN_PROGRESS अपडेट के लिए 4 बार तक और अंतिम स्टेटस के लिए 9 बार तक। यदि लगातार 20 अपडेट हर प्रयास में असफल हो जाते हैं, तो Meshy webhook को निष्क्रिय कर सकता है। इसे फिर से चालू करने के लिए, Webhooks पेज पर इसे एडिट करें और Active चुनें।
इन स्थितियों के लिए अपना कोड लिखें:
- डिलीवरी गलत क्रम में आ सकती हैं। एक
IN_PROGRESSडिलीवरी अंतिम डिलीवरी के बाद आ सकती है, इसलिए इसे अंतिम स्टेटस को बदलने न दें। - एक ही अपडेट एक से अधिक बार आ सकता है। हर
idऔरstatusजोड़े को एक बार ही हैंडल करें। - जो कोई भी आपका URL जानता है, वह उसे रिक्वेस्ट भेज सकता है।
X-MESHY-API-WEBHOOK-SECRET-KEYकी तुलना अपनी secret की कॉपी से करें, और जो रिक्वेस्ट मेल न खाए उसे अस्वीकार करें।
यदि किसी task की अंतिम डिलीवरी, उसके सामान्य समय के लगभग दोगुने समय के बाद भी नहीं आई है, तो उसके GET एंडपॉइंट से task प्राप्त करें। सामान्य समय और कितनी देर प्रतीक्षा करें, इसके लिए Task lifecycle देखें।
अपने कंप्यूटर पर टेस्ट करें
Meshy केवल एक पब्लिक https:// URL पर डिलीवर करता है, इसलिए यह आपके कंप्यूटर पर सीधे किसी सर्वर तक नहीं पहुँच सकता। अपने कंप्यूटर पर कोड टेस्ट करने के लिए, एक वेबहुक प्रॉक्सी के साथ एक पब्लिक URL को उस तक फॉरवर्ड करें। ये चरण smee.io का उपयोग करते हैं, और कोई भी वेबहुक प्रॉक्सी सेवा उसी तरह काम करती है।
-
smee.io खोलें और Start a new channel पर क्लिक करें। Webhook Proxy URL के नीचे दिया गया URL कॉपी करें।
-
यदि आपके पास अभी तक smee क्लाइंट नहीं है, तो इसे इंस्टॉल करें:
npm install --global smee-client -
चैनल को अपने सर्वर पर फॉरवर्ड करें।
WEBHOOK_PROXY_URLको अपने वेबहुक प्रॉक्सी URL से बदलें:smee --url WEBHOOK_PROXY_URL --path /webhook --port 3000आउटपुट कुछ इस तरह दिखता है, जहाँ
WEBHOOK_PROXY_URLआपका वेबहुक प्रॉक्सी URL है:Forwarding WEBHOOK_PROXY_URL to http://127.0.0.1:3000/webhook Connected WEBHOOK_PROXY_URLटेस्ट करते समय इसे चलता रहने दें। फॉरवर्डिंग रोकने के लिए, Ctrl+C दबाएँ। आपका सर्वर पोर्ट
3000पर पाथ/webhookपर डिलीवरी प्राप्त करता है, इसलिए अपने कोड को वहाँ सुनने के लिए सेट अप करें। -
Webhooks पेज पर, वेबहुक प्रॉक्सी URL को अपने Payload URL के रूप में इस्तेमाल करके एक webhook बनाएँ।
डिलीवरी पेलोड
जब कोई task IN_PROGRESS होता है, तो Meshy एक डिलीवरी भेजता है, और जब task अंतिम स्टेटस पर पहुँचता है, तो एक और भेजता है। कोई task बिना किसी IN_PROGRESS डिलीवरी के अपने अंतिम स्टेटस पर पहुँच सकता है।
हर डिलीवरी इन हेडर के साथ आपके Payload URL पर एक POST है:
| Header | Value |
|---|---|
X-MESHY-API-WEBHOOK-SECRET-KEY | webhook का secret |
X-MESHY-API-WEBHOOK-USER-ID | उस Meshy उपयोगकर्ता की ID जिसके पास webhook है |
Meshy-Webhook-Version | v1, बॉडी का फॉर्मेट |
Content-Type | application/json |
User-Agent | MeshyAPIWebhook/1.0.0 |
JSON बॉडी task ऑब्जेक्ट है। यह वही ऑब्जेक्ट है जो task का GET एंडपॉइंट लौटाता है, सिवाय progress के। एक डिलीवरी progress को इनमें से किसी एक वैल्यू के रूप में भेजती है:
50जब taskIN_PROGRESSहो100जब task सफल हो0जब task असफल हो या रद्द हो जाए
प्रत्येक task ऑब्जेक्ट के फ़ील्ड्स के लिए, एक उदाहरण सहित, निम्नलिखित सेक्शन देखें: