กลับไปที่บทความ
ผมสร้าง AI ตอบ LINE OA อัตโนมัติเอง — ด้วย Gemini ฟรี ไม่ต้องจ่ายรายเดือน
AI และเทคโนโลยีอ่าน 8 นาที·7 พค. 2569

ผมสร้าง AI ตอบ LINE OA อัตโนมัติเอง — ด้วย Gemini ฟรี ไม่ต้องจ่ายรายเดือน

IB

ทีม Inboxly

สร้างเครื่องมือที่อยากใช้เอง

โพสต์ที่แล้วผมพูดถึงการทำ chatbot AI เชื่อม LINE OA — และบอกว่าเชื่อมได้หมดทั้ง Facebook, TikTok, Shopee, Lazada

มีคนถามเข้ามาเยอะมากว่า "ทำได้จริงไหม? ทำยังไง?"

โพสต์นี้จะอธิบาย concept ที่ทำให้มันเป็นไปได้ พร้อมโค้ด MVP ที่รันได้จริง

หน้าจอ demo chatbot ตอบลูกค้าใน LINE OA อัตโนมัติ
หน้าจอ demo chatbot ตอบลูกค้าใน LINE OA อัตโนมัติ

Concept หลัก — ทำไมเชื่อมได้ทุก platform?

ก่อนดูโค้ด ต้องเข้าใจ concept นี้ก่อน

ทุก platform ใช้ระบบ Webhook เหมือนกัน

Webhook คือ "ประตูรับข้อความ" — เมื่อลูกค้าพิมพ์ข้อความ platform จะส่ง HTTP POST มาที่ server ของเรา

ลูกค้าพิมพ์ข้อความ
        ↓
LINE / Facebook / TikTok / Shopee ส่ง POST → server เรา
        ↓
server เราอ่านข้อความ → ส่งให้ AI → ส่งคำตอบกลับ

ทุก platform ทำแบบนี้หมด แค่ รูปแบบข้อมูลที่ส่งมาต่างกัน เท่านั้น

PlatformWebhook format
LINE`events[].message.text`
Facebook Messenger`entry[].messaging[].message.text`
TikTok Shop`message.content`
Shopee / Lazadaรูปแบบของแต่ละ platform
แผนภาพ webhook จากหลาย platform มาที่ server เดียว
แผนภาพ webhook จากหลาย platform มาที่ server เดียว

Adapter Pattern — หัวใจของระบบ

วิธีที่ทำให้รองรับได้หลาย platform โดยไม่ต้องเขียน AI engine ซ้ำ คือ Adapter Pattern

แนวคิดง่ายๆ:

[LINE webhook]     → LINE Adapter    ↘
[Facebook webhook] → Facebook Adapter → AI Engine → ส่งคำตอบกลับ
[TikTok webhook]   → TikTok Adapter  ↗

Adapter ทำหน้าที่แปลง format ของแต่ละ platform ให้เป็นรูปแบบเดียวกัน แล้วส่งต่อให้ AI Engine ตัวเดียว

AI Engine ไม่รู้ว่าข้อความมาจาก platform ไหน — มันแค่รับข้อความ ส่งให้ AI แล้วคืนคำตอบ

MVP นี้สาธิต LINE Adapter ก่อน เพราะเป็น platform หลักของตลาดไทย ตอนสอนครั้งต่อไปจะทำ Facebook และ TikTok ต่อ

มันทำอะไรได้บ้าง (LINE MVP)

เมื่อลูกค้าทักเข้า LINE OA — บอตจะ:

  • รับ webhook จาก LINE
  • โหลด system prompt + ข้อมูลร้าน (Knowledge Base) + ประวัติ 10 ข้อความล่าสุด
  • ส่งให้ AI provider ที่เลือกไว้
  • ส่งคำตอบกลับผ่าน LINE Push API ทันที
  • ทั้งหมดนี้เกิดขึ้นในเวลา 2–4 วินาที โดยเฉลี่ย

    หน้า UI ตั้งค่า AI Provider, System Prompt และ Knowledge Base
    หน้า UI ตั้งค่า AI Provider, System Prompt และ Knowledge Base

    BYOK — ทำไมถึงไม่ต้องจ่ายรายเดือน?

    BYOK = Bring Your Own Key — เอา API key ของตัวเองมาใส่

    แทนที่จะจ่าย subscription ให้แพลตฟอร์ม คุณใช้ key โดยตรงกับ AI provider ค่าใช้จ่ายจึงไปตามที่ใช้จริง

    และที่ดีกว่านั้น — Gemini 1.5 Flash มี Free Tier ให้ใช้ฟรีถึง 1 ล้าน token ต่อวัน (ณ วันที่เขียน) ซึ่งเกินพอสำหรับร้านขนาดเล็ก-กลาง

    รองรับ 3 AI Provider

    ProviderModel แนะนำฟรีไหม?
    Geminigemini-1.5-flash✅ Free Tier มี
    Claudeclaude-haiku-4-5❌ เสียเงิน (ถูก)
    OpenAIgpt-4o-mini❌ เสียเงิน (ถูก)

    สำหรับ MVP — เริ่มด้วย Gemini ก่อนเลย ไม่ต้องควักเงินทดสอบ

    Feature หลักที่อยู่ใน MVP นี้

    Knowledge Base

    ใส่ข้อมูลร้านได้เป็นหมวดๆ เช่น ราคาสินค้า, เวลาทำการ, นโยบายคืนของ — AI จะดึงข้อมูลนี้มาตอบลูกค้าอัตโนมัติ

    Handoff Keywords

    ถ้าลูกค้าพิมพ์คำที่กำหนดไว้ เช่น "คุย", "เจ้าหน้าที่", "ต้องการคน" — AI จะหยุดตอบทันทีแล้ว "ยก" conversation ให้คนจัดการแทน

    Anti-Race Condition

    ระหว่างที่ AI กำลังคิดคำตอบ (2–4 วิ) ถ้าเจ้าหน้าที่กดรับสายก่อน — AI จะทิ้งคำตอบนั้น แทนที่จะส่งซ้อนกัน

    Logs ทุก request

    เก็บ provider, model, tokens ที่ใช้, latency, และ error ไว้ดูย้อนหลังได้ทั้งหมด

    หน้า Logs แสดง token usage และ latency แต่ละ request
    หน้า Logs แสดง token usage และ latency แต่ละ request

    System Prompt — หัวใจที่ทำให้ AI ตอบดี

    สิ่งที่ทำให้ AI ตอบลูกค้าได้เหมือน "พนักงานที่ถูก train มา" ไม่ใช่แค่ model — แต่คือ System Prompt ที่ออกแบบมาดี

    MVP นี้ใช้โครงสร้าง prompt แบบนี้ (แสดง concept ไม่ใช่โค้ดจริง):

    [Role & Tone]
    คุณคือผู้ช่วยของร้าน {ชื่อร้าน} ตอบภาษาไทย สุภาพ กระชับ
    
    [Knowledge Base]
    {ข้อมูลร้านที่ admin ใส่ไว้ เช่น ราคา, เมนู, นโยบาย}
    
    [Rules]
    - ถ้าไม่รู้คำตอบ ให้บอกว่าจะส่งต่อให้เจ้าหน้าที่
    - ห้ามประดิษฐ์ข้อมูลที่ไม่มีใน Knowledge Base
    - ถ้าลูกค้าใช้คำ: {handoff keywords} → ให้หยุดตอบ
    
    [Conversation History]
    {10 ข้อความล่าสุด เพื่อให้ AI จำ context}
    
    [Customer Message]
    {ข้อความที่ลูกค้าส่งมา}

    ทำไมต้องใส่ประวัติการสนทนา?

    ถ้าไม่ใส่ history — AI จะลืมทุกอย่างทุก message เช่น ลูกค้าถามว่า "แล้วถ้าสั่ง 2 ชิ้นล่ะ?" AI จะไม่รู้ว่า "2 ชิ้น" ของอะไร

    MVP นี้ inject 10 ข้อความล่าสุดเข้า prompt ทุกครั้ง ทำให้ AI เข้าใจ context ของการสนทนาได้

    Claude vs Gemini vs OpenAI — ใช้ต่างกันยังไง?

    Gemini 1.5 FlashClaude HaikuGPT-4o Mini
    ราคาฟรี (Free Tier)$0.25 / 1M tokens$0.15 / 1M tokens
    ภาษาไทยดีมากดีที่สุดดี
    ความเร็วเร็วเร็วเร็ว
    เหมาะกับทดสอบ / ร้านเล็กลูกค้าสำคัญทางเลือกสาม

    ข้อสังเกต: Claude Haiku ตอบภาษาไทยได้ natural ที่สุด — ถ้าลูกค้าคุ้นเคยกับภาษาที่เป็นธรรมชาติ แนะนำให้ลอง Claude แม้จะมีค่าใช้จ่ายเล็กน้อย

    สำหรับร้านที่รับข้อความ ~500 ข้อความ/วัน ค่า Claude อยู่ที่ ไม่กี่บาท/เดือน เท่านั้น


    Tech Stack

  • Backend: Go 1.23 + Gin + PostgreSQL 16
  • Frontend: Next.js + React + TypeScript + Tailwind CSS
  • Deploy: Docker Compose (1 คำสั่ง)
  • ขอบเขต MVP — สิ่งที่ยังไม่มี

    บอกตรงๆ ว่านี่คือ MVP ของ LINE — ยังมีสิ่งที่ขาด:

  • ❌ ระบบ login / หลายผู้ใช้
  • ❌ รับรูปภาพ / ไฟล์ (text เท่านั้น)
  • ❌ รองรับหลาย LINE OA พร้อมกัน (1 deploy = 1 OA)
  • ❌ Facebook, TikTok, Shopee, Lazada Adapter (จะสอนใน EP ต่อไป)
  • สิ่งที่มีแล้ว:

  • ✅ ตอบ LINE OA อัตโนมัติด้วย AI
  • ✅ Knowledge Base
  • ✅ Handoff ให้คน
  • ✅ Logs ครบ
  • ✅ ปลอดภัย (key เข้ารหัส AES-256-GCM)
  • ✅ Deploy ด้วย Docker ได้เลย
  • วิดีโออธิบาย

    18:42
    เร็วๆ นี้

    วิดีโอกำลังจะมาเร็วๆ นี้

    IB

    LINE OA AI Chatbot MVP — Demo

    ตัวอย่างการทำงานของระบบ AI ตอบ LINE OA อัตโนมัติ

    อยากสร้างเอง? ใช้ Prompt นี้กับ Claude ได้เลย

    นี่คือ prompt ที่ผมใช้ขอ Claude สร้างระบบนี้ ลอง gen เองได้เลย

    Prompt สร้าง Backend (Go + Gin)

    สร้าง Go backend ด้วย Gin framework สำหรับ LINE OA AI Chatbot โดยมี:
    
    1. POST /webhook/line — รับ LINE webhook events
       - verify X-Line-Signature header (HMAC-SHA256)
       - parse events array, เอาเฉพาะ message.type = "text"
       - ส่ง userId + text ไปยัง AIService
    
    2. AIService interface:
       - method: GenerateReply(ctx, userID, message string) (string, error)
       - โหลด system prompt + knowledge base จาก database
       - ดึง conversation history 10 ข้อความล่าสุดจาก DB
       - inject เข้า prompt แล้วเรียก AI provider ที่เลือก
    
    3. Provider interface รองรับ 3 ตัว:
       - Gemini (gemini-1.5-flash via REST API)
       - Claude (claude-haiku ผ่าน Anthropic SDK)
       - OpenAI (gpt-4o-mini)
       - เลือก provider ได้จาก config ใน DB
    
    4. PostgreSQL tables:
       - ai_config: provider, model, system_prompt, enabled, handoff_keywords[]
       - knowledge_base: id, title, content, created_at
       - ai_message_logs: user_id, direction, content, provider, tokens, latency_ms, created_at
    
    5. API key เก็บเป็น AES-256-GCM ciphertext ใน DB
       - encrypt/decrypt ด้วย AI_ENCRYPTION_KEY จาก env
    
    6. Anti-race condition: ถ้า conversation ถูก assign ให้ agent ก่อน AI ตอบ ให้ทิ้ง reply นั้น
    
    ใช้ Go 1.23, Gin, pgx/v5, เขียน clean architecture แยก handler/service/repository

    Prompt สร้าง Frontend (Next.js)

    สร้าง Next.js 14 + TypeScript + Tailwind CSS หน้า Settings สำหรับ LINE OA AI Chatbot:
    
    Tab 1 — AI Settings:
    - Toggle เปิด/ปิด AI
    - Dropdown เลือก Provider (Gemini / Claude / OpenAI)
    - Input ชื่อ Model
    - Input API Key (แสดงเฉพาะ 4 ตัวท้าย, มีปุ่ม reveal)
    - Textarea System Prompt (multi-line, placeholder บอกว่าเขียนอะไร)
    - Input Handoff Keywords (comma-separated)
    - ปุ่ม Save + ทดสอบ connection
    
    Tab 2 — Knowledge Base:
    - รายการ knowledge items (title + content preview)
    - ปุ่ม Add / Edit / Delete แต่ละ item
    - Modal form สำหรับเพิ่ม/แก้ไข
    - แสดง total tokens estimate
    
    Tab 3 — Logs:
    - ตารางแสดง log: timestamp, user_id, direction, provider, tokens, latency
    - Filter by date range
    - Export CSV
    
    เชื่อม API กับ backend Go ผ่าน fetch, handle loading/error state ครบ

    Prompt เขียน System Prompt สำหรับร้านค้า

    เขียน system prompt สำหรับ AI ที่จะตอบลูกค้าแทนพนักงานของร้าน [ชื่อร้าน]
    
    ข้อมูลร้าน:
    - ประเภทธุรกิจ: [เช่น ร้านอาหาร / ร้านเสื้อผ้า / คลินิก]
    - เวลาทำการ: [เช่น จันทร์-ศุกร์ 9:00-18:00]
    - สิ่งที่ AI ควรทำ: ตอบคำถามเรื่องสินค้า, ราคา, การสั่งซื้อ, นโยบายคืนของ
    - สิ่งที่ AI ห้ามทำ: ยืนยันราคาที่ไม่มีใน knowledge base, ให้ส่วนลดเอง
    
    ต้องการให้ AI:
    1. ตอบภาษาไทยสุภาพ กระชับ ไม่เกิน 3-4 ประโยค
    2. ถ้าไม่รู้คำตอบ บอกว่า "ขอให้เจ้าหน้าที่ติดต่อกลับนะคะ"
    3. ห้ามประดิษฐ์ข้อมูลที่ไม่มีใน knowledge base
    4. ถ้าลูกค้าดูหงุดหงิดหรือร้องเรียน ให้ขอโทษก่อนแล้วโอนให้คน

    หมายเหตุ: Prompt เหล่านี้ใช้สร้าง prototype ได้ แต่โค้ด production ที่ขายจะมี error handling, security, logging, และ edge case ที่ครบกว่านี้มาก — ลอง gen เองก่อนได้เลย ถ้าติดหรืออยากได้ version ที่พร้อม deploy ค่อยมาดูที่ด้านล่าง


    ลองใช้ของจริงก่อน

    ก่อนตัดสินใจ ลองเล่นตัวเต็มได้ก่อน — login, ตั้งค่า AI, ใส่ key Gemini ของตัวเอง, ผูก LINE OA แล้วทดสอบจริงได้เลย

    ลองใช้ของจริงก่อนตัดสินใจซื้อ

    login เข้าระบบได้เลย ตั้งค่า AI Provider, ใส่ API key ของตัวเอง, ผูก LINE OA แล้วลองทดสอบกับลูกค้าจริงได้ทันที

    ทดลองใช้ที่ mvp-chat.inboxly.team

    รับโค้ดและ Setup Guide ฉบับเต็ม

    โค้ดชุดนี้รวม:

  • ✅ Source code ทั้งหมด (Backend Go + Frontend Next.js)
  • ✅ Docker Compose พร้อม deploy
  • ✅ Migration SQL ครบ
  • ✅ System Prompt template ที่ใช้จริงใน production
  • ✅ LINE webhook setup guide
  • ให้ทีมเราช่วย implement ให้

    ปรับให้เข้ากับระบบร้านคุณโดยเฉพาะ — ติดต่อคุยก่อนได้เลย ไม่มีค่าใช้จ่ายในการพูดคุย

    ให้ทีมเราช่วย implement ให้

    ปรับให้เข้ากับระบบร้านคุณโดยเฉพาะ — ติดต่อคุยก่อนได้เลย ไม่มีค่าใช้จ่าย

    ติดต่อผ่าน Facebook

    ถ้าร้านคุณมีทั้ง LINE + Facebook + Instagram + อีกหลายช่องทาง และต้องการระบบที่รองรับทั้งทีม, หลาย OA, พร้อม inbox รวมในที่เดียว โดยไม่ต้องเขียนโค้ดInboxly ทำสิ่งเหล่านั้นได้แล้ววันนี้ ลองได้ฟรีที่ inboxly.team

    IB

    ทีม Inboxly

    สร้างเครื่องมือที่อยากใช้เอง

    ลองใช้ Inboxly ฟรีวันนี้

    Starter ฟรีตลอด · ไม่ต้องใช้บัตรเครดิต

    เริ่มใช้ฟรี