TommyLabsTOMMYLABS
← Playground

LM-11 · คู่มือฟรี · อ่าน 12 นาที

บอทเก็บลีดจาก Messenger ด้วย n8n

คนทักเข้าเพจเยอะจนตอบไม่ทัน ให้บอทรับสายแรก เก็บชื่อ เบอร์ เวลาสะดวก แล้วลง Google Sheet ให้ทีมขายโทรตาม

คู่มือนี้ไม่ได้มีแค่วิธีทำ แต่เล่าจุดที่พลาดได้จริงด้วย เพราะบั๊กส่วนใหญ่ของระบบแบบนี้ไม่ขึ้น error ให้เห็น ระบบรันผ่านปกติแต่ผลไม่ถูก เช่น เขียนข้อมูลซ้ำจนพนักงานโทรซ้ำหาลูกค้าคนเดิม หรือบอทถามเบอร์ซ้ำทั้งที่ลูกค้าให้ไปแล้ว ทุกข้อในคู่มือนี้เกิดขึ้นจริงตอนสร้าง

คลิปประกอบคู่มือนี้ ดูวิธีทำทั้งระบบตั้งแต่ต้นจนจบ

ตัวต่อระบบ

n8n

ช่องทางลูกค้า

Messenger

โมเดลที่ใช้

GPT-5.4 Mini

ที่เก็บลีด

Sheets

1

ปัญหา

ระบบนี้แก้อะไร

เพจธุรกิจมีคนทักเข้ามาเยอะจนตอบไม่ทัน ลูกค้ารอนาน แล้วลีดที่ควรได้ก็หลุดไป

งานที่ทำซ้ำทุกวันคือถามข้อมูลชุดเดิม 3 อย่าง ชื่อ เบอร์โทร และเวลาที่สะดวกให้โทรกลับ จากนั้นจดลงที่ไหนสักแห่งให้ทีมขายโทรตาม งานแบบนี้เหมาะกับการให้บอททำแทน เพราะรูปแบบตายตัวและไม่ต้องใช้วิจารณญาณมาก

  • ▸ตอบคำถามเรื่องบริการได้
  • ▸ค่อยๆ ขอข้อมูลทีละอย่าง ไม่ยิงรัว 3 คำถาม
  • ▸จำได้ว่าคุยอะไรไปแล้ว
  • ▸ได้ครบเมื่อไหร่ บันทึกลง Google Sheet อัตโนมัติ

หลักคิด

บอทไม่ได้มาแทนพนักงานขาย แต่มาทำหน้าที่รับสายแรก เก็บข้อมูลให้ครบแล้วส่งต่อให้คนโทรไปปิดการขาย

2

ภาพรวม

ข้อความเดินทางยังไง

หน้าจอ workflow ใน n8n แสดง Webhook ต่อเข้า Normalize Message อ่าน Google Sheet และ Lead Capture Agent
หน้าตาจริงของ workflow ใน n8n เส้นบนคือขา verify กับ Facebook (ใช้ครั้งเดียวตอนตั้งค่า) เส้นล่างคือทางเดินของข้อความจากลูกค้า(แตะที่ภาพเพื่อดูเต็ม)
เส้นทางข้อความ
ลูกค้าทักเข้าเพจ
  |
Facebook ส่ง webhook มาที่ n8n
  |
  +-- GET  -> ตรวจ verify token -> ตอบ challenge
  |           (ใช้ตอนตั้งค่าครั้งแรกเท่านั้น)
  |
  +-- POST -> ข้อความจริงจากลูกค้า
                |
          Normalize Message
          (ดึง senderId + ข้อความ)
                |
          อ่าน Google Sheet
          (คนนี้เคยให้ข้อมูลอะไรไว้แล้ว?)
                |
          AI Agent  <-- Memory (ผูกกับ PSID)
                    <-- Output Parser
                |
          ได้ครบ 3 อย่างแล้วหรือยัง?
                |
        +-------+-------+
        | ครบพอดี        | ยังไม่ครบ
        |               |
  บันทึก Sheet          |
        +-------+-------+
                |
        ส่งข้อความกลับเข้า Messenger

