<पी> QStash एक कार्य अनुसूचक और संदेश कतार प्रणाली है जिसे सर्वर रहित वातावरण के लिए डिज़ाइन किया गया है। यह डेवलपर्स के लिए एक मूल्यवान उपकरण है क्योंकि यह उन्हें स्वचालित वर्कफ़्लो सेट करने की अनुमति देता है जो राज्य के प्रबंधन के बारे में चिंता किए बिना, एक बार या बार-बार विशिष्ट अंतराल पर चलता है। <पी> अनुरोध बनाने का तरीका जानने के लिए आप QStash कंसोल पर खेल सकते हैं: <पी>
उपयोग मामला
<पी> मेरा उत्पाद जीपीटी हॉटलाइन अनिवार्य रूप से व्हाट्सएप पर चैटजीपीटी है (हम उसी अंतर्निहित मॉडल का उपयोग करते हैं)। आप बॉट को एक समर्पित नंबर पर वैसे ही टेक्स्ट कर सकते हैं जैसे आप ChatGPT ऐप पर करते हैं। <पी> जीपीटी हॉटलाइन केवल टेक्स्टिंग से परे अतिरिक्त सुविधाएँ प्रदान करती है, जैसे छवि खोज, वीडियो खोज और समाचार। इसके अतिरिक्त, मैं एक अनुस्मारक सुविधा जोड़ना चाहता था, जो उपयोगकर्ताओं को एक निर्दिष्ट समय पर संदेश प्राप्त करने के लिए बॉट को टेक्स्ट करने की अनुमति देगा। <पी> एक सरल प्रवाह जहां आप एक निश्चित समय पर एक संदेश भेजने के लिए बॉट को टेक्स्ट कर सकते हैं। यह कुछ इस तरह दिखेगा: <पी>
<पी> मैंने पहले सर्वर रहित रेडिस के लिए अपस्टैश का उपयोग किया था, इसलिए मुझे QStash के बारे में थोड़ी-बहुत जानकारी थी और यह अधिक जानने का सही अवसर प्रतीत हुआ! आओ गोता लगाएँ
<पी> जिस उच्च-स्तरीय वर्कफ़्लो को हम कोड करना चाहते हैं वह है <पी> उपयोगकर्ता अनुस्मारक संदेश भेजता है -> QStash कार्य सेट हो गया है -> QStash निर्दिष्ट समय पर एपीआई ट्रिगर करता है -> उपयोगकर्ता को संदेश भेजा गया है <पी> चीज़ों को सरल रखने के लिए, मैं केवल QStash कोड पर ध्यान केंद्रित करूँगा। जीपीटी हॉटलाइन में "पावर कमांड" हैं जो बॉट की डिफ़ॉल्ट प्रतिक्रिया को ओवरराइड करते हैं, और रिमाइंडर सेट करने का कमांड निम्नलिखित प्रारूप में है: sudo reminder <TIME-INTERVAL> <MY-MESSAGE>
<पी> उदाहरण के लिए, यदि आप टेक्स्ट करते हैं: sudo reminder 3h go for a walk
<पी> "सुडो रिमाइंडर" कमांड रिमाइंडर कोड को ट्रिगर करेगा, और "3h" इंगित करता है कि आप चाहते हैं कि रिमाइंडर ("टहलने जाएं") 3 घंटे में भेजा जाए। <पी> GPT हॉटलाइन Next.js का उपयोग करके बनाई गई है इसलिए हम QStash को कुछ तरीकों से ट्रिगर कर सकते हैं। उनके पास एक VerifySignature फ़ंक्शन है जिसका उपयोग आप प्रमाणित करने के लिए कर सकते हैं लेकिन हम चीजों को सरल रखने के लिए REST API दृष्टिकोण का उपयोग करेंगे। // Note: There are CURL Command examples available in the QStash docs.
const YOUR_API_URL = "https://api.example.com";
const MY_MESSAGE = "go for a walk";
const REMINDER_TIME = "3h";
const MESSENGER = "1800-MCDONALDS";
await fetch(`https://qstash.upstash.io/v1/publish/${YOUR_API_URL}`, {
headers: {
Authorization: `Bearer ${process.env.QSTASH_TOKEN}`,
"Upstash-Delay": REMINDER_TIME,
"Content-Type": "application/json",
},
method: "POST",
body: JSON.stringify({
message: MY_MESSAGE,
messenger: MESSENGER,
}),
});
<पी> यह एक फ़ेच अनुरोध का एक उदाहरण है जिसे हम QStash को भेज सकते हैं। मेरे पास हार्डकोडेड मान हैं और अतिरिक्त फ़ील्ड हटा दिए गए हैं, लेकिन यह ऐप में हमारे वास्तविक फ़ेच अनुरोध का एक अच्छा प्रतिनिधित्व है। <पी> QStash को संदेश भेजने के लिए एक URL की आवश्यकता होती है। यह हमारा एपीआई यूआरएल होगा जिसे हम निर्दिष्ट समय पर ट्रिगर करना चाहते हैं। <पी> अपस्टैश-विलंब मान संदेश भेजने का समय निर्धारित करता है। अपस्टैश-विलंब सेकंड (सेकंड), मिनट (एम), घंटे (एच), और दिन (डी) में मान ले सकता है। उदाहरण के लिए, 30 मिनट 30 मिनट है और 2 दिन 2 दिन है, आदि। यदि हम एक ऐसा कार्य स्थापित करना चाहते हैं जो केवल एक बार के बजाय समय-समय पर चलता है, तो हम क्रॉन लॉजिक* के साथ अपस्टैश-क्रॉन फ़ील्ड का उपयोग करेंगे।* <पी> हम प्राप्तकर्ता के नंबर (मैसेंजर) के साथ मुख्य भाग में संदेश भी भेजेंगे, और हमारे QSTASH_TOKEN का उपयोग करके प्रमाणित करेंगे जो एक पर्यावरण चर के रूप में सेट है। <पी> और बस इतना ही! यदि सब कुछ अपेक्षा के अनुरूप काम करता है, तो हमें एक पुष्टिकरण प्राप्त होगा कि अनुस्मारक सेट कर दिया गया है, और QStash संदेश और मैसेंजर मानों के साथ निर्धारित समय पर एपीआई को ट्रिगर करेगा (जो बदले में प्राप्तकर्ता को अनुस्मारक भेजेगा)। निष्कर्ष
<पी> मैं इस सुविधा को बंद कर रहा था क्योंकि मुझे लगा कि इसे लागू करना थोड़ा जटिल होगा, लेकिन QStash की मदद से, मैं इसे केवल एक शाम में ख़त्म करने में सक्षम था! <पी> मैं अत्यधिक अनुशंसा करता हूं कि आप इसे जांचें। उनके पास प्रति दिन 500 संदेशों का एक उदार नि:शुल्क स्तर है जिसका आप उपयोग शुरू कर सकते हैं, और केवल आपके आवेदन के बढ़ने के बाद ही भुगतान करते हैं, इसलिए इसे न देने का कोई कारण नहीं है। <पी> चीयर्स, बिलाल sudo reminder 1m Good Luck!
<पी>