คอลเลกชันและข้อมูล

คอลเลกชันคือตารางข้อมูลเฉพาะของบอทของคุณ เหมาะสำหรับเก็บคำขอ คำสั่งซื้อ คำตอบจากไดอะล็อก คะแนนในเกม หรือการจองเรียน — ทุกอย่างที่บอทรวบรวมจากผู้ใช้หรือได้รับจากการเชื่อมต่อ ส่วนนี้อยู่ในเมนูด้านซ้าย: ข้อมูล → คอลเลกชัน

คอลเลกชันคืออะไร

คอลเลกชันประกอบด้วย ฟิลด์ (schema ที่อธิบายคอลัมน์) และ รายการ (แถวที่มีข้อมูล) แต่ละรายการคือชุดค่าตามฟิลด์ของคอลเลกชัน ภายในจัดเก็บเป็น JSON document ที่ยืดหยุ่น ดังนั้นคอลเลกชันรองรับการเพิ่มฟิลด์ใหม่ได้อย่างราบรื่น

ชื่อคอลเลกชันต้องไม่ซ้ำกันภายในบอทเดียวและใช้เป็น identifier ในการดำเนินการรีแอคชัน (เช่น leads, orders, scores)

ประเภทฟิลด์

เมื่อสร้างคอลเลกชัน คุณกำหนดรายการฟิลด์และประเภทของแต่ละฟิลด์:

  • text — สตริง (ชื่อ, email, ความคิดเห็น)
  • number — ตัวเลข (จำนวนเงิน, ปริมาณ, คะแนน)
  • bool — ใช่/ไม่ใช่ (true / false)
  • datetime — วันที่และเวลา
  • json — object หรือ array ที่ซ้อนกันสำหรับค่าที่ซับซ้อน

ประเภทส่งผลต่อวิธีแก้ไขฟิลด์ในอินเทอร์เฟซและวิธีแปลงค่าเมื่อบันทึก Schema ไม่เข้มงวด: หากรายการมีฟิลด์นอก schema ก็จะบันทึกและแสดงเป็นคอลัมน์แยกต่างหาก

การสร้างคอลเลกชัน

  1. เปิด ข้อมูล → คอลเลกชัน แล้วกด เพิ่ม
  2. ระบุ ชื่อ (ภาษาละติน ไม่มีช่องว่าง — ง่ายต่อการอ้างอิงในรีแอคชัน)
  3. กดปุ่ม ฟิลด์ เพิ่มคอลัมน์ที่ต้องการและเลือกประเภทของแต่ละคอลัมน์
  4. หากต้องการกำหนดกฎการจัดเก็บ (ดูด้านล่าง) แล้วบันทึก

รายการ: ดูและแก้ไข

ในการ์ดคอลเลกชันมีปุ่มที่มีไอคอนตาราง — จะเปิดหน้าต่าง ข้อมูล พร้อมรายการของคอลเลกชันนั้น:

  • ดู — แสดงแถวทั้งหมดเป็นรายการ หนึ่งฟิลด์ต่อเซลล์ เริ่มจากรายการล่าสุด
  • เพิ่มรายการ — เปิดฟอร์มตาม 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 เหมาะเมื่อโครงสร้างค่าไม่ได้กำหนดไว้ล่วงหน้า