หัวใจอยู่ที่ AI Agent ซึ่งทำสองอย่างพร้อมกันในรอบเดียว คือแต่งข้อความตอบลูกค้า และสกัดข้อมูลลีดที่ได้มาจนถึงตอนนี้ออกมาเป็น JSON ทำให้ไม่ต้องเรียก AI สองครั้ง ประหยัดทั้งเวลาและค่าใช้จ่าย

3

หัวใจ

กันเขียนข้อมูลซ้ำ

นี่คือจุดที่คนทำระบบแบบนี้มักมองข้าม และเป็นจุดที่ทำให้ลูกค้ารำคาญที่สุด

สมมติลูกค้าให้ข้อมูลครบแล้ว จากนั้นคุยต่ออีก 5 ข้อความ ถ้าเราเช็คแค่ว่าข้อมูลครบหรือยัง คำตอบจะเป็นครบทั้ง 5 ครั้ง แปลว่าระบบจะเขียนลง Sheet ซ้ำอีก 5 รอบ

  • ▸ยิง Google Sheets API ฟรีๆ ทุกข้อความ
  • ▸พนักงานแก้สถานะเป็นโทรแล้ว แล้วถูกระบบเขียนทับกลับ กลายเป็นโทรซ้ำหาลูกค้าคนเดิม
  • ▸เวลาที่บันทึกเด้งตลอด ดูไม่ออกว่าได้ลีดมาตอนไหนจริงๆ
ค่าความหมายใช้สั่งเขียนได้ไหม
isCompleteสถานะ ตอนนี้ข้อมูลครบหรือยัง พอครบแล้วเป็น true ค้างตลอดไม่ได้
justCompletedเหตุการณ์ ข้อความนี้ทำให้ครบพอดีหรือเปล่า เป็น true แค่ครั้งเดียวใช้ตัวนี้

เราให้ AI ตอบกลับมาทั้งสองค่า แล้วให้เงื่อนไขเช็คที่ justCompleted ผลคือ 1 ลีดเขียน Sheet ครั้งเดียว ลูกค้าคุยต่ออีกกี่ข้อความก็ไม่เขียนซ้ำ โดยไม่ต้องเพิ่ม node หรือเรียก API เพิ่มเลย

ชั้นกันที่สอง

justCompleted พึ่งการตัดสินใจของ AI ซึ่งอาจพลาดได้ เลยกันอีกชั้นด้วยการไม่ส่งคอลัมน์ status ไปใน mapping เลย คอลัมน์นี้เป็นของพนักงานล้วนๆ ถึงชั้นแรกพลาดแล้วเขียนซ้ำ ค่าโทรแล้วที่พนักงานพิมพ์ไว้ก็ยังอยู่ครบ

ผลการทดสอบจริง

ส่ง 4 ข้อความติดกัน ให้ชื่อ ให้เบอร์และเวลา ถามราคา ขอบคุณ ผลคือเขียน Sheet แค่ครั้งเดียวที่ข้อความที่สอง ส่วนข้อความที่ 3 และ 4 ไม่เขียนซ้ำ และบอทตอบคำถามเรื่องราคาได้โดยไม่ถามข้อมูลซ้ำ

4

บั๊กที่โผล่ทีหลัง

เมื่อบอทความจำเสื่อม

ปัญหาที่เจอหลังใช้งานจริงไปสักพัก บอทถามเบอร์โทรซ้ำทั้งที่ลูกค้าให้ไปแล้ว ต้นเหตุคือ Simple Memory ของ n8n เก็บบทสนทนาไว้ในหน่วยความจำชั่วคราว ไม่ใช่ฐานข้อมูล

  • ▸n8n restart หรืออัปเดตเวอร์ชัน เจอบ่อยที่สุด
  • ▸กด Publish workflow ใหม่
  • ▸บทสนทนายาวเกินจำนวนที่ตั้งไว้ (ตั้งไว้ 20 ข้อความ)

ผลข้างเคียงที่อันตรายกว่า

พอ memory หายแล้วลูกค้าให้ข้อมูลใหม่จนครบ AI จะส่ง justCompleted = true อีกครั้ง ระบบเขียน Sheet ซ้ำ กลไกกันซ้ำในส่วนก่อนหน้ากันได้เฉพาะภายในบทสนทนาเดียว ไม่ได้กันข้ามรอบแบบนี้

ทางแก้คืออย่าพึ่ง memory เป็นแหล่งความจริง ใช้ฐานข้อมูลที่ไม่หายแทน ซึ่งในที่นี้ก็คือ Google Sheet ที่เราบันทึกลีดอยู่แล้ว เพิ่มขั้นตอนก่อนเข้า AI ให้อ่าน Sheet หาแถวของ PSID นี้ แล้วส่งข้อมูลที่เจอเข้าไปใน prompt พร้อมคำสั่งชัดเจนว่าอย่างไหนมีค่าแล้วห้ามถามซ้ำ

ลำดับ node ที่แก้แล้ว
Normalize Message
  |
Look Up Existing Lead      <- อ่าน Sheet ด้วย sender_id
  |
Build Known Context        <- รวมเป็นข้อมูลพร้อมใช้
  |
AI Agent                   <- เห็นว่าคนนี้ให้เบอร์มาแล้ว

จุดที่ต้องระวัง

node ที่อ่าน Sheet ต้องตั้ง Always Output Data เป็นเปิด ไม่งั้นลูกค้าใหม่ที่ยังไม่มีแถวใน Sheet จะทำให้ flow ตันตั้งแต่ขั้นนี้ เพราะหาไม่เจอแล้วไม่ส่งอะไรออกมาเลย

วิธีจำบทสนทนาจำข้อมูลลีดต้องติดตั้งเพิ่ม
อ่านจาก Google Sheetไม่ใช่ไม่ต้อง
n8n Data Tableไม่ใช่ไม่ต้อง
Postgres / Redis memoryใช่ใช่ต้องตั้ง database

เลือก Google Sheet เพราะมีอยู่แล้ว ไม่ต้องเก็บข้อมูลสองที่ และเจ้าของธุรกิจเปิดดูเองได้ทันทีโดยไม่ต้องเข้า n8n สิ่งที่ต้องไม่ถามซ้ำคือชื่อ เบอร์ และเวลา ไม่ใช่เนื้อหาที่คุยกัน

5

เตรียมของ

โครงสร้าง Google Sheet

สร้าง Spreadsheet แล้วใส่ header ในแถวแรกให้ตรงตามนี้เป๊ะๆ เพราะ n8n จับคู่ด้วยชื่อ header

คอลัมน์เก็บอะไร
sender_idรหัสผู้ใช้จาก Messenger (PSID) ใช้จับคู่กันแถวซ้ำ
nameชื่อลูกค้า
phoneเบอร์โทร ระบบตัดขีดกลางออกให้อัตโนมัติ
preferred_timeช่วงเวลาที่สะดวกให้โทรกลับ
statusn8n ไม่เขียนคอลัมน์นี้ พนักงานพิมพ์เอง เช่น โทรแล้ว
updated_atเวลาที่บันทึกลีด (เขตเวลากรุงเทพฯ)

ใน n8n ตั้งโหมดเป็น Append or Update แล้วเลือก sender_id เป็นคอลัมน์จับคู่ คนเดิมที่คุยหลายรอบจะได้แถวเดียว ไม่ใช่แถวซ้ำ และถ้าลูกค้าเปลี่ยนเบอร์ทีหลังก็อัปเดตทับแถวเดิมให้

เคล็ดลับ

ตั้ง conditional formatting ให้แถวที่ status ว่างขึ้นสีเหลือง จะเห็นทันทีว่ามีลีดใหม่รอโทร

6

ต่อระบบ

เชื่อมกับ Facebook

ส่วนนี้ใช้เวลานานที่สุดและมีจุดพลาดเยอะที่สุด ทำตามลำดับนี้

  1. 01สร้าง App ใน Facebook Developer ไปที่ developers.facebook.com/apps เลือก use case แบบ Other แล้ว type Business ผูกกับ Business Portfolio ที่เป็นเจ้าของเพจ
  2. 02เพิ่ม Messenger เข้า App ที่หน้า App เลือก Add Product หา Messenger แล้วกด Set up
  3. 03ตั้งค่า Webhook ใส่ Callback URL จาก Webhook node ใน n8n และ Verify Token คิดคำอะไรก็ได้ แต่ต้องพิมพ์ให้ตรงกันทั้งสองฝั่ง
  4. 04สร้าง Page Access Token ที่ Messenger > Settings > Access Tokens เลือกเพจแล้วกดสร้าง คัดลอกเก็บทันที
  5. 05Subscribe webhook fields ในแถวของเพจ กดเพิ่มโปรแกรมสมาชิก แล้วติ๊ก messages กับ messaging_postbacks
  6. 06ใส่ Token ใน n8n ที่ Credentials > Create > Facebook Graph API แล้ววาง Page Token
  7. 07เผยแพร่ App กดเผยแพร่เป็น Live mode เท่านี้คนทั่วไปก็ใช้บอทได้

ต้อง Publish ก่อน

n8n ใช้ระบบ draft/published แก้ workflow แล้วต้องกด Publish ทุกครั้ง ไม่งั้น URL จริงยังรันเวอร์ชันเก่าอยู่ ถ้ากด Verify ตอนที่ยังไม่ publish จะไม่ผ่าน

ห้ามสับสน

ต้องเป็น Page Token เท่านั้น ไม่ใช่ User Token เพราะ User Token ส่งข้อความ Messenger ไม่ได้ คนพลาดตรงนี้บ่อยมาก

อย่าลืมขั้น Subscribe

ถ้าใต้ปุ่มยังขึ้นว่าไม่มีช่องที่สมัครเป็นสมาชิก แปลว่ายังไม่ได้ทำ Facebook จะไม่ส่งข้อความมาที่ n8n เลย แม้ token ถูกและ webhook verify ผ่านแล้วก็ตาม

ขึ้นแดงไม่ได้แปลว่าผิด

n8n จะขึ้นว่า Couldn't connect with these settings เพราะมันทดสอบด้วย endpoint ระดับ User ซึ่ง Page Token ไม่มีสิทธิ์เรียก กด Save ได้เลย

เช็คว่า token ใช้ได้จริง (ได้ชื่อเพจกลับมาแปลว่าผ่าน)
curl "https://graph.facebook.com/v21.0/me?fields=id,name&access_token=TOKEN"
7

เข้าใจผิดกันบ่อย

ไม่ต้องยื่น App Review

หลายแหล่งบอกว่าต้องผ่าน App Review ก่อนคนทั่วไปถึงจะใช้ได้ ซึ่งไม่จริงแล้ว สำหรับการตอบคนที่ทักเข้ามาเองภายใน 24 ชั่วโมง สิทธิ์ pages_messaging ถูกให้มาเป็น Standard Access ตั้งแต่ต้น แค่กดเผยแพร่ก็ใช้กับทุกคนได้ทันที ไม่ต้องยื่นรีวิว ไม่ต้องอัดวิดีโอ

สิ่งที่ทำต้องรีวิวไหม
ตอบคนที่ทักเข้ามา ภายใน 24 ชม.ไม่ต้อง
ส่งข้อความหลังพ้น 24 ชม. (message tags)ต้อง
ทำบอทให้เพจของลูกค้าคนอื่นต้อง
ส่ง broadcast หรือข้อความการตลาดต้อง
ดึงข้อมูลโปรไฟล์ผู้ใช้เพิ่มเติมต้อง

ข้อห้ามเด็ดขาด

ห้ามยิงข้อความหาคนที่ไม่ได้ทักมาก่อน โดนแบนถาวรได้

เรื่อง Privacy Policy ถึงไม่ต้องยื่นรีวิวก็ยังควรทำ เพราะระบบนี้เก็บชื่อและเบอร์โทรลูกค้า ซึ่งเป็นข้อมูลส่วนบุคคลตาม PDPA ควรมีหน้าที่บอกว่าเก็บอะไร เอาไปทำอะไร เก็บนานแค่ไหน และติดต่อขอลบได้ที่ไหน จะวางไว้ใน Notion แบบ public ก็พอ

8

บทเรียน

บั๊กที่เจอจริงระหว่างทำ

ทุกข้อด้านล่างเกิดขึ้นจริงระหว่างสร้างระบบนี้ ถ้ารู้ไว้ก่อนจะประหยัดเวลาไปได้มาก

บั๊กอาการทางแก้
Webhook รับหลาย method แตก output แยกGET ออกทางที่ 1 POST ออกทางที่ 2 ต่อสายผิดทาง ข้อความหายเงียบๆ ไม่มี errorดู execution log ถ้า lastNodeExecuted หยุดที่ Webhook แปลว่าต่อผิด output
GET ที่ token ผิด ไปยิง AI ทิ้งURL webhook เปิดสาธารณะ ใครยิงมั่วมาก็กินเครดิตเราแยกสองชั้น เช็ค method ก่อน แล้วค่อยเช็ค token ถ้าผิดตอบ 403 จบ ไม่แตะ AI
Memory ไม่ผูกกับ PSIDทุกคนใช้ memory ร่วมกัน บอทเอาข้อมูลคนหนึ่งไปตอบอีกคนตั้ง session key ผูกกับรหัสผู้ใช้ และอ้างอิงจาก node ต้นทางโดยตรง
ชื่อโมเดลไม่ตรงกับที่มีจริงขึ้น error ว่า is not a valid model IDเปิด dropdown ใน n8n เลือกจากลิสต์จริง อย่าพิมพ์เอง
Memory หายแล้วบอทถามซ้ำโผล่หลังใช้งานจริงไปสักพัก ไม่เจอตอนทดสอบอ่านข้อมูลจาก Google Sheet ก่อนเข้า AI ทุกครั้ง

บทเรียนรวม

สี่ในห้าข้อนี้ไม่มี error ให้เห็น ระบบรันผ่านปกติแต่ผลไม่ถูก อย่าดูแค่ว่า execution ขึ้นสีเขียว ให้เปิดดูข้างในว่าข้อมูลเดินไปถึง node ไหน และค่าที่ออกมาถูกหรือเปล่า

และอีกอย่าง

บั๊กบางตัวโผล่เฉพาะตอนใช้งานจริงไปสักพัก เพราะทดสอบรวดเดียวจบ memory ยังไม่ทันหาย ควรกลับมาดู execution log หลังปล่อยใช้งานจริงไปสองสามวันเสมอ

9

ก่อนใช้จริง

เช็กลิสต์ทดสอบ

ทดสอบอะไรผลที่ควรได้
ทักถามเรื่องบริการบอทตอบเรื่องบริการ แล้วขอชื่อ ถามทีละอย่าง ไม่ยิงรัว 3 คำถาม
ให้ข้อมูลครบรวดเดียว เช่น สมชาย 081-234-5678 บ่ายวันจันทร์บันทึกลง Sheet 1 แถว เบอร์ถูกตัดขีดเป็น 0812345678
ให้ข้อมูลทีละอย่างคนละข้อความบอทจำข้อมูลเดิมได้ ไม่ถามซ้ำ
คุยต่อหลังให้ข้อมูลครบแล้วไม่เขียน Sheet ซ้ำ และตอบคำถามได้ตามปกติ
พิมพ์โทรแล้วในคอลัมน์ status ด้วยมือ แล้วทักบอทเพิ่มค่ายังเป็นโทรแล้ว ไม่ถูกเขียนทับ
ทักใหม่หลัง n8n restartไม่ถามชื่อหรือเบอร์ซ้ำ เพราะอ่านจาก Sheet เจอแล้ว
ทักด้วยบัญชีใหม่ที่ยังไม่มีแถวใน Sheetทำงานได้ปกติ ไม่ตันที่ขั้นอ่าน Sheet
ทักจากบัญชีอื่นที่ไม่ใช่ของเราบอทตอบได้ ถ้าเผยแพร่ App แล้ว

ข้อที่สำคัญที่สุด

แถวที่ทดสอบคอลัมน์ status คือตัวพิสูจน์ว่าพนักงานจะไม่โทรซ้ำหาลูกค้าคนเดิม ใช้เวลาแค่นาทีเดียว แต่ถ้าพลาดแล้วไปเจอตอนมีลูกค้าจริงจะแก้ยากกว่ามาก

10

ต่อยอด

ทำเพิ่มได้อีก

  • ▸แจ้งเตือนทีมขาย ส่งอีเมลหรือ LINE ทันทีที่ได้ลีดใหม่ จะได้โทรเร็วขึ้น
  • ▸ขยายไปเพจอื่น สร้าง Page Token ของเพจนั้น แล้วก๊อป workflow มาเปลี่ยน credential กับ path ของ webhook
  • ▸เก็บข้อมูลเพิ่ม เช่น ชื่อบริษัท ประเภทธุรกิจ หรืองบประมาณ แต่ยิ่งถามเยอะ คนยิ่งตอบไม่จบ
  • ▸ให้ AI จัดลำดับความสำคัญ ประเมินว่าลีดไหนน่าสนใจ ทีมขายจะได้โทรตัวที่มีโอกาสปิดก่อน

ข้อแนะนำ

อย่าเพิ่งใส่ทุกอย่างตั้งแต่แรก ปล่อยตัวพื้นฐานให้รับลูกค้าจริงสักพัก แล้วดูจากบทสนทนาว่าคนถามอะไรบ่อย ค่อยปรับตามของจริง

เผยแพร่ 19 กันยายน 2569 · TommyLabs

อยากได้เต็มๆ? เรียนสดกับทอมมี่

คู่มือนี้เป็นแค่จุดเริ่ม
ของจริงอยู่ในห้องเรียน

คอร์สสดของทอมมี่ลงมือทำตลอดคลาส จบแล้วกลับบ้านพร้อมของจริงที่ใช้ต่อได้ทันที

Builder Labs: Builder with LINE OA

LAB-04 · 1 วัน (10:00-17:00)

Builder Labs: Builder with LINE OA

Workshop สร้างระบบธุรกิจของคุณ ผ่าน LINE OA เต็มวัน กลุ่มเล็ก 8 ท่าน กลับบ้านพร้อมระบบที่ใช้งานได้จริง 1 ระบบ

ดูรายละเอียด →

AI Agent for Everyone

LAB-01 · 2 วัน (10:00-17:00)

AI Agent for Everyone

2 วันที่เปลี่ยนวิธีที่คุณใช้ AI ไปตลอดกาล - เรียนทักษะ “สั่ง AI ให้ลงมือทำงานแทน” ที่เอาไปใช้ได้กับทุกเรื่อง ทั้งงาน ธุรกิจ และชีวิตส่วนตัว

รอประกาศเร็วๆ นี้ →

AI Avatar Storyteller

LAB-02 · 1 วัน (10:00–17:00)

AI Avatar Storyteller

เรียน 1 วัน ได้คลิปจริง 1 ตัว พร้อมทักษะสร้างสื่อด้วย AI ครบทุกด้าน

รอประกาศเร็วๆ นี้ →

ChatGPT Agent สำหรับนักขายมืออาชีพ

LAB-03 · 2 คืน (20:00-22:00)

ChatGPT Agent สำหรับนักขายมืออาชีพ

สัมมนาออนไลน์สด 2 คืนผ่าน Zoom เอกสารดูดี โปรไฟล์น่าเชื่อถือ คอนเทนต์ไม่ขาดช่วง พร้อมที่ปรึกษาที่รู้จักคุณ

ดูรายละเอียด →

IN-HOUSE อยากจัดอบรมให้ทีมในองค์กร? ดูแพ็กเกจ In-house Training →