QStash คือตัวกำหนดเวลางานและระบบคิวข้อความที่ออกแบบมาสำหรับสภาพแวดล้อมแบบไร้เซิร์ฟเวอร์ มันเป็นเครื่องมือที่มีค่าสำหรับนักพัฒนาเนื่องจากช่วยให้พวกเขาตั้งค่าเวิร์กโฟลว์อัตโนมัติที่ทำงานในช่วงเวลาที่กำหนด ไม่ว่าจะครั้งเดียวหรือซ้ำๆ โดยไม่ต้องกังวลเกี่ยวกับการจัดการสถานะ
คุณสามารถทดลองเล่นบนคอนโซล QStash เพื่อทำความเข้าใจเกี่ยวกับวิธีการสร้างคำขอ:

กรณีการใช้งาน
สายด่วน GPT ผลิตภัณฑ์ของฉันคือ ChatGPT บน WhatsApp เป็นหลัก (เราใช้โมเดลพื้นฐานเดียวกัน) คุณสามารถส่งข้อความถึงบอทตามหมายเลขเฉพาะได้เช่นเดียวกับที่คุณทำในแอป ChatGPT
GPT Hotline นำเสนอคุณสมบัติเพิ่มเติมนอกเหนือจากการส่งข้อความ เช่น การค้นหารูปภาพ การค้นหาวิดีโอ และข่าวสาร นอกจากนี้ ฉันต้องการเพิ่มคุณสมบัติการแจ้งเตือน ซึ่งจะช่วยให้ผู้ใช้ส่งข้อความถึงบอทเพื่อรับข้อความในเวลาที่กำหนดได้
ขั้นตอนง่ายๆ ที่คุณสามารถส่งข้อความถึงบอทเพื่อส่งข้อความถึงคุณในเวลาที่กำหนด มันจะมีลักษณะดังนี้:

ฉันเคยใช้ Upstash สำหรับ Redis แบบไร้เซิร์ฟเวอร์มาก่อน ดังนั้นฉันจึงทราบอย่างคลุมเครือเกี่ยวกับ QStash และดูเหมือนว่าจะเป็นโอกาสที่ดีในการเรียนรู้เพิ่มเติม!
มาดำดิ่งกัน
ขั้นตอนการทำงานระดับสูงที่เราต้องการเขียนโค้ดคือ
ผู้ใช้ส่งข้อความเตือน -> งาน QStash ได้รับการตั้งค่า -> QStash ทริกเกอร์ API ในเวลาที่กำหนด -> ข้อความที่ส่งถึงผู้ใช้
เพื่อให้ทุกอย่างง่ายขึ้น ฉันจะเน้นไปที่โค้ด QStash เท่านั้น สายด่วน GPT มี "คำสั่งพลังงาน" ที่แทนที่การตอบสนองเริ่มต้นของบอท และคำสั่งในการตั้งการแจ้งเตือนอยู่ในรูปแบบต่อไปนี้:
sudo reminder <TIME-INTERVAL> <MY-MESSAGE> ตัวอย่างเช่น หากคุณส่งข้อความ:
sudo reminder 3h go for a walk คำสั่ง "sudo alert" จะเรียกใช้รหัสเตือนความจำ และ "3h" ระบุว่าคุณต้องการให้ส่งการแจ้งเตือน ("ไปเดินเล่น") ภายใน 3 ชั่วโมง
GPT Hotline สร้างขึ้นโดยใช้ 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 เพื่อส่งข้อความถึง นี่จะเป็น URL API ของเราที่เราต้องการทริกเกอร์ในเวลาที่กำหนด
ค่า Upstash-Delay จะกำหนดเวลาในการส่งข้อความ Upstash-Delay สามารถรับค่าเป็นวินาที นาที (m) ชั่วโมง (h) และวัน (d) ตัวอย่างเช่น 30 นาทีคือ 30 นาที และ 2d คือ 2 วัน ฯลฯ หากเราต้องการตั้งค่างานที่ดำเนินการเป็นระยะๆ แทนที่จะเป็นเพียงครั้งเดียว เราจะใช้ฟิลด์ Upstash-Cron พร้อมด้วย cron logic*.*
นอกจากนี้เรายังจะส่งข้อความในส่วนเนื้อหาพร้อมกับหมายเลขของผู้รับ (ผู้ส่งสาร) และรับรองความถูกต้องโดยใช้ QSTASH_TOKEN ของเราซึ่งตั้งค่าเป็นตัวแปรสภาพแวดล้อม
แค่นั้นแหละ! หากทุกอย่างทำงานตามที่คาดไว้ เราจะได้รับการยืนยันว่ามีการตั้งค่าการแจ้งเตือนแล้ว และ QStash จะทริกเกอร์ API ตามเวลาที่กำหนดพร้อมกับค่าข้อความและ Messenger (ซึ่งจะส่งการแจ้งเตือนไปยังผู้รับตามลำดับ)
บทสรุป
ฉันยกเลิกฟีเจอร์นี้เพราะฉันคิดว่ามันจะซับซ้อนเล็กน้อยในการใช้งาน แต่ด้วยความช่วยเหลือของ QStash ฉันก็สามารถทำให้มันใช้งานได้ในเย็นวันเดียว!
ฉันขอแนะนำให้คุณลองดู พวกเขามี Free Tier มากมายถึง 500 ข้อความ/วัน ที่คุณสามารถเริ่มใช้งานได้ และจ่ายเฉพาะเมื่อแอปพลิเคชันของคุณขยายใหญ่ขึ้น ดังนั้นจึงไม่มีเหตุผลที่จะไม่ลองดู
ไชโย บิลาล
sudo reminder 1m Good Luck!
