वेबहुक
इवेंट होते ही पाएँ, ताकि आपका सिस्टम हमेशा जाने कि हर संदेश का क्या हुआ। हर अनुरोध को उसके सिग्नेचर से सत्यापित करें।
webhook कैसे काम करते हैं
डैशबोर्ड में एक HTTPS एंडपॉइंट रजिस्टर करें और चुनें कि उसे कौन-से इवेंट मिलें। किसी संदेश के साथ कुछ होने पर, MigoSMTP आपके एंडपॉइंट पर JSON बॉडी वाला POST अनुरोध भेजता है।
इवेंट प्रकार
सिर्फ़ वही इवेंट सब्सक्राइब करें जो आपके सिस्टम को चाहिए। हर इवेंट में मैसेज id, प्राप्तकर्ता और टाइमस्टैम्प होता है, ताकि आप उसे भेजे गए संदेश से मिला सकें।
उदाहरण पेलोड
पेलोड POST अनुरोध के साथ भेजा गया JSON होता है। यहाँ के मान केवल उदाहरण हैं।
{
"event": "delivered",
"message_id": "msg_123",
"recipient": "you@example.com",
"timestamp": "2026-01-15T10:30:00Z"
}सिग्नेचर सत्यापित करें
आपका URL जानने वाला कोई भी उस पर पोस्ट कर सकता है, इसलिए हर अनुरोध की जाँच करें। अपने साइनिंग सीक्रेट से रॉ रिक्वेस्ट बॉडी का HMAC निकालें और उसे सिग्नेचर हेडर के मान से कॉन्स्टेंट-टाइम तुलना द्वारा मिलाएँ। जो मेल न खाएँ उन अनुरोधों को अस्वीकार करें। हेडर का नाम और एल्गोरिदम डैशबोर्ड में आपके साइनिंग सीक्रेट के साथ दिखाए जाते हैं।
const crypto = require("crypto");
function valid(rawBody, received, secret) {
const expected = crypto.createHmac("sha256", secret).update(rawBody).digest("hex");
const a = Buffer.from(expected), b = Buffer.from(received);
return a.length === b.length && crypto.timingSafeEqual(a, b);
}तेज़ी से जवाब दें
इवेंट स्टोर करते ही 2xx स्टेटस लौटाएँ, और असली काम बाद में क्यू में करें। धीमा या विफल एंडपॉइंट रिट्राई करवाता है और आपके बाकी इवेंट में देरी कर सकता है।
डुप्लिकेट और क्रम में गड़बड़ी की अपेक्षा रखें
विफल डिलीवरी रिट्राई होती हैं, इसलिए एक ही इवेंट एक से ज़्यादा बार आ सकता है, और इवेंट क्रम से बाहर भी आ सकते हैं। मैसेज id और इवेंट प्रकार से अपने हैंडलर को idempotent बनाएँ, और पहुँचने के समय के बजाय इवेंट टाइमस्टैम्प इस्तेमाल करें।
भरोसा करने से पहले टेस्ट करें
एंडपॉइंट को रिक्वेस्ट इंस्पेक्टर या अपनी डेवलपमेंट मशीन के टनल की ओर पॉइंट करें, टेस्ट संदेश भेजें, और पक्का करें कि असली ट्रैफ़िक पर सिग्नेचर सत्यापित कर पा रहे हैं।