n8n Thai
by n8n Thai

จัดการ LINE Rich Menu อัตโนมัติด้วย n8n

ใช้ n8n เชื่อม LINE Messaging API เพื่อสร้าง เปลี่ยน และลบ Rich Menu อัตโนมัติ รองรับ Rich Menu ตาม user segment

จัดการ LINE Rich Menu อัตโนมัติด้วย n8n

Rich Menu คือแถบเมนูที่แสดงอยู่ด้านล่างหน้าต่าง chat ใน LINE OA ช่วยให้ผู้ใช้เข้าถึงตัวเลือกสำคัญได้ทันทีโดยไม่ต้องพิมพ์ บทความนี้อธิบายวิธีจัดการ Rich Menu ผ่าน n8n ตั้งแต่การสร้างไปจนถึงการสลับ menu ตาม user แบบอัตโนมัติ

Rich Menu คืออะไร?

Rich Menu เป็นรูปภาพที่มี “hotspot” ซึ่งผู้ใช้สามารถกดได้ แต่ละ hotspot กำหนด action ได้ เช่น:

  • ส่งข้อความเฉพาะ (Postback)
  • เปิดหน้าเว็บ (URI)
  • โทร
  • เปิด LINE app ส่วนต่างๆ

ตัวอย่าง Rich Menu ที่ธุรกิจใช้:

  • เมนูหลัก: ดูสินค้า, ติดต่อเรา, เช็คออเดอร์, โปรโมชัน
  • เมนูสมาชิก: คะแนนสะสม, ประวัติการซื้อ, ตั้งค่า
  • เมนูพิเศษ (ช่วง sale): Banner โปรโมชัน พร้อมลิงก์ไปหน้า sale

ทำไมถึงจัดการ Rich Menu ผ่าน n8n?

LINE Console ให้ตั้ง Rich Menu แบบ static ได้ แต่ n8n ทำให้ทำสิ่งเหล่านี้อัตโนมัติ:

  • เปลี่ยน Rich Menu ตาม user — แสดงเมนูต่างกันสำหรับสมาชิกใหม่ vs สมาชิกเก่า
  • สลับ menu ตาม campaign — เปิด sale menu อัตโนมัติตามกำหนดการ
  • กำหนด menu ทันทีที่ user follow — ต้อนรับด้วยเมนูที่เหมาะสม
  • ลบ menu เมื่อ campaign สิ้นสุด

LINE Rich Menu API ที่ต้องรู้จัก

ActionEndpointMethod
สร้าง Rich Menu/v2/bot/richmenuPOST
Upload รูป Rich Menu/v2/bot/richmenu/{id}/contentPOST
กำหนด default menu/v2/bot/user/all/richmenu/{id}POST
กำหนด menu ให้ user คนเดียว/v2/bot/user/{userId}/richmenu/{id}POST
ดึงรายการ menu ทั้งหมด/v2/bot/richmenu/listGET
ลบ Rich Menu/v2/bot/richmenu/{id}DELETE

ขั้นตอนที่ 1: เตรียมรูปภาพ Rich Menu

Rich Menu ต้องการรูปภาพตามข้อกำหนดของ LINE:

  • ขนาด: 2500x1686 px (full size) หรือ 2500x843 px (half size)
  • รูปแบบไฟล์: JPEG หรือ PNG
  • ขนาดไฟล์: ไม่เกิน 1 MB

ออกแบบรูปด้วย Figma หรือ Canva แล้ว export เป็น JPEG ก่อนนำมาใช้

ขั้นตอนที่ 2: สร้าง Rich Menu ด้วย n8n

เพิ่ม HTTP Request Node พร้อมข้อมูล:

  • URL: https://api.line.me/v2/bot/richmenu
  • Method: POST
  • Headers: Authorization: Bearer YOUR_TOKEN, Content-Type: application/json
  • Body (JSON):
{
  "size": {
    "width": 2500,
    "height": 1686
  },
  "selected": true,
  "name": "Main Menu",
  "chatBarText": "เมนูหลัก",
  "areas": [
    {
      "bounds": { "x": 0, "y": 0, "width": 833, "height": 843 },
      "action": {
        "type": "uri",
        "label": "ดูสินค้า",
        "uri": "https://yourshop.com/products"
      }
    },
    {
      "bounds": { "x": 833, "y": 0, "width": 833, "height": 843 },
      "action": {
        "type": "message",
        "label": "เช็คออเดอร์",
        "text": "เช็คออเดอร์"
      }
    },
    {
      "bounds": { "x": 1666, "y": 0, "width": 834, "height": 843 },
      "action": {
        "type": "uri",
        "label": "ติดต่อเรา",
        "uri": "https://yourshop.com/contact"
      }
    }
  ]
}

Response จะมี richMenuId ที่ต้องใช้ในขั้นตอนต่อไป

ขั้นตอนที่ 3: Upload รูปภาพ

เพิ่ม HTTP Request Node อีกตัวสำหรับ upload รูป:

  • URL: https://api-data.line.me/v2/bot/richmenu/{{ $json.richMenuId }}/content
  • Method: POST
  • Headers: Authorization: Bearer YOUR_TOKEN, Content-Type: image/jpeg
  • Body: Binary (รูปภาพ)

ใน n8n สามารถใช้ Read Binary File Node เพื่ออ่านรูปจาก local หรือ HTTP Request Node เพื่อดึงรูปจาก URL แล้วส่งต่อ

ขั้นตอนที่ 4: กำหนด Default Rich Menu

HTTP Request:
- URL: https://api.line.me/v2/bot/user/all/richmenu/{{ $json.richMenuId }}
- Method: POST

ทุก user ที่ยังไม่ได้ถูกกำหนด menu เฉพาะจะเห็น menu นี้

Workflow: สลับ Rich Menu อัตโนมัติ

ตัวอย่าง workflow เปลี่ยน menu เมื่อเริ่ม campaign:

Schedule Trigger (ทุกวันจันทร์ 9.00)
  → IF Node (ตรวจว่าอยู่ในช่วง campaign หรือไม่)
  → HTTP Request (กำหนด Sale Rich Menu เป็น default)

Schedule Trigger (วันอาทิตย์ 23.59)
  → HTTP Request (เปลี่ยนกลับเป็น Regular Rich Menu)

Workflow: กำหนด Menu ตาม User Segment

เมื่อ user follow LINE OA:

Webhook (รับ event follow)
  → HTTP Request (ดึง user profile)
  → IF Node (ตรวจสอบ user type จาก database)
  → HTTP Request (กำหนด menu ที่เหมาะกับ user นี้)

URL สำหรับกำหนด menu เฉพาะ user: https://api.line.me/v2/bot/user/{{ $json.userId }}/richmenu/{{ $json.richMenuId }}


ดูบทความที่เกี่ยวข้อง: สร้าง LINE Flex Message สวยๆ | คู่มือ LINE Automation ครบทุกวิธี

อยากเรียน n8n แบบเป็นระบบ ตั้งแต่เริ่มต้นจนสร้าง Workflow ใช้งานจริงได้ ลองดู คอร์สสอน n8n ที่ aiunlock.co

Related posts