ทำ LINE chatbot หรือ webhook ด้วย AI แล้วโฮสต์บน BrewInTH

ทำ LINE chatbot ของร้านด้วย AI: ตอบคำถามจากข้อมูลจริง รับจองลงฐานข้อมูล ส่งสรุปทุกเช้า บน HTTPS ของ BrewInTH พร้อม prompt และจุดที่ทำให้บอทเงียบ
ลูกค้าทักร้านคุณทาง LINE ทุกวันด้วยคำถามเดิม ๆ "เปิดกี่โมง" "มีเมนูอะไร" "จองโต๊ะได้ไหม" คุณตอบเองทั้งวันจนไม่มีเวลาทำงานอื่น ข้อความตอบกลับอัตโนมัติของ LINE OA ก็ช่วยได้แค่ระดับหนึ่ง เพราะมันอ่านข้อมูลจริงของร้านไม่ได้ และบันทึกอะไรลงระบบของคุณไม่ได้
บทความนี้พาทำ LINE chatbot ของตัวเองด้วย AI ที่ตอบคำถามจากข้อมูลจริง รับจองโต๊ะลงฐานข้อมูล และส่งสรุปให้เจ้าของร้านทุกเช้า แล้วโฮสต์บน BrewInTH ที่มี HTTPS ให้อัตโนมัติ หลักการเดียวกันใช้ได้กับ webhook แบบอื่นด้วย เช่น รับแจ้งการชำระเงินหรือรับข้อมูลจากฟอร์มของบริการอื่น
สรุปสั้นก่อนอ่าน
💬 chatbot ของ LINE คือเว็บแอปเล็ก ๆ ที่มี "ที่อยู่ webhook" แบบ HTTPS ให้ LINE ส่งข้อความมาให้
💬 BrewInTH ให้ที่อยู่ HTTPS ทันทีที่สร้างโปรเจกต์ ไม่ต้องตั้ง SSL เอง
💬 Channel secret และ access token เก็บในแท็บ ตั้งค่าแอป ห้ามเขียนลงโค้ด
💬 ต้องตรวจลายเซ็นX-Line-Signatureทุกคำขอ และตอบ LINE กลับให้เร็ว
💬 แพ็กเกจ Free พักแอปเมื่อไม่มีคนเข้าเกิน 3 วัน บอทที่ต้องตอบตลอดควรใช้แพ็กเกจจ่ายเงินแล้วตั้ง "ไม่หลับ"
webhook คืออะไร ทำไม chatbot ต้องมี
webhook คือ "ที่อยู่ที่บริการอื่นเรียกหาเรา" เมื่อมีเหตุการณ์เกิดขึ้น สำหรับ LINE เมื่อมีคนส่งข้อความหา LINE Official Account ของคุณ เซิร์ฟเวอร์ของ LINE จะส่งข้อความนั้นมาที่ที่อยู่ webhook ที่คุณตั้งไว้ แอปของคุณอ่าน คิดคำตอบ แล้วเรียก API ของ LINE เพื่อตอบกลับ

สิ่งที่ webhook ต้องมีคือ ที่อยู่ HTTPS ที่เปิดอยู่ตลอด บนคอมพิวเตอร์ของคุณเองทำไม่ได้ง่าย ๆ เพราะต้องเปิดเครื่องทิ้งไว้และต้องมีใบรับรอง SSL นี่คือส่วนที่ BrewInTH ทำให้: ทุกโปรเจกต์ได้ที่อยู่ของตัวเองแบบ https://ชื่อเว็บ.host.brewinth.net พร้อม HTTPS ตั้งแต่สร้าง และแอปเรียกออกไปหา API ภายนอกได้ทุกพอร์ต (ยกเว้นพอร์ต 25 ที่ใช้ส่งเมลตรง)
ต้องเตรียมอะไรบ้าง
- LINE Official Account ที่เปิดใช้ Messaging API แล้ว ทำผ่าน LINE Official Account Manager และ LINE Developers Console
- Channel secret และ Channel access token จากหน้า Messaging API ของ channel
- บัญชี BrewInTH และ AI coding agent บนคอมพิวเตอร์ (Claude Code, Codex, Cursor หรือ Windsurf)
หน้าจอฝั่ง LINE เปลี่ยนได้เรื่อย ๆ ถ้าเมนูไม่ตรงกับที่เขียนไว้ ให้ดูคู่มือ Messaging API ล่าสุดของ LINE
ทำทีละขั้น
ขั้น 1: สร้างโปรเจกต์บน BrewInTH
สร้างโปรเจกต์ใหม่ เทคโนโลยีเลือก ให้ระบบเลือกให้ (แนะนำ) ฐานข้อมูลเลือก PostgreSQL (ไว้เก็บการจองและประวัติ) ตั้งชื่อเว็บฟรีให้จำง่าย เช่น cafe-bot แล้วกดสร้างลิงก์และ token ส่งให้ AI
ขั้น 2: ใส่ค่าของ LINE ในแท็บตั้งค่าแอป
เปิดแท็บ ตั้งค่าแอป ของโปรเจกต์ แล้วเพิ่มค่า
LINE_CHANNEL_SECRET= Channel secretLINE_CHANNEL_ACCESS_TOKEN= Channel access tokenOWNER_LINE_USER_ID= user ID ของเจ้าของร้าน (ไว้รับสรุป ใส่ทีหลังได้)
ค่าพวกนี้คือกุญแจของบอท ใครได้ไปก็ส่งข้อความในนามร้านคุณได้ ห้ามวางลงในโค้ดหรือในแชตกับใคร ค่าใหม่มีผลเมื่อแอปเริ่มใหม่ จึงให้ AI นำขึ้นอีกรอบหลังแก้ค่า
ขั้น 3: สั่ง AI เขียนบอท
ทำ LINE chatbot ของร้านกาแฟ "บ้านดอกไม้" ด้วย Node.js แล้วนำขึ้น BrewInTH ตามคู่มือในลิงก์
- endpoint POST /webhook รับ event จาก LINE Messaging API
- ตรวจ X-Line-Signature ด้วย HMAC-SHA256 จาก LINE_CHANNEL_SECRET
โดยใช้ raw body ก่อน parse JSON ถ้าลายเซ็นไม่ตรงให้ตอบ 401
- ตอบ HTTP 200 ให้ LINE ทันที แม้ events จะว่าง (ตอนกด Verify)
- ข้อความ "เมนู" "เวลาเปิด" "ที่ตั้ง" ตอบจากข้อมูลในตาราง shop_info
- ข้อความ "จอง" ถามวัน เวลา จำนวนคน ทีละขั้น แล้วบันทึกลงตาราง bookings
จำขั้นของแต่ละคนด้วย userId ในฐานข้อมูล
- ข้อความอื่น ตอบว่าจะให้พนักงานติดต่อกลับ และบันทึกไว้ในตาราง inbox
- ตอบด้วย reply API ใช้ LINE_CHANNEL_ACCESS_TOKEN
- มี GET /health ตอบ 200 และตั้ง healthPath เป็น /health
- เก็บข้อมูลในฐานข้อมูลของโปรเจกต์ อ่านค่าลับจาก environment เท่านั้น
ขั้น 4: ตั้ง webhook ฝั่ง LINE
- ใน LINE Developers Console เปิด channel แล้วไปที่ส่วน Messaging API
- ใส่ Webhook URL เป็น
https://ชื่อเว็บ.host.brewinth.net/webhook - กด Verify ต้องขึ้นว่าสำเร็จ
- เปิด Use webhook
- ใน LINE Official Account Manager ปิดข้อความตอบกลับอัตโนมัติ ไม่อย่างนั้นลูกค้าจะได้คำตอบซ้ำสองชุด

ขั้น 5: ทดสอบและดู log
เพิ่ม LINE OA เป็นเพื่อนจากมือถือ แล้วลองพิมพ์ "เมนู" "จอง" และข้อความแปลก ๆ ถ้าบอทเงียบ เปิดแท็บ บันทึกการทำงาน ของโปรเจกต์ แล้วกด ดึง log ล่าสุด ดูว่ามีคำขอจาก LINE มาถึงไหม ลายเซ็นผ่านไหม หรือเรียก API ของ LINE แล้วได้ error อะไร คัดลอก log ส่งให้ AI แก้ได้เลย
ขั้น 6: ส่งสรุปให้เจ้าของทุกเช้า
ใช้แท็บ งานตามเวลา ของโปรเจกต์ (หรือให้ AI ตั้งให้) รันคำสั่งสรุปการจองของวันนี้ แล้วส่งหา OWNER_LINE_USER_ID ด้วย push API ทุก 8 โมงเช้า ข้อความแบบ push นับโควตาตามแพ็กเกจของ LINE OA ดูรายละเอียดกับ LINE ก่อนส่งให้คนจำนวนมาก
4 เรื่องที่ทำให้บอทเงียบบ่อยที่สุด

- ลายเซ็นไม่ผ่าน ต้องคำนวณจาก raw body ตามที่ LINE ส่งมาทุกไบต์ ถ้า framework แปลงเป็น JSON ก่อนแล้วค่อยแปลงกลับ ลายเซ็นจะไม่ตรง
- ตอบ LINE ช้า ให้ตอบ 200 ก่อน แล้วค่อยทำงานหนัก (เช่น เรียก AI อีกตัวเพื่อแต่งคำตอบ) ตามหลัง reply token ใช้ได้ครั้งเดียวและมีอายุสั้น
- แอปหลับ บนแพ็กเกจ Free แอปจะพักเมื่อไม่มีคนเข้าเลยเกิน 3 วัน ข้อความแรกหลังจากนั้นจะเจอแอปกำลังตื่น (ตอบ 503 ไม่กี่สิบวินาที) LINE อาจไม่ส่งข้อความนั้นซ้ำ บอทที่ต้องพร้อมตลอดให้ใช้แพ็กเกจจ่ายเงิน แล้วตั้ง พักอัตโนมัติ (autosleep) ในแท็บตั้งค่าแอปเป็น ไม่หลับ (ทำงานตลอด)
- ไม่มีหน้า health บอทที่ไม่มีหน้าแรก ระบบจะเช็กความพร้อมที่
/แล้วไม่ผ่าน ให้มีGET /healthตอบ 200 แล้วตั้งเป็น healthPath
ใช้กับ webhook แบบอื่นได้ไหม
ได้ หลักการเหมือนกันทุกเจ้า ไม่ว่าจะเป็นผู้ให้บริการรับชำระเงินที่แจ้งว่ามีคนจ่ายแล้ว ระบบฟอร์มที่ส่งคำตอบมาให้ หรือ GitHub ที่แจ้งเมื่อมีโค้ดใหม่
- ที่อยู่ webhook = ที่อยู่ HTTPS ของโปรเจกต์ + path เช่น
/webhooks/payment - secret สำหรับตรวจลายเซ็นเก็บในแท็บตั้งค่าแอป
- ตรวจลายเซ็นทุกครั้ง อย่าเชื่อข้อมูลเพียงเพราะมันถูกส่งมาที่ที่อยู่ลับ
- ตอบ 2xx ให้เร็ว และทำให้การรับซ้ำไม่เกิดผลซ้ำ (เช่น บันทึก event ID ไว้ ถ้าเคยรับแล้วข้าม)
คำถามที่พบบ่อย
LINE Notify ยังใช้ส่งแจ้งเตือนได้ไหม
LINE Notify ปิดบริการไปแล้ว ถ้าต้องการส่งแจ้งเตือนเข้า LINE ให้ใช้ Messaging API แบบในบทความนี้ (push message หาเจ้าของหรือกลุ่มที่บอทอยู่)
ต้องมีโดเมนของตัวเองไหม
ไม่ต้อง ที่อยู่ HTTPS ของ BrewInTH ใช้เป็น webhook ได้ทันที ถ้าเชื่อมโดเมนของร้านภายหลัง อย่าลืมไปเปลี่ยน Webhook URL ใน LINE ด้วย
ใช้แพ็กเกจ Free ได้ไหม
ทดลองและพัฒนาได้เต็มที่ แต่แอปจะพักเมื่อไม่มีคนเข้าเกิน 3 วัน บอทที่ลูกค้าทักทุกวันมักไม่หลับ แต่ถ้าบอทต้องพร้อม 100% ให้ใช้แพ็กเกจจ่ายเงิน (เริ่มที่ Starter 99 บาทต่อเดือน) แล้วตั้งไม่หลับ
ให้บอทตอบด้วย AI แบบ ChatGPT ได้ไหม
ได้ เก็บ API key ของผู้ให้บริการ AI ไว้ในแท็บตั้งค่าแอป แล้วให้แอปเรียกหลังตอบ 200 ให้ LINE แล้ว ควรจำกัดจำนวนครั้งต่อผู้ใช้ เพื่อไม่ให้ค่าใช้จ่าย AI บานปลาย
ข้อความของลูกค้าเก็บไว้ที่ไหน
ในฐานข้อมูลของโปรเจกต์คุณเอง ซึ่งเป็นข้อมูลส่วนบุคคล ควรเก็บเท่าที่จำเป็นและบอกลูกค้าในนโยบายความเป็นส่วนตัวของร้าน (บทความนี้ไม่ใช่คำแนะนำทางกฎหมาย)
สรุป
LINE chatbot ของตัวเองคือเว็บแอปเล็ก ๆ ที่มีที่อยู่ webhook แบบ HTTPS: สร้างโปรเจกต์บน BrewInTH ใส่ Channel secret และ token ในแท็บตั้งค่าแอป ให้ AI เขียนบอทที่ตรวจลายเซ็นและตอบเร็ว ตั้ง Webhook URL ฝั่ง LINE แล้วทดสอบพร้อมดู log ถ้าบอทต้องพร้อมตลอด ใช้แพ็กเกจจ่ายเงินแล้วตั้งไม่หลับ
