Rich Menu
ภาพรวม
Domain นี้มี 4 ตาราง คือ rich_menu (นิยาม rich menu ที่ใช้งานอยู่), rich_menu_action
(ปุ่ม/พื้นที่กดของแต่ละ rich menu), rich_menu_member (รายชื่อ LINE user ที่ผูกกับ rich menu นั้น)
และ rich_menu_archive (สำเนา rich menu ที่ถูกแทนที่หรือหมดอายุ มีโครงสร้างคอลัมน์เหมือน
rich_menu ทุกประการ)
ตาราง rich_menu
| Column | Type | Nullable | Default | คำอธิบาย |
|---|---|---|---|---|
id | SERIAL (INTEGER) | NO | nextval(...) | รหัสอ้างอิงหลักของ rich menu |
line_oa_id | INTEGER | NO | - | รหัส LINE OA เจ้าของ rich menu (FK ไป line_oa.id) |
line_rich_menu_id | TEXT | YES | - | รหัส rich menu ฝั่ง LINE Platform ที่ได้หลังสร้างสำเร็จ |
thumbnail | TEXT | NO | - | URL รูปภาพพื้นหลัง/ภาพย่อของ rich menu |
audience_id | INTEGER | YES | - | กลุ่มเป้าหมายที่จะเห็น rich menu นี้ (FK ไป audience.id) |
parent_id | INTEGER | YES | - | รหัส rich menu แม่ กรณีเป็นเมนูย่อยที่สลับมาจากเมนูหลัก |
title | TEXT | NO | - | ชื่อ rich menu |
custom_label | TEXT | YES | - | ข้อความบนแถบเปิด/ปิดเมนู (chat bar text) |
layout | INTEGER | NO | - | รหัสรูปแบบการแบ่งพื้นที่ของเมนู |
status | "CommonStatus" | NO | processing | สถานะของ rich menu (processing, active, inactive, failed, ...) |
type | "RichMenuType" | NO | custom | ประเภทเมนู: guest, member, custom, default, switch |
complete_link_user | BOOLEAN | NO | - | ผูก rich menu เข้ากับผู้ใช้ทุกคนในกลุ่มครบแล้วหรือยัง |
total | INTEGER | YES | 0 | จำนวนผู้ใช้ที่ผูกกับ rich menu นี้ |
start_date | TIMESTAMPTZ(3) | YES | - | วันเวลาที่เริ่มแสดงเมนู |
end_date | TIMESTAMPTZ(3) | YES | - | วันเวลาที่หยุดแสดงเมนู |
created_date | TIMESTAMPTZ(3) | NO | now() | วันเวลาที่สร้างรายการ |
created_by | INTEGER | NO | 0 | รหัสผู้ใช้ที่สร้างรายการ |
updated_date | TIMESTAMPTZ(3) | YES | - | วันเวลาที่แก้ไขล่าสุด (อัปเดตอัตโนมัติ) |
updated_by | INTEGER | YES | 0 | รหัสผู้ใช้ที่แก้ไขล่าสุด |
deleted_date | TIMESTAMPTZ(3) | YES | - | วันเวลาที่ลบแบบ soft delete |
container_original | JSONB | YES | - | โครงสร้าง rich menu ต้นฉบับที่ใช้ส่งให้ LINE Platform |
reason | TEXT | YES | '' | เหตุผลประกอบสถานะ เช่น สาเหตุที่สร้างไม่สำเร็จ |
rich_menu_actions | JSONB | YES | - | สำเนา action ทั้งหมดในรูปแบบ JSON (ใช้คู่กับตาราง rich_menu_action) |
template_tracking | JSONB | YES | - | ข้อมูล mapping สำหรับติดตามการกดในแต่ละพื้นที่ของเมนู |
is_for_automation | BOOLEAN | NO | false | เมนูนี้ถูกสร้างขึ้นเพื่อใช้ใน automation/workflow หรือไม่ |
ตาราง rich_menu_action
| Column | Type | Nullable | Default | คำอธิบาย |
|---|---|---|---|---|
id | SERIAL (INTEGER) | NO | nextval(...) | รหัสอ้างอิงหลักของ action |
rich_menu_id | INTEGER | NO | - | รหัส rich menu เจ้าของ action (FK ไป rich_menu.id) |
index | INTEGER | NO | - | ลำดับพื้นที่กดภายในเมนู |
type | "RichMenuActionType" | NO | - | ชนิด action: message, uri, tel, postback, datetimepicker, camera, cameraroll, location, richmenu, no_action, alias |
label | TEXT | YES | - | ป้ายกำกับของพื้นที่กด |
link | TEXT | YES | - | ปลายทางของ action เช่น URL, ข้อความ, หรือ postback data |
tracking_key | TEXT | NO | - | คีย์สำหรับติดตามการกดพื้นที่นี้ |
boundary | JSONB | YES | - | พิกัดขอบเขตพื้นที่กดบนรูปภาพ (x, y, width, height) |
rich_menu_alias | INTEGER | YES | - | รหัส rich menu ปลายทางกรณี action เป็นการสลับเมนู |
rich_menu_archive_id | INTEGER | YES | - | รหัส rich menu archive เจ้าของ action (FK ไป rich_menu_archive.id) |
is_tracking | BOOLEAN | NO | false | เปิดการติดตามการกดพื้นที่นี้หรือไม่ |
ตาราง rich_menu_member
| Column | Type | Nullable | Default | คำอธิบาย |
|---|---|---|---|---|
id | SERIAL (INTEGER) | NO | nextval(...) | รหัสอ้างอิงหลักของรายการสมาชิก |
rich_menu_id | INTEGER | NO | - | รหัส rich menu ที่ผูกกับสมาชิกกลุ่มนี้ (FK ไป rich_menu.id) |
line_user_id | JSONB | NO | - | รายการ LINE user ID ที่ผูกกับ rich menu (เก็บเป็น array ใน JSON เพื่อผูกครั้งละหลายคน) |
rich_menu_archive_id | INTEGER | YES | - | รหัส rich menu archive ที่เกี่ยวข้อง (FK ไป rich_menu_archive.id) |
ตาราง rich_menu_archive
โครงสร้างคอลัมน์เหมือน rich_menu ทุกคอลัมน์ ใช้เก็บสำเนา rich menu ที่ถูกแทนที่หรือสิ้นสุดการใช้งาน
เพื่อให้ยังอ้างอิงย้อนหลังจาก tracking_log ได้
| Column | Type | Nullable | Default | คำอธิบาย |
|---|---|---|---|---|
id | SERIAL (INTEGER) | NO | nextval(...) | รหัสอ้างอิงหลักของ rich menu ที่เก็บถาวร |
line_oa_id | INTEGER | NO | - | รหัส LINE OA เจ้าของ rich menu (FK ไป line_oa.id) |
line_rich_menu_id | TEXT | YES | - | รหัส rich menu ฝั่ง LINE Platform |
thumbnail | TEXT | NO | - | URL รูปภาพพื้นหลัง/ภาพย่อของ rich menu |
audience_id | INTEGER | YES | - | กลุ่มเป้าหมายที่เห็น rich menu นี้ (FK ไป audience.id) |
parent_id | INTEGER | YES | - | รหัส rich menu แม่ กรณีเป็นเมนูย่อย |
title | TEXT | NO | - | ชื่อ rich menu |
custom_label | TEXT | YES | - | ข้อความบนแถบเปิด/ปิดเมนู |
layout | INTEGER | NO | - | รหัสรูปแบบการแบ่งพื้นที่ของเมนู |
status | "CommonStatus" | NO | processing | สถานะของ rich menu ณ เวลาที่เก็บถาวร |
type | "RichMenuType" | NO | custom | ประเภทเมนู: guest, member, custom, default, switch |
complete_link_user | BOOLEAN | NO | - | ผูก rich menu เข้ากับผู้ใช้ครบแล้วหรือยัง |
total | INTEGER | YES | 0 | จำนวนผู้ใช้ที่เคยผูกกับ rich menu นี้ |
start_date | TIMESTAMPTZ(3) | YES | - | วันเวลาที่เริ่มแสดงเมนู |
end_date | TIMESTAMPTZ(3) | YES | - | วันเวลาที่หยุดแสดงเมนู |
created_date | TIMESTAMPTZ(3) | NO | now() | วันเวลาที่สร้างรายการ |
created_by | INTEGER | NO | 0 | รหัสผู้ใช้ที่สร้างรายการ |
updated_date | TIMESTAMPTZ(3) | YES | - | วันเวลาที่แก้ไขล่าสุด (อัปเดตอัตโนมัติ) |
updated_by | INTEGER | YES | 0 | รหัสผู้ใช้ที่แก้ไขล่าสุด |
deleted_date | TIMESTAMPTZ(3) | YES | - | วันเวลาที่ลบแบบ soft delete |
container_original | JSONB | YES | - | โครงสร้าง rich menu ต้นฉบับที่ส่งให้ LINE Platform |
reason | TEXT | YES | '' | เหตุผลประกอบสถานะ |
rich_menu_actions | JSONB | YES | - | สำเนา action ทั้งหมดในรูปแบบ JSON |
template_tracking | JSONB | YES | - | ข้อมูล mapping สำหรับติดตามการกดในแต่ละพื้นที่ของเมนู |
is_for_automation | BOOLEAN | NO | false | เมนูนี้ถูกสร้างขึ้นเพื่อใช้ใน automation/workflow หรือไม่ |
หมายเหตุ
rich_menu_actionและrich_menu_memberมี FK ได้ทั้งไปยังrich_menu.id(บังคับ) และrich_menu_archive.id(ไม่บังคับ) จึงใช้ตารางเดียวกันรองรับทั้งเมนูที่ใช้งานอยู่และเมนูที่เก็บถาวรrich_menuและrich_menu_archiveต่างมี FK ไปยังline_oa.idและaudience.idและถูกอ้างอิงกลับจากtracking_log.rich_menu_id/tracking_log.rich_menu_archive_idparent_idและrich_menu_aliasไม่ได้ประกาศเป็น FK constraint ใน schema (อ้างถึงrich_menu.idเชิงตรรกะ) ใช้สำหรับเมนูแบบหลายชั้นที่สลับไปมาได้- Index ของ
rich_menuและrich_menu_archive:line_oa_id,deleted_date rich_menu_actionและrich_menu_memberไม่มีคอลัมน์ audit (created/updated/deleted) เพราะ จัดการวงจรชีวิตตามตารางแม่