Mini Project: n8n + LINE Chatbot
สร้าง Chatbot ตอบคำถามลูกค้า
Mini Project: n8n + LINE Chatbot
สร้าง Chatbot ตอบคำถามลูกค้า

Connect with me and follow our journey: Linkedin, Facebook
สวัสดีครับ 👋 ยินดีต้อนรับกลับมาสู่ซีรีส์ AI Automation ที่ผมตั้งใจทำขึ้นเพื่อแบ่งปันประสบการณ์จริงในการสร้าง Automation Tools ที่สามารถนำไปใช้ได้ทั้งในชีวิตประจำวันและการทำงาน
ที่ผ่านมาเราได้เรียนรู้หลายหัวข้อแล้ว เช่น
make.com
- EP.1: ระบบจัดการ Leads อัตโนมัติ
- EP.2: ระบบรายงาน Leads ที่ยังไม่ได้ติดต่อเข้า LINE
- EP.3: รวมไอเดียเด็ดพร้อม Tips & Tricks
- EP.4: สร้าง LINE Chatbot ด้วย OpenAI ผ่าน Make.com
n8n
- EP1: ทำความรู้จัก และวิธีติดตั้ง Hosting ฉบับจับมือทำ
- EP2: มาสร้าง AI Agent ตัวแรกกันครับ
- EP3: สร้าง AI Automation ด้วย n8n + Google Docs, Sheets, Drive และ Gmail
- EP4: สร้าง Website ดูเบอร์มงคล + ตอบคำถามด้วย Gen AI
ใน Mini Project นี้ เราจะมาลองสร้าง LINE Chatbot ที่สามารถตอบคำถามลูกค้าได้อัตโนมัติ โดยใช้ n8n มาช่วยจัดการ Workflow และเชื่อมต่อกับ AI Model (เช่น Gemini หรือ ChatGPT)
Step 1: ติดตั้งบน Cloud Provider ด้วย Render.com
1.1) บน Railway
- ควรเริ่มจากสมัคร Github ก่อน แล้วสมัคร Railway ผ่าน Github อีกที
- เข้าไปที่ https://railway.com/new → ใครที่พึ่งสมัครจะได้ใช้งาน 30 วันฟรี แต่ถ้าใครสมัครแล้ว จะมีรายเดือน 5$ (5$ คือ minimum ถ้าใช้เกิดก็จ่ายส่วนต่าง)

- Click รูป Profile → Workspace Settings → General → เลือก Preferred Deployment Region เป็น Singapore แล้วกด Update Region

- Click Logo ด้านบน จะกลับมาที่หน้าหลัก แล้วเลือก + New

- เลือก Deploy a template

- เลือก N8N (w/ workers) → Deploy

- กด Deploy ถ้าขึ้นเครื่องหมายถูกทั้ง 4 อันแปลว่าเรียบร้อย

- กดไปที่ Primary → จะได้ Link → กดเข้าไปที่ Link

- สมัครสมาชิกให้เรียบร้อย (สมัครเสร็จจะมี Email → กด Activate License Key ด้วยนะ)

- เท่านี้ก็เรียบร้อย

1.2) บน Render (เผื่อใครสนใจ ไม่มีส่วนเพิ่ม, Free Tier ผมเปิดไม่ได้นะ ถ้าจะทำให้ใช้ 7$)
- เข้าไปที่ https://render.com/

- สมัครใช้งานให้เรียบร้อย → จากนั้นกด skip

- กด Deploy a Web Service
(หรืออาจจะกด + Create new project → ใส่ชื่อ → Web Services)

- เลือก Existing Image

- มาที่ https://n8n.io/ → Self-host n8n

- เลือก Docker → เลื่อนลงมาในหัวข้อ Using with PostgreSQL → นำ Code บรรทัดสุดท้ายมา docker.n8n.io/n8nio/n8n

- เอาไปวางที่ Image URL → กด Connect

- ใส่ชื่อ และ เลือก Region

- ถ้าอยาก Free ก็เลือก Free แต่ถ้าให้แนะนำ เลือก 7$ / month ก็ดีเพราะจะสามารถลองรับ Auto-Post, Online-Chatbot หรือถ้าใครมี Traffic เยอะก็ต้องเลือกขนาดที่ใหญ่ขึ้น (แพงขึ้น)
Note: ผมลองแบบไม่เสียเงินแล้วไม่ผ่าน ผมเลยไม่ได้ใช้วิธีนี้ต่อนะครับ (แต่จะเขียนให้จบเผื่อใครอยาก Host ที่ Web นี้)

- กด Deploy Web Service

- เราก็จะได้ URL มา

- เมื่อ Deploy เสร็จ ก็จะสามารถเข้าใช้งานได้ จะได้ Link มา แต่ยังเป็นบนเครื่องนะ

- เลือก Environment → + Add
- N8N_PROTOCOL:https
- WEBHOOK_URL:ใส่ link จากด้านบน
- Save and Deploy

- ถ้าสมัครแบบเสียเงิน แนะนำให้เพิ่ม Disks เข้าไปด้วย เป็นแบบ 1GB ก็พอ
สำหรับใคร Deploy ไม่สำเร็จ ก็ใช้ Local-Host Run ไปก่อนถ้าใครทำสำเร็จ
- ตัวอย่าง Link จาก Railway Host:
https://primary-production-xxxx.up.railway.app/home/workflows - ตัวอย่าง Link จาก Render Host:
https://n8n-testchatbot-20250812.onrender.com/webhook-test/Chatbot_test_20250812 - ตัวอย่าง Link จาก Local Host:
http://localhost:5678/webhook-test/Chatbot_test_20250812(ถ้าให้จะใช้ Local Host ต้องไปทำ Step สร้าง https link ด้วย Ngrok ก่อนนะครับ)
Step 2: สร้าง Line Chatbot
- ไปที่ Line Developer
- กด
Create ที่ Provider→ ตั้งชื่อ (ในที่นี้ผมใช้Chatbot_test_20250812) → กด Create

- เลือก
Create a Messaging API channel

- กด
Create a LINE Official Account→ จะไปที่ Line Official Account

- กรอกข้อมูลต่างๆให้เรียบร้อย

- กด เสร็จสิ้น

- ถ้าถึงหน้านี้แปลว่า ok

- ไปที่ Line Official Account → เลือก Account ที่พึ่งสร้างไป (ถ้ามีถามข้อตกลง ให้กด ยอมรับ ไป)

- ไปที่ Setting → Messaging API → Enable Messaging API

- เลือก Provider → กด Agree → ok → ok

- ถ้าขึ้นหน้านี้แปลว่า ok

Step 3: Set up Chatbot in n8n
- Add Webhook

- เปลี่ยนชื่อ Path เสร็จแล้วอย่าลืม Copy Link (โดยการ Click)

- นำ Link ที่ได้ไปวางใน Line Official Account

- ไปที่ Response settings แล้วเปิด
Webhooks

- กลับไปที่ n8n → Webhook setting เปลี่ยนจาก Get → Post → กด Listen for test event

- ลองพิม Chat ทดสอบใน Line

- จะเห็นว่า n8n ได้รับ information แล้ว
(ถ้าใครไม่ได้ลองกด save ใน n8n แล้วกด Listen for test event อีกที)

- กด + แล้วเลือก Edit

- ลาก 1)ข้อความของเรา และ 2) Reply Token เข้ามาที่ Fields to Set → เปลี่ยนชื่อเป็น
chat_textและreply_token→ กด Test

การทำแบบนี้ จะทำให้เราดูค่าง่ายขึ้น
- Add
AI Agent

- เลือก Define below → แล้วกด Back to canvas ที่มุมซ้ายบน

- กด + ที่ Chat Model → เลือก
Generative AI Modelที่ต้องการ (ในที่นี้ขอเลือกเป็น Google Gemini Chat Model)

สำหรับคนที่เลือก ChatGPT
- ไปที่ https://platform.openai.com/settings/organization/billing/overview → Log In ให้เรียบร้อย → ใส่ชื่อ Organization name และ What best describes you? → กด Create organization

- ข้าม Invite team ไปโดยกด I’ll invite my team later
- กรอก API key name และ Project name → กด Generate API Key

- Copy Key เก็บไว้ (อาจวางใน Notepad ก็ได้) แล้วกด Continue

- เลือกจำนวนเงินที่ต้องการ → กด Purchase credits → กรอกข้อมูลการชำระเงินให้เรียบร้อย

- มาที่ https://platform.openai.com/settings/organization/billing/overview → กด Billing แล้วเลือก Usage limits

- Edit budget ตามที่ต้องการ

- ไปที่ API keys แล้วเลือก + Create new secret key

- ใส่ชื่อ Project แล้วกด Create secret key → Copy เก็บไว้

สำหรับคนที่เลือก Gemini Model
- ไปที่ https://aistudio.google.com/app/apikey → กด Get API key

- กด Create API Key → ใส่ชื่อ Project ที่ต้องการ (หรือเลือก Project ที่มีอยู่) → กด Create API key in existing project → Copy API key ที่ได้มาเก็บไว้

กลับมาต่อที่ n8n
- กด Create Credential

- นำ API_Key ที่ได้มาวาง → กด Save

- ผมปรับ Model เป็น Gemini 2.5 Flash (ราคา Gemini, ราคา GPT)

- ในส่วนของ Memory เลือก Simple Memory

- ตั้งค่าตามนี้
- Session ID:Define below
- Key:{{ $(‘Edit Fields’).item.json.user_id }}
- Context Window Length:5

(Optional) เพิ่มความสะดวกในการ Test ครั้งต่อไป: ถอด Webhook ออกแล้วใส่ Chat Trigger เพื่อจะได้พิมข้อความในนี้ได้เลย (อย่าลืมไปปรับ parameter อื่นๆด้วย) → ถ้าพอใจแล้วเปลี่ยนกลับมาที่ Webhook แบบเดิม

- ในส่วนของ
AI Agent

🏢 System Prompt: Donato Residence Virtual Assistant
You are Donato Residence Virtual Assistant, a friendly and professional rental consultant for Donato Residence apartments in Bangkok.
This is the customer’s question: {{ $json.chat_text }}
🎯 Your Role & Tone
- Act as a knowledgeable rental consultant.
- Tone: Warm, polite, concise, professional.
- Bilingual: Support Thai and English (respond in the language the customer uses).
- Focus exclusively on Donato Residence apartments (do not answer unrelated topics).
🏠 Knowledge Base: Donato Residence Information
📍 Location
- Bangkok, ใกล้ BTS ศาลาแดง และ MRT สีลม
- ใกล้ห้างสรรพสินค้าและร้านสะดวกซื้อ
🏘️ Room Types - Studio 25 ตร.ม. — THB 25,000 / month
- 1 Bedroom 50 ตร.ม. — THB 40,000 / month
🛋️ Amenities (ทุกห้องมี) - แอร์
- ตู้เย็น
- ทีวี
- เครื่องทำน้ำอุ่น
📑 Lease Terms - สัญญาขั้นต่ำ: 1 ปี
- มัดจำ: 2 เดือน + ล่วงหน้า: 1 เดือน
- รวมค่าส่วนกลางแล้ว (ค่าน้ำ–ไฟตามมิเตอร์จริง)
- ไม่อนุญาตให้เลี้ยงสัตว์
- เข้าอยู่ได้ทันที
📞 Contact - Phone: 081-234-5678
- LINE: @DonatoResidence
- Email: donato.residence@email.com
💬 FAQ Reference
ค่าใช้จ่าย & สัญญา
- ราคานี้รวมอะไรบ้าง? → รวมค่าส่วนกลาง ค่าน้ำ–ไฟคิดตามมิเตอร์
- มัดจำ/ล่วงหน้าเท่าไหร่? → มัดจำ 2 เดือน + ล่วงหน้า 1 เดือน
- ต่อสัญญา/ปรับราคาปีถัดไปอย่างไร? → ต่อสัญญารายปี เงื่อนไขและราคาปรับตามประกาศ แจ้งล่วงหน้าก่อนครบสัญญา
- ยกเลิกสัญญาก่อนกำหนดได้ไหม? → เป็นไปตามเงื่อนไขในสัญญา (อาจมีค่าปรับ/ริบมัดจำ)
- วิธีชำระค่าเช่า? → โอนเงิน/พร้อมเพย์
สิ่งอำนวยความสะดวก - มีอินเทอร์เน็ตไหม? → ไม่มีในแพ็กเกจ แนะนำใช้ซิมหรือติดตั้งเพิ่ม
- มีบริการแม่บ้านไหม? → มี, 1,500 บาท/เดือน ทำความสะอาดสัปดาห์ละ 1 ครั้ง
- มีเครื่องซักผ้า/บริการซักรีดไหม? → มีบริการซักผ้าโดยแม่บ้าน (ติดต่อเพิ่มเติมที่นิติบุคคล)
การอยู่อาศัย - พักได้กี่คน? → 25 ตร.ม. = ไม่เกิน 2 คน / 50 ตร.ม. = ไม่เกิน 3 คน
- ที่จอดรถมีไหม? → มี คันละ 1,500 บาท/เดือน (ที่จอดประจำ)
- สูบบุหรี่ได้ไหม? → ห้ามในห้อง, ระเบียงตามกฎนิติบุคคล
- ทำอาหารได้ไหม? → ได้ แต่เฉพาะแบบเบา ๆ ต้องระบายอากาศ และรักษาความสะอาด
- ผู้มาเยือน/ค้างคืนได้ไหม? → ได้ตามสมควร แต่ไม่เกินจำนวนผู้พักที่กำหนด
บริการอื่น ๆ - การบำรุงรักษา/แจ้งซ่อม → แจ้งผู้ให้เช่าหรือนิติบุคคล ผ่านโทร/LINE
- รับพัสดุได้ที่ไหน? → เคาน์เตอร์/ล็อบบี้ของนิติบุคคล
- เอกสารที่ใช้ทำสัญญา? → สำเนาบัตรประชาชน/พาสปอร์ต + หลักฐานรายได้/งาน + ข้อมูลติดต่อฉุกเฉิน
ความปลอดภัย & ทำเล - มีมาตรการความปลอดภัยอะไรบ้าง? → รปภ. 24 ชม., CCTV, Keycard Access
- เวลาเงียบสงบ? → ตามกฎนิติบุคคล (ช่วงกลางคืน)
- ทำเล/การเดินทาง? → ใกล้ BTS ศาลาแดง, MRT สีลม, ห้างและร้านสะดวกซื้อ
การเข้าอยู่ - เข้าอยู่ได้เมื่อไหร่? → เข้าอยู่ได้ทันที
- นัดชมได้อย่างไร? → จองคิวล่วงหน้า 1 วัน โทร 081-234-5678 หรือ LINE @DonatoResidence
⚙️ Rules of Interaction
- ตอบชัดเจนและเป็นมิตร ใช้ bullet points หรือย่อหน้าไม่ยาวเกินไป
- ถ้าคำถามเกี่ยวกับห้องพัก ราคา ทำเล เงื่อนไข → ใช้ข้อมูลใน Knowledge Base / FAQ
- ถ้าผู้ใช้สนใจนัดชม → แนะนำช่องทางติดต่อ (Phone, LINE, Email)
- ถ้ามีคำถามที่ไม่เกี่ยวข้อง (เช่น เรื่องการเมือง, อพาร์ทเมนต์อื่น) → ปฏิเสธอย่างสุภาพ พร้อม redirect เช่น:
"ฉันสามารถให้ข้อมูลได้เฉพาะเกี่ยวกับ Donato Residence เท่านั้น คุณสนใจอยากทราบเรื่องห้องพัก ราคา หรือการนัดชมใช่ไหมครับ?" หรือ
“I can only provide information about Donato Residence. Would you like to know about our rooms, pricing, or booking a visit?”
ภาษา: ถามภาษาไทย → ตอบไทย / ถามอังกฤษ → ตอบอังกฤษ
- Add
Codeเข้าไปหลังAI Agent

return [{
json: {
replyToken: $json.replyToken,
output: String($json.output || "")
.trim()
.replace(/\n/g, "\n") // escape newline
.replace(/"/g, '\"') // escape double quotes
}
}];
- Add
HTTP Request

- กด
Import cURL→ ใส่ code ด้านล่างเข้าไปแล้วกดImport

curl -X POST https://api.line.me/v2/bot/message/reply \
-H "Content-Type: application/json" \
-H "Authorization: Bearer {CHANNEL_ACCESS_TOKEN}" \
-d '{
"replyToken": "{REPLY_TOKEN}",
"messages": [
{
"type": "text",
"text": "สนใจรายละเอียดส่วนไหนคะ?",
"quickReply": {
"items": [
{ "type": "action", "action": { "type": "message", "label": "ดูห้องว่าง", "text": "ขอรายละเอียดห้องว่าง" } },
{ "type": "action", "action": { "type": "message", "label": "ราคา", "text": "ขอทราบราคาเช่า" } },
{ "type": "action", "action": { "type": "message", "label": "เงื่อนไขเช่า", "text": "ขอทราบเงื่อนไขการเช่า" } },
{ "type": "action", "action": { "type": "uri", "label": "นัดชม", "uri": "https://forms.gle/YOUR_GOOGLE_FORM_ID" } }
]
}
}
]
}'
- ไปที่ https://developers.line.biz/console/: ไปที่ Admin ที่สร้างไว้ เข้ามาหัวข้อ
Messaging APIไปด้านล่างเพื่อ GenerateChannel access token

- กลับมาที่ n8n: ใส่
Channel secretเข้าไปหลังคำว่าBearer

- นำ
outputกับreply_tokenไปแทนที่testกับ{REPLY_TOKEN}


- ไปที่ https://manager.line.biz/: เพื่อปิด
Auto-response messages

ถ้าอยากปรับเป็น Production
- Click Webhook

- เลือก Production URL → Copy Link

- ไปที่ Line Official Account Manager → แก้ไข Webhook URL

- ไปที่ n8n → เปิด Active

Step 3: เพิ่ม Human in the loop (เขียนแบบรวบรัด)

เผื่อไม่ให้ Blog ยาวเกินไป เราจะอธิบายจากภาพจบ ไล่ไปทีละ Node

- Add
Google Sheets: Append or update row in sheetมาด้านหลังHTTP Request

- กด
+ credential

- เข้าไปที่ Google Cloud Console → เข้า
Google Drive API

- กด
Enable(ถ้าขึ้น Manage แปลว่าเรียบร้อยแล้ว)

- ทำแบบเดิมอีกที กับ
Google Sheet APIและGoogle Doc API


- ไปที่
APIs & Services→Credentials

- เลือก
+ Create credentials→OAuth client ID

- เลือก
Web application→ ตั้งชื่อที่ต้องการ

- ในช่อง
Authorized JavaScript origins→ นำ URLs จาก n8n ไปวาง

- ในช่อง
Authorized redirect URLs→ นำOAuth Redirect URLไปวาง

- กด
Create

- Copy
Client IDกับClient secret

- นำ
Client IDกับClient Secret→Save

- กด
Sign in with Google(กดดำเนินการต่อ และ เลือกทั้งหมด)


ถ้าใครพึ่งทำครั้งแรก แนะนำให้ทำต่อให้ครบทั้ง Google Doc และ Google Drive
- กด
+→Credential

- ค้นหา
Google Drive→Continue

กลับมาต่อกัน
- สร้าง
Google Sheetสำหรับเก็บ Data

- มาที่ n8n →
Google sheet: Append or update row in sheet→ เลือก File ที่เราสร้างไว้ และ Link ข้อมูลต่างๆให้ครบ

- เพิ่ม
Ifเข้าไปหน้า AI Agent → เพื่อ Detect ว่าเรียก แอดมิน หรือไม่

- เพิ่ม
HTTP RequestและGoogle sheet: Append or update row in sheet→ เพื่อให้ตอบกลับไปว่า “รอสักครู่นะคะ เดี๋ยวรีบตามแอดมินมาให้ค่ะ”

- เพิ่ม node ต่างๆตามด้านล่าง ใครเป็นผู้ Chat เข้ามา หรือเป็น new user

- ถ้าเป็น user ที่มี status: Call Admin ให้ Chatbot ไม่สามารถตอบได้ (รอ admin มาตอบ)

- ผลลัพธ์ที่ได้

สนทนาปกติ

เมื่อลูกค้าพิม “ติดต่อ Admin” + Admin มาตอบ
(Optional): การเพิ่ม RAG

- เปิด Workflow ใหม่
- Add Trigger manually

- Add: Google Docs: Get a document

- เราต้องมี Document ใน Google Doc (ผมจำลองเป็นข้อมูลผู้เช่าแล้วกันนะครับ) → Copy Document ID

- กลับมาที่ n8n → วาง Doc ID ลงไป
- (Under Construction)
โปรเจกต์นี้ทำให้เราเห็นว่า n8n + LINE Chatbot + AI Agent สามารถสร้างบอทตอบคำถามลูกค้าได้จริง พร้อมฟีเจอร์ Human-in-the-loop สำหรับโอนต่อให้แอดมินเมื่อต้องการ
นี่เป็นเพียงจุดเริ่มต้น — คุณสามารถต่อยอดด้วยการเพิ่ม FAQ, เก็บข้อมูลใน Google Sheets, หรือใช้ RAG จาก Google Docs เพื่อทำให้บอทฉลาดและตอบได้ใกล้เคียงจริงยิ่งขึ้น
📌 เหมาะสำหรับธุรกิจที่ต้องการ ยกระดับบริการลูกค้า ลดภาระทีมงาน และสร้างประสบการณ์ที่ดียิ่งขึ้น
Data Science Explore the world of data science with Donato_Story
Dashboard Discover the power of data visualization with Donato_Story
Donato_Journey Join me on my journey (Thai version)
Course_Review Discover the training courses with Donato_Story (Thai version)
Let’s Connect!
Your thoughts and feedback are invaluable. Feel free to share them in the comments or connect with me on
- 🌐 Medium: medium.com/donato-story
- 📘Facebook: web.facebook.com/DonatoStory
- 💼 Linkedin: linkedin.com/in/nattapong-thanngam
Originally published on Medium
Related
Make.com Workflow Inspiration & Pro Tips
EP3: รวม Workflow ไอเดียเด็ด พร้อม Tips & Tricks ต่างๆ
Corrective RAG
Data Mastery Series — Episode 53: RAG ที่ “คิด” ก่อน “ตอบ” และ “แก้ไข” เมื่อผิดพลาด
CSS 101
เปลี่ยนหน้าเว็บ HTML ธรรมดา ให้สวยสะดุดตาด้วย CSS (ฉบับมือใหม่)
Everyday Text Use Cases with ChatGPT (EP2)
การประยุกต์ใช้ Generative AI ในชีวิตประจำวัน