คอลเลกชันและข้อมูล
คอลเลกชันคือตารางข้อมูลเฉพาะของบอทของคุณ เหมาะสำหรับเก็บคำขอ คำสั่งซื้อ คำตอบจากไดอะล็อก คะแนนในเกม หรือการจองเรียน — ทุกอย่างที่บอทรวบรวมจากผู้ใช้หรือได้รับจากการเชื่อมต่อ ส่วนนี้อยู่ในเมนูด้านซ้าย: ข้อมูล → คอลเลกชัน
คอลเลกชันคืออะไร
คอลเลกชันประกอบด้วย ฟิลด์ (schema ที่อธิบายคอลัมน์) และ รายการ (แถวที่มีข้อมูล) แต่ละรายการคือชุดค่าตามฟิลด์ของคอลเลกชัน ภายในจัดเก็บเป็น JSON document ที่ยืดหยุ่น ดังนั้นคอลเลกชันรองรับการเพิ่มฟิลด์ใหม่ได้อย่างราบรื่น
ชื่อคอลเลกชันต้องไม่ซ้ำกันภายในบอทเดียวและใช้เป็น identifier ในการดำเนินการรีแอคชัน (เช่น leads, orders, scores)
ประเภทฟิลด์
เมื่อสร้างคอลเลกชัน คุณกำหนดรายการฟิลด์และประเภทของแต่ละฟิลด์:
- text — สตริง (ชื่อ, email, ความคิดเห็น)
- number — ตัวเลข (จำนวนเงิน, ปริมาณ, คะแนน)
- bool — ใช่/ไม่ใช่ (
true/false) - datetime — วันที่และเวลา
- json — object หรือ array ที่ซ้อนกันสำหรับค่าที่ซับซ้อน
ประเภทส่งผลต่อวิธีแก้ไขฟิลด์ในอินเทอร์เฟซและวิธีแปลงค่าเมื่อบันทึก Schema ไม่เข้มงวด: หากรายการมีฟิลด์นอก schema ก็จะบันทึกและแสดงเป็นคอลัมน์แยกต่างหาก
การสร้างคอลเลกชัน
- เปิด ข้อมูล → คอลเลกชัน แล้วกด เพิ่ม
- ระบุ ชื่อ (ภาษาละติน ไม่มีช่องว่าง — ง่ายต่อการอ้างอิงในรีแอคชัน)
- กดปุ่ม ฟิลด์ เพิ่มคอลัมน์ที่ต้องการและเลือกประเภทของแต่ละคอลัมน์
- หากต้องการกำหนดกฎการจัดเก็บ (ดูด้านล่าง) แล้วบันทึก
รายการ: ดูและแก้ไข
ในการ์ดคอลเลกชันมีปุ่มที่มีไอคอนตาราง — จะเปิดหน้าต่าง ข้อมูล พร้อมรายการของคอลเลกชันนั้น:
- ดู — แสดงแถวทั้งหมดเป็นรายการ หนึ่งฟิลด์ต่อเซลล์ เริ่มจากรายการล่าสุด
- เพิ่มรายการ — เปิดฟอร์มตาม schema ของคอลเลกชัน; แต่ละฟิลด์แก้ไขตามประเภท (สวิตช์สำหรับ
bool, ช่องป้อน JSON สำหรับjsonเป็นต้น) - แก้ไข (ดินสอ) — แก้ไขแถวที่มีอยู่
- ลบ (ถังขยะ) — ลบแถว
รายการยังถูกเติมโดยอัตโนมัติผ่านการดำเนินการรีแอคชันของบอท (ดูด้านล่าง) การแก้ไขด้วยตนเองและการเขียนอัตโนมัติทำงานกับคอลเลกชันเดียวกัน
การจัดเก็บ (retention)
เพื่อไม่ให้คอลเลกชันเติบโตไม่สิ้นสุด กำหนดกฎการล้างข้อมูลอัตโนมัติ:
- เก็บรายการสูงสุด — เมื่อเกินขีดจำกัด รายการเก่าที่สุดจะถูกลบ
- เก็บไม่เกิน (วัน) — รายการที่เก่ากว่าระยะเวลาที่กำหนดจะถูกลบ
การล้างข้อมูลดำเนินการโดย background process เป็นระยะ สามารถรวมกฎได้
การทำงานกับข้อมูลจากรีแอคชัน
คอลเลกชันเชื่อมโยงโดยตรงกับ constructor ของรีแอคชัน ในการดำเนินการรีแอคชันมีให้:
- สร้างรายการ — เพิ่มแถว; ค่าดึงจากเทมเพลต (เช่น
{{user.id}},{{message.text}}) สามารถกำหนด deduplication key เพื่อให้การเรียกซ้ำอัปเดตแถวเดิมแทนที่จะสร้างซ้ำ - อัปเดตรายการ — เปลี่ยนแถวที่ตรงตามเงื่อนไข
- ค้นหารายการ — อ่านแถวไปยัง context ของการดำเนินการเป็น array เพื่อวนซ้ำต่อไป
- ลบรายการ — ลบแถวตามเงื่อนไข
- วนซ้ำ (for-each) — วนซ้ำ array จาก context และดำเนินการที่ซ้อนกันสำหรับแต่ละ element (เช่น ส่งข้อความตามรายการจากคอลเลกชัน)
ด้วยวิธีนี้บอทสามารถจัดการ CRM สะสมคำขอ ให้คะแนน และสร้างรายงานโดยไม่ต้องใช้ฐานข้อมูลภายนอก
การเข้าถึงจาก Mini App
รายการคอลเลกชันสามารถอ่านได้จาก Telegram Mini App ของบอท: frontend ร้องขอข้อมูลคอลเลกชันตามชื่อพร้อม filter และ limit ช่วยให้แสดงคำสั่งซื้อ ประวัติ หรือตารางลีดเดอร์ของผู้ใช้โดยตรงภายใน Telegram
เคล็ดลับ
- ตั้งชื่อฟิลด์สั้นแบบ machine (
email,total,paid) — ง่ายต่อการใส่ใน template ของรีแอคชัน - สำหรับการเขียนแบบ idempotent (เช่น «หนึ่งคำขอต่อผู้ใช้») ใช้ deduplication key
- เปิด retention สำหรับ log และข้อมูลชั่วคราวเพื่อไม่ให้คอลเลกชันขยายตัว
- ประเภท
jsonเหมาะเมื่อโครงสร้างค่าไม่ได้กำหนดไว้ล่วงหน้า