Skip to main content

LINE Official Account (Channel)

ภาพรวม

line_oa คือ หน่วย tenant ระดับที่สอง ถัดจากองค์กร และถือเป็นแกนกลางของทั้งระบบ เพราะเกือบทุกตารางที่เก็บข้อมูลฟีเจอร์จะมีคอลัมน์ line_oa_id เพื่อผูกข้อมูลไว้กับ channel ใด channel หนึ่ง

ตารางนี้รวบรวมทุกอย่างที่เกี่ยวกับ LINE Official Account หนึ่งบัญชี ตั้งแต่ credential ของ LINE Messaging API, การตั้งค่า webhook, สถานะการ sync รายชื่อเพื่อน, การตั้งค่า Google Analytics, นโยบายการตอบข้อความ ไปจนถึงโควตาการใช้งานระดับ channel

โครงสร้างข้อมูลหลัก

line_oa (model LineOa)

ข้อมูล channelline_oa_name, channel_id, channel_secret_id, channel_access_token, channel_name, bot_basic_id, premium_id และ cover

การเข้าถึงแบบสาธารณะline_oa_hash เป็น hash ที่ใช้ในลิงก์ tracking และหน้า public แทนการเปิดเผย id จริงของ channel

Webhookwebhook_id และ forward_webhook_url โดย webhook-go ใช้ webhook_id เพื่อระบุ channel จาก URL ที่ LINE ยิงเข้ามา แล้วสามารถ forward ต่อไปยังปลายทางเดิมของลูกค้าได้

LINE Login / LIFFline_login_info JSONB สำหรับให้ฝั่ง client-web ใช้งาน

การ sync เพื่อนsync_follower_status (enum SyncFollowerStatus), sync_follower_logs และ last_sync_followers_date

Audience auto-refreshaudience_refresh_enabled และ audience_refresh_interval (หน่วยเป็นนาที)

Google Analyticsga_tracking_enabled และ ga_identity_param (default lid)

นโยบายการตอบข้อความmessage_handling_config JSONB ค่า default คือ {"priority":"auto_response_only"} ใช้ตัดสินว่าเมื่อผู้ใช้พิมพ์ข้อความเข้ามา ระบบจะให้ auto-response, trigger rule หรือ AI เป็นผู้ตอบ

โควตาplan_limits JSONB (เพิ่มด้วย migration) กำหนดเพดานการใช้งานเฉพาะ channel นี้

โครงสร้างพื้นฐานประกอบด้วย FK organization_id ไปยัง organization.id, soft delete ผ่าน deleted_date และ index สำคัญคือ (webhook_id, status, organization_id) กับ (line_oa_hash, status, organization_id)

line_oa_app (model LineOaApp)

สวิตช์เปิด/ปิด "แอปเสริม" ในระดับองค์กร มี unique constraint บน (organization_id, app_id) พร้อมคอลัมน์ enabled และ config JSONB

ค่า app_id คือชื่อแอป เช่น appointment, bulletin หรือ loyalty ซึ่ง API จะใช้ตารางนี้เป็นฐานของ AppEnabledGuard

otp_config

ตั้งค่า OTP ทั้งทาง SMS (ThaiBulkSMS) และอีเมล หนึ่งแถวต่อหนึ่ง OA โดยมี unique constraint บน line_oa_id ใช้งานหลักกับ form builder ดูรายละเอียดได้ที่ ฟอร์ม

ไฟล์ที่เกี่ยวข้อง

  • prisma/schema.prisma:295 — model LineOa
  • prisma/schema.prisma:1675 — model LineOaApp
  • prisma/migrations/20260726180000_add_line_oa_plan_limits/migration.sql — คอลัมน์ plan_limits
  • seed-data/06.line_oa.sql — seed channel ทดสอบ 1 ตัว
  • schema-dumps/2026-07-24/schema.sql:2151 (line_oa) และ :2187 (line_oa_app)

จุดเชื่อมต่อกับ Service อื่น

  • webhook-go — ค้นหา channel จาก webhook_id, ใช้ channel_secret_id ตรวจสอบ signature, ใช้ channel_access_token เรียก LINE API และ forward ต่อไปยัง forward_webhook_url
  • cms-api-go — จัดการ CRUD ของ channel, สั่ง sync follower, ตั้งค่า GA, message handling และ plan limits
  • client-api-go — ใช้ line_oa_hash และ line_login_info สำหรับ LIFF และหน้า public
  • worker-go — อ่านค่า audience_refresh_enabled และ audience_refresh_interval เพื่อจัดตารางรีเฟรช audience
  • ตารางนี้เป็น parent ของแทบทุก domain ในระบบ ทั้ง campaign, rich menu, audience, content, form และ loyalty