
ผมสร้าง AI ตอบ LINE OA อัตโนมัติเอง — ด้วย Gemini ฟรี ไม่ต้องจ่ายรายเดือน
ทีม Inboxly
ทีม 3 คนไทย
โพสต์ที่แล้วผมพูดถึงการทำ chatbot AI เชื่อม LINE OA — และบอกว่าเชื่อมได้หมดทั้ง Facebook, TikTok, Shopee, Lazada
มีคนถามเข้ามาเยอะมากว่า "ทำได้จริงไหม? ทำยังไง?"
โพสต์นี้จะอธิบาย concept ที่ทำให้มันเป็นไปได้ พร้อมโค้ด MVP ที่รันได้จริง

Concept หลัก — ทำไมเชื่อมได้ทุก platform?
ก่อนดูโค้ด ต้องเข้าใจ concept นี้ก่อน
ทุก platform ใช้ระบบ Webhook เหมือนกัน
Webhook คือ "ประตูรับข้อความ" — เมื่อลูกค้าพิมพ์ข้อความ platform จะส่ง HTTP POST มาที่ server ของเรา
ลูกค้าพิมพ์ข้อความ
↓
LINE / Facebook / TikTok / Shopee ส่ง POST → server เรา
↓
server เราอ่านข้อความ → ส่งให้ AI → ส่งคำตอบกลับทุก platform ทำแบบนี้หมด แค่ รูปแบบข้อมูลที่ส่งมาต่างกัน เท่านั้น
| Platform | Webhook format |
|---|---|
| LINE | `events[].message.text` |
| Facebook Messenger | `entry[].messaging[].message.text` |
| TikTok Shop | `message.content` |
| Shopee / Lazada | รูปแบบของแต่ละ platform |

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 — บอตจะ:
ทั้งหมดนี้เกิดขึ้นในเวลา 2–4 วินาที โดยเฉลี่ย

BYOK — ทำไมถึงไม่ต้องจ่ายรายเดือน?
BYOK = Bring Your Own Key — เอา API key ของตัวเองมาใส่
แทนที่จะจ่าย subscription ให้แพลตฟอร์ม คุณใช้ key โดยตรงกับ AI provider ค่าใช้จ่ายจึงไปตามที่ใช้จริง
และที่ดีกว่านั้น — Gemini 1.5 Flash มี Free Tier ให้ใช้ฟรีถึง 1 ล้าน token ต่อวัน (ณ วันที่เขียน) ซึ่งเกินพอสำหรับร้านขนาดเล็ก-กลาง
รองรับ 3 AI Provider
| Provider | Model แนะนำ | ฟรีไหม? |
|---|---|---|
| Gemini | gemini-1.5-flash | ✅ Free Tier มี |
| Claude | claude-haiku-4-5 | ❌ เสียเงิน (ถูก) |
| OpenAI | gpt-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 ไว้ดูย้อนหลังได้ทั้งหมด

Tech Stack
วิธีเริ่มต้น (5 นาที)
# 1. clone โค้ด
git clone [CODE_LINK]
cd dsclinic
# 2. ตั้งค่า environment
cp .env.example .env
# แก้ค่าใน .env:
# - AI_ENCRYPTION_KEY (generate ด้วย: openssl rand -base64 32)
# - LINE_CHANNEL_ACCESS_TOKEN
# - LINE_CHANNEL_SECRET
# 3. รัน
docker compose up -d
# 4. เปิด UI ที่ http://localhost:3000
# ใส่ Gemini API Key → เปิด AI → เริ่มได้เลยจากนั้นตั้ง webhook URL ใน LINE Developers Console เป็น:
`https://your-domain.com/api/v1/line/webhook`
ขอบเขต MVP — สิ่งที่ยังไม่มี
บอกตรงๆ ว่านี่คือ MVP ของ LINE — ยังมีสิ่งที่ขาด:
สิ่งที่มีแล้ว:
วิดีโออธิบาย
[VIDEO_LINK] — ผมอัดวิดีโอ walkthrough ทุกขั้นตอนตั้งแต่ clone โค้ดจนถึง AI ตอบลูกค้าได้จริง รวมถึงอธิบาย Adapter Pattern ที่ใช้ขยายไป platform อื่น
โค้ด
[CODE_LINK] — ดู README ใน repo สำหรับ setup เพิ่มเติม
ถ้าร้านคุณมีทั้ง LINE + Facebook + Instagram + อีกหลายช่องทาง และต้องการระบบที่รองรับทั้งทีม, หลาย OA, พร้อม inbox รวมในที่เดียว โดยไม่ต้องเขียนโค้ด — Inboxly ทำสิ่งเหล่านั้นได้แล้ววันนี้ ลองได้ฟรีที่ inboxly.team
The Inboxly team
A team of 3 from Thailand