কম্পিউটার টিউটোরিয়াল

QStash শিডিউলার ব্যবহার করে GPT Online-এর সাথে WhatsApp রিমাইন্ডার অটোমেট করুন

QStash সার্ভারলেস এনভায়রনমেন্টের জন্য ডিজাইন করা একটি টাস্ক শিডিউলার এবং মেসেজ কিউ সিস্টেম। এটি ডেভেলপারদের জন্য একটি মূল্যবান টুল কারণ এটি তাদের অটোমেটেড ওয়ার্কফ্লো সেট আপ করতে দেয় নির্দিষ্ট ইন্টারভালে, একবা বা বারবার, স্টেট ম্যানেজ করার চিন্তা ছাড়া।

আপনি QStash কনসোলে খেলে দেখতে পারেন কীভাবে একটি রিকোয়েস্ট বিল্ড করা যায়:

QStash শিডিউলার ব্যবহার করে GPT Online-এর সাথে WhatsApp রিমাইন্ডার অটোমেট করুন

ব্যবহারের ক্ষেত্র

আমার প্রোডাক্ট GPT Hotline মূলত WhatsApp-এ ChatGPT (আমরা একই আন্ডারলাইং মডেল ব্যবহার করি)। আপনি বটকে একটি ডেডিকেটেড নম্বরে টেক্সট করতে পারেন ঠিক যেভাবে ChatGPT অ্যাপে করবেন।

GPT Hotline শুধু টেক্সটিং ছাড়াও অতিরিক্ত ফিচার অফার করে, যেমন ইমেজ সার্চ, ভিডিও সার্চ, এবং নিউজ। অতিরিক্তভাবে, আমি একটি রিমাইন্ডার ফিচার যোগ করতে চেয়েছিলাম, যা ব্যবহারকারীদের বটকে টেক্সট করে একটি নির্দিষ্ট সময়ে মেসেজ পাওয়ার অনুমতি দেবে।

একটি সিম্পল ফ্লো যেখানে আপনি বটকে টেক্সট করবেন একটি নির্দিষ্ট সময়ে আপনাকে মেসেজ পাঠাতে। এটি দেখতে এমন হবে:

QStash শিডিউলার ব্যবহার করে GPT Online-এর সাথে WhatsApp রিমাইন্ডার অটোমেট করুন

আমি আগে সার্ভারলেস রেডিসের জন্য আপস্ট্যাশ ব্যবহার করেছিলাম তাই আমি QStash সম্পর্কে অস্পষ্টভাবে অবগত ছিলাম এবং এটি শেখার জন্য এটি একটি পर्फেক্ট সুযোগ মনে হয়েছিল!)

ডুব নিই

উচ্চ-স্তরের ওয়ার্কফ্লো যা আমরা কোড করতে চাই:

ব্যবহারকারী রিমাইন্ডার মেসেজ পাঠায় -> QStash জব সেট আপ হয় -> QStash নির্দিষ্ট সময়ে API ট্রিগার করে -> ব্যবহারকারীকে মেসেজ পাঠানো হয়

সহজ রাখতে, আমি শুধু QStash কোডে ফোকাস করব। GPT Hotline-এ "Power Commands" আছে যা বটের ডিফল্ট রেসপন্স ওভাররাইড করে, এবং রিমাইন্ডার সেট করার কমান্ড নিচের ফরম্যাটে:

sudo reminder <TIME-INTERVAL> <MY-MESSAGE>

উদাহরণস্বরূপ, আপনি টেক্সট করলে:

sudo reminder 3h go for a walk

"sudo reminder" কমান্ডটি রিমাইন্ডার কোড ট্রিগার করবে, এবং "3h" ইন্ডিকেট করবে যে আপনি রিমাইন্ডারটি ("go for a walk") ৩ ঘণ্টা পর পাঠাতে চান।

GPT Hotline Next.js ব্যবহার করে বিল্ট হয়েছে তাই আমরা QStash একাধিক উপায়ে ট্রিগার করতে পারি। তাদের একটি verifySignature ফাংশন আছে অথেন্টিকেশন জন্য কিন্তু আমরা REST API পদ্ধতি ব্যবহার করব সহজ রাখতে।

// দ্রষ্টব্য: QStash ডকসে CURL কমান্ড উদাহরণ উপলব্ধ।
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-এ পাঠানো একটি fetch রিকোয়েস্টের উদাহরণ। আমি হার্ডকোডেড মান ব্যবহার করেছি এবং এক্সট্রা ফিল্ডগুলো সরিয়ে দিয়েছি, কিন্তু এটি আমাদের অ্যাপের আসল fetch রিকোয়েস্টের একটি ভালো রিপ্রেজেন্টেশন।

QStash একটি URL চায় মেসেজ পাঠাতে। এটি আমাদের API URL হবে যেটি আমরা নির্দিষ্ট সময়ে ট্রিগার করতে চাই।

Upstash-Delay মানটি মেসেজ পাঠানোর সময় নির্ধারণ করে। Upstash-Delay সেকেন্ড (s), মিনিট (m), ঘণ্টা (h), এবং দিন (d) এ ভ্যালু নিতে পারে। উদাহরণস্বরূপ, 30m হলো ৩০ মিনিট এবং 2d হলো ২ দিন, ইত্যাদি। যদি আমরা একটি পিরিয়ডিকলি চলে এমন জব সেট আপ করতে চাই শুধু একবারের পরিবর্তে, আমরা Upstash-Cron ফিল্ড ব্যবহার করব ক্রন লজিকের সাথে।

আমরা বডিতে মেসেজও পাঠাব, রিসিপিয়েন্টের নম্বর (messenger) সহ, এবং আমাদের QSTASH_TOKEN ব্যবহার করে অথেন্টিকেট করব যা একটি এনভায়রনমেন্ট ভেরিয়েবল হিসেবে সেট করা আছে।

এতটুকু! যদি সবকিছু আশা অনুযায়ী কাজ করে, আমরা একটি কনফার্মেশন পাব যে রিমাইন্ডার সেট হয়েছে, এবং QStash নির্দিষ্ট সময়ে মেসেজ এবং মেসেঞ্জার মানগুলোর সাথে API ট্রিগার করবে (যা একটু ব্যবহারকারীকে রিমাইন্ডার পাঠাবে)।

উপসংহার

আমি এই ফিচারটি দেরি করতাম কারণ আমি ভাবতাম এটি বাস্তবায়ন করা কিছুটা জটিল হবে, কিন্তু QStash-এর সাহায্যে আমি এটি শুধু এক রাতে নক আউট করলাম!

আপনাকে এটি চেক আউট করার পরামর্শ দিচ্ছি। তাদের ৫০০ মেসেজ/দিনের একটি উদার ফ্রি টিয়ার আছে যেটি আপনি ব্যবহার করা শুরু করতে পারেন, এবং আপনার অ্যাপ্লিকেশন স্কেল হলে শুধু পে করবেন, তাই এটি ট্রাই না করার কোনো কারণ নেই।

Cheers, Bilal

sudo reminder 1m Good Luck!

QStash শিডিউলার ব্যবহার করে GPT Online-এর সাথে WhatsApp রিমাইন্ডার অটোমেট করুন

  1. CSS background-image কাজ না করলে সমাধান | HTML/CSS

  2. C ভাষায় strncpy() ফাংশন কী?

  3. Android-এ রানটাইমে থিম পরিবর্তন করার পদ্ধতি

  4. RediSearch হার্নেস করা: পাওয়ারফুল রেডিস কোয়ারীর জন্য অ্যাডভান্সড ইনডেক্সিং