• พิมพ์คำที่อยู่ในใจ เช่น “หมดเวลาชำระ” “ปล่อยโต๊ะ” “เครดิต”
← กลับแอป
วิธีทำ· แก้งานที่ต้องทำตอนนี้

ตั้งค่า LINE Official Account ของแพลตฟอร์ม

อ่านจบแล้วคุณจะมี LINE OA 1 บัญชีที่ส่งผลสลิป/เตือนก่อนถึงวัน/แจ้งคิวให้ลูกค้าของร้าน PRO ทุกร้าน และรู้เรื่องโควตาข้อความก่อนเปิดจริง

อัปเดตล่าสุด 2026-09-08 · เวอร์ชันแอป 0.1.0

อ่านจบแล้วคุณจะ

มี LINE Official Account ของแพลตฟอร์ม 1 บัญชีที่ส่งผลสลิป/เตือนก่อนถึงวัน/แจ้งคิวให้ลูกค้าของร้าน PRO ทุกร้าน และรู้ว่าต้องซื้อโควตาข้อความก่อนเปิดจริง

ต้องมีก่อน สิทธิ์ผู้ดูแลระบบ · บัญชี LINE Business ID (สมัครที่ developers.line.biz) · APP_SECRET ตั้งอยู่แล้ว (ค่า LINE ถูกเข้ารหัสด้วยตัวนี้) · NEXT_PUBLIC_APP_URL เป็นโดเมนจริง (LINE เรียก webhook/callback กลับมาที่โดเมนนี้)

บัญชีเดียวใช้กับทุกร้าน — ร้านไม่ต้องตั้งค่าอะไร ลูกค้าเห็นชื่อผู้ส่งเป็นแพลตฟอร์ม ข้อความทุกบรรทัดจึงขึ้นชื่อร้านนำ (เหตุผลใน ADR-0017 Docs/adr/0017-line-notifications-and-waitlist.md)

ขั้นตอน

  1. LINE Developers → สร้าง Provider 1 ตัว (ชื่อแพลตฟอร์ม)
    เห็นหน้า Provider ว่าง ๆ มีปุ่ม “Create a new channel”
  2. สร้าง channel แบบ “Messaging API” (ผ่าน LINE Official Account Manager) แล้วเปิด “Use webhook”

    ใส่ Webhook URL = ค่าที่หน้า “ตั้งค่าแพลตฟอร์ม” แสดงไว้ (…/api/line/webhook) แล้วกด Verify — ระบบตอบ 200 เสมอเมื่อลายเซ็นถูก · ใน LINE Official Account Manager → Settings → Response settings: ปิด “Auto-response messages” และ “Greeting message” แบบเดิม (ระบบตอบเอง: ข้อความช่วยเหลือเมื่อพิมพ์อย่างอื่น) และเปิด “Webhooks”

    ได้ 3 ค่า: **Channel secret** (แท็บ Basic settings) · **Channel access token (long-lived)** (แท็บ Messaging API กด Issue) · **Basic ID** เช่น @123abcd
  3. สร้าง channel แบบ “LINE Login” ใน Provider เดียวกัน → แท็บ LINE Login ใส่ Callback URL → แท็บ Basic settings กด “Link” ที่ “Linked OA” เลือก OA จากขั้นก่อน

    Callback URL = ค่าที่หน้า “ตั้งค่าแพลตฟอร์ม” แสดง (…/api/line/login/callback) · ไม่ Link OA = ลูกค้าจะไม่ถูกชวนเพิ่มเพื่อนตอน login แล้วข้อความจะส่งไม่ถึง (ขึ้น “ผูกแล้ว แต่คุณยังไม่ได้เพิ่มเพื่อน …”) · ขอ scope แค่ profile openid (ค่าเริ่มต้น) · ตอนยังเป็น “Developing” ทดสอบได้เฉพาะบัญชีที่เพิ่มเป็น tester → กด “Publish” ก่อนเปิดจริง

    ได้ **Channel ID** และ **Channel secret** ของ LINE Login · แถว Linked OA ขึ้นชื่อ OA
  4. หน้า “ตั้งค่าแพลตฟอร์ม” → การ์ด “LINE Official Account” กรอก 4 ค่า + Basic ID แล้วกด “บันทึกค่า LINE”

    ค่าทั้งหมดเก็บในฐานข้อมูลแบบเข้ารหัส มีผลทันทีไม่ต้อง deploy · ลงบันทึกกิจกรรมแพลตฟอร์มเป็น “ตั้งค่า LINE OA” โดยไม่เก็บค่า secret

    ขึ้น “บันทึกค่า LINE แล้ว” ช่อง token แสดง “ตั้งแล้ว ••••xxxx” และปุ่ม “ทดสอบ” / “ลบค่า LINE…” ปรากฏ
  5. กด “ทดสอบ”

    ทดสอบเรียก bot info + quota ด้วย token จริง ไม่ส่งข้อความหาใคร · ล้มเหลว = token ผิด/หมดอายุ (ออก long-lived token ใหม่แล้ววาง)

    ขึ้น “OA “ชื่อ” (@basicId) ใช้ได้ · โควตาเดือนนี้ used/quota”
  6. ติ๊ก “เปิดแจ้งเตือนลูกค้าทาง LINE”

    ร้าน FREE ไม่เห็นอะไรเปลี่ยน · ปิดสวิตช์ = ข้อความที่ค้างในคิวถูกข้าม (SKIPPED) ไม่ส่งย้อนหลังเมื่อเปิดใหม่ การผูกของลูกค้าคงอยู่

    ใบจองของร้าน PRO ทุกร้านมีการ์ด “รับแจ้งเตือนทาง LINE” ทันที และการ์ด waitlist มีปุ่ม “แจ้งทาง LINE เมื่อมีโต๊ะว่าง”
  7. ทดสอบจริงครบวง: จองที่ร้าน PRO ทดสอบ → กด “รับแจ้งเตือนทาง LINE” → แนบสลิป → ดูข้อความ

    ทดสอบทางแชทด้วย: พิมพ์ รหัสจอง เบอร์โทร ในแชท OA ต้องตอบ “ผูกแล้ว — …” · พิมพ์อย่างอื่นต้องตอบข้อความช่วยเหลือ · ห้ามใช้ร้านลูกค้าจริงทดสอบ

    ได้ “ผูก LINE กับการจอง …” แล้วตามด้วย “จองสำเร็จ — …” หรือ “ได้รับสลิปแล้ว — …” ภายใน 1 นาที

โควตาข้อความ (สำคัญก่อนเปิดจริง)

  • แพ็กเกจฟรีของ LINE OA ส่ง push ได้ 200 ข้อความ/เดือน ต่อบัญชี (reply จากแชทไม่นับ) · การจอง 1 ใบที่ผูก LINE ใช้ราว 3–5 ข้อความ (ผูก → ผลสลิป → เตือนเที่ยง → อาจมีย้าย/ยกเลิก) → ฟรีพอสำหรับ ~40–60 การจอง/เดือนรวมทุกร้าน เท่านั้น
  • หมดโควตา = LINE ตอบ 429 ข้อความค้างในคิวและลองใหม่เอง (1 นาที → 5 → 15 → 1 ชม. → 6 ชม. แล้วหยุดที่ FAILED) — ลูกค้าจะได้รับช้าหรือไม่ได้รับ · การ์ด LINE แสดง “ส่งแล้วเดือนนี้ n ข้อความ” และเตือน “โควตาเหลือน้อย” เมื่อเหลือ < 20
  • ก่อนเปิดให้ร้านจริง: ซื้อแพ็กเกจข้อความใน LINE Official Account Manager ให้พอกับจำนวนการจองรวมของร้าน PRO

เมื่อเปลี่ยนแปลง

เหตุการณ์ต้องทำ
เปลี่ยน APP_SECRETค่า LINE ทั้ง 3 secret และลิงก์ใบจองที่เข้ารหัสไว้กับการผูกอ่านไม่ได้ทั้งหมด → วางค่า LINE ใหม่; ลูกค้าที่ผูกไว้ยังได้รับข้อความแต่ ไม่มีลิงก์ จนกว่าจะผูกใหม่
เปลี่ยนโดเมน (NEXT_PUBLIC_APP_URL)แก้ Webhook URL และ Callback URL ใน LINE Developers ให้ตรงค่าที่การ์ดแสดง
ออก token ใหม่ / เปลี่ยน OAวางค่าใหม่ทั้งชุด (ค่าเก่าถูกเขียนทับ) · ถ้าเปลี่ยน OA เป็นบัญชีอื่น line_user_id ที่ผูกไว้ใช้กับ OA ใหม่ไม่ได้ — ลูกค้าต้องผูกใหม่
“ลบค่า LINE…”ปุ่ม/การ์ด LINE หายจากทุกร้านทันที การผูกและคิวคงอยู่ในฐานข้อมูลจนถูก purge 90 วัน

ถ้าเห็นข้อความนี้

ถ้าเห็นข้อความนี้แปลว่าให้ทำ
ระบบยังไม่ได้ตั้ง APP_SECRET จึงเก็บค่าไม่ได้env APP_SECRET ว่างบนเซิร์ฟเวอร์นี้ตั้ง APP_SECRET ตาม ตัวแปรสภาพแวดล้อม แล้ว deploy
กรอกให้ครบทั้ง 4 ค่าtoken / secret / Login ID / Login secret ขาดอย่างน้อย 1 ค่าคัดลอกจาก LINE Developers ให้ครบ
ทดสอบไม่ผ่าน: …LINE ปฏิเสธ token (คัดลอกไม่ครบ / ถูก revoke / channel ผิดชนิด)ออก long-lived token ใหม่จาก channel Messaging API แล้ววางใหม่
โควตาเหลือน้อย — ข้อความจะค้างในคิวเมื่อโควตาหมดเหลือ < 20 ข้อความในเดือนนี้ซื้อแพ็กเกจข้อความ หรือปิดสวิตช์ชั่วคราว

ตรวจเมื่อลูกค้าบอกว่าไม่ได้รับ

  1. การ์ด LINE ของแพลตฟอร์ม: สวิตช์เปิด? “ทดสอบ” ผ่าน? โควตาเหลือ?
  2. ร้านนั้นเป็น PRO ที่ยังไม่หมดอายุ? (ตก FREE = ข้ามข้อความ ไม่ส่งย้อนหลัง)
  3. หน้า “การจอง” ของร้านแถวนั้นมีป้าย “LINE” และ “LINE: ผูกแล้ว …”? ถ้า “LINE: ลูกค้ายกเลิก/บล็อกแล้ว” = ลูกค้าบล็อก OA หรือพิมพ์ยกเลิก
  4. Vercel → Cron line-outbox รันทุกนาที? (ผลลัพธ์ JSON มี sent/failed/skipped)

หัวข้อที่เกี่ยวข้อง

หน้านี้ช่วยได้ไหม