เปิด Voice Agent →
🧩 Flow Editor

Function Node — เรียก API ระหว่างสนทนากับลูกค้า (Advance)

Node สีม่วง ใช้ดึงข้อมูลจากระบบของคุณ (เช่น CRM หรือฐานข้อมูล) มาใช้ในบทสนทนาได้ทันที

Function Node คืออะไร

Function Node (Node สีม่วง) คือ Node ที่ทำหน้าที่ เรียก API ภายนอก ในระหว่างที่ Agent กำลังสนทนากับลูกค้า เพื่อ ดึงข้อมูลจากระบบของคุณ หรือ ส่งข้อมูลกลับเข้าระบบ

คำว่า API (Application Programming Interface) คือช่องทางที่ระบบหนึ่งใช้สื่อสารกับอีกระบบหนึ่ง เปรียบเสมือนหน้าต่างที่ระบบของ Gowajee ใช้ขอข้อมูลจากระบบของคุณ

เปรียบเทียบให้เห็นภาพ: หาก Conversation Node เปรียบเป็นพนักงานที่สนทนากับลูกค้า Function Node ก็เปรียบเสมือน การที่พนักงานหยุดสนทนาชั่วครู่ เพื่อ เปิดคอมพิวเตอร์ตรวจดูข้อมูลในระบบ แล้วกลับมาสนทนาต่อพร้อมข้อมูลล่าสุด โดยลูกค้าแทบไม่รู้สึกว่ามีการหยุด เนื่องจาก Agent ดำเนินการเสร็จภายในเวลาอันสั้น

ใช้กรณีไหนบ้าง

Function Node มีประโยชน์เมื่อข้อมูลของลูกค้าอยู่ในระบบของคุณ ซึ่งไม่ได้อยู่ในตัว Flow โดยตรง ตัวอย่างที่พบบ่อยมีดังนี้

กรณีใช้งานAPI ที่เรียกข้อมูลที่ได้กลับมา
ตรวจสอบลูกค้าใน CRM GET /customers/{{phone}} ชื่อ, สถานะสมาชิก, ประวัติการซื้อ
ตรวจสอบยอดคงเหลือ / ยอดค้างชำระ GET /balance/{{customer_id}} ยอดคงเหลือล่าสุด, วันครบกำหนด
ตรวจสอบว่าสินค้ามีในคลัง GET /inventory/{{sku}} จำนวนคงเหลือ, ราคา, วันส่ง
จองเวลานัดหมาย POST /appointments เลขที่นัด, เวลายืนยัน
ส่งข้อมูลลูกค้าใหม่กลับเข้า CRM POST /leads เลขที่ Lead, สถานะการบันทึก
เรียกเก็บเงินผ่าน Payment Gateway POST /charge สถานะการชำระ, เลขที่ใบเสร็จ

ส่วนประกอบของ Function Node

คลิก Function Node บน Canvas (พื้นที่ทำงานตรงกลาง) แผงด้านขวาจะแสดงส่วนประกอบหลัก 6 ส่วน ดังนี้

ขั้นที่ 1

Name (ชื่อ Node)

ชื่อนี้ใช้อ้างอิงภายในเท่านั้น จึงควรตั้งให้สื่อว่า Node นี้ทำหน้าที่อะไร

ตัวอย่างที่ดี: ดึงข้อมูลลูกค้าจาก CRM, ตรวจสอบยอดคงเหลือ, บันทึกนัดหมาย

ขั้นที่ 2

API Endpoint URL

ที่อยู่ URL ของ API ที่จะเรียก โดยขึ้นต้นด้วย https:// เสมอ

ตัวอย่าง: https://api.your-company.com/customers/12345

หากต้องใช้ค่าจาก Variable (ตัวแปร) ในบทสนทนา ให้ใส่ในรูปแบบ {{variable_name}} เช่น

https://api.your-company.com/customers/{{customer_phone}}

ขั้นที่ 3

HTTP Method

เลือกประเภทของคำสั่งที่ส่งไปยัง API โดยทั่วไปใช้เพียง 2 แบบ ได้แก่

  • GET ใช้สำหรับ ดึงข้อมูล (เช่น ดูยอดเงิน หรือดูข้อมูลลูกค้า)
  • POST ใช้สำหรับ ส่งข้อมูลเข้าไป หรือสร้างข้อมูลใหม่ (เช่น บันทึกนัดหมาย หรือสร้าง Lead)

ตัวเลือกอื่น (PUT, PATCH, DELETE) ใช้ในกรณีเฉพาะ หากไม่แน่ใจ ให้ปรึกษาทีมเทคนิคของคุณ

ขั้นที่ 4

Headers (ข้อมูลกำกับ + การยืนยันตัวตน)

Headers คือข้อมูลที่ส่งไปเพื่อระบุแก่ API ว่าใครเป็นผู้เรียก และส่งข้อมูลในรูปแบบใด

ตัวอย่าง Headers ที่ใช้บ่อย:

Authorization: Bearer YOUR_API_KEY
Content-Type: application/json

API Key คือรหัสลับที่ระบบของคุณออกให้แก่ Gowajee เพื่อยืนยันว่าเป็นการเรียกที่ได้รับอนุญาต เปรียบเสมือนกุญแจสำหรับเข้าระบบ

ขั้นที่ 5

Body (ข้อมูลที่ส่งไป — เฉพาะ POST/PUT/PATCH)

เนื้อหาข้อมูลที่ส่งไปยัง API โดยทั่วไปอยู่ในรูปแบบ JSON (รูปแบบมาตรฐานสำหรับการแลกเปลี่ยนข้อมูล)

ตัวอย่าง:

{
  "customer_name": "{{customer_name}}",
  "phone": "{{customer_phone}}",
  "appointment_date": "{{requested_date}}"
}

ใส่ Variable ในรูปแบบ {{variable_name}} เช่นเดียวกัน

ขั้นที่ 6

Response Mapping (แปลงผลตอบกลับเป็น Variable)

ระบบของคุณจะตอบกลับมาในรูปแบบ JSON ให้ระบุแก่ Gowajee ว่าต้องการเก็บค่าใดไว้เป็น Variable เพื่อนำไปใช้ใน Node ถัดไป

ตัวอย่าง: API ตอบกลับมาดังนี้

{
  "name": "คุณสมชาย",
  "balance": 12500,
  "due_date": "2026-06-15"
}

ตั้งค่า Response Mapping:

  • response.name → เก็บไว้ใน Variable customer_name
  • response.balance → เก็บไว้ใน Variable debt_amount
  • response.due_date → เก็บไว้ใน Variable debt_due_date

จากนั้น Conversation Node ถัดไปจะสามารถนำ Variable เหล่านี้ไปใช้สนทนาต่อได้ทันที

วิธีตั้งค่า Function Node — ตัวอย่างจริง

สถานการณ์: ลูกค้าโทรเข้ามาแจ้งหมายเลขโทรศัพท์ จากนั้น Agent ดึงข้อมูลลูกค้าจาก CRM แล้วทักทายด้วยชื่อจริงพร้อมแจ้งยอดค้างชำระ

ขั้นที่ 1

เพิ่ม Function Node ลงบน Canvas

จาก Toolbar ด้านซ้าย ให้คลิกปุ่ม Function (Node สีม่วง) เพื่อเพิ่ม Node ลงบน Canvas โดยวางไว้หลัง Conversation Node ที่สอบถามหมายเลขของลูกค้า

Node Palette in the Flow Editor with Function Node visible
ขั้นที่ 2

ตั้งชื่อ Node

ในช่อง Name ให้พิมพ์ ดึงข้อมูลลูกค้าจาก CRM

ขั้นที่ 3

ระบุ URL และ Method

  • URL: https://api.your-company.com/customers?phone={{customer_phone}}
  • Method: GET
ขั้นที่ 4

ใส่ Headers

Authorization: Bearer sk_live_XXXXXXXXX
Content-Type: application/json

API Key (sk_live_...) ต้องขอจากทีมเทคนิคที่ดูแลระบบของคุณ

ขั้นที่ 5

แปลงผลตอบกลับเป็น Variable

หาก API ตอบกลับดังนี้

{
  "name": "คุณสมชาย",
  "outstanding_balance": 12500,
  "promise_date": "2026-06-15"
}

ตั้งค่า Response Mapping:

  • response.namecustomer_name
  • response.outstanding_balancedebt_amount
  • response.promise_datedue_date
ขั้นที่ 6

ลากเส้น Transition ไปยัง Conversation Node ถัดไป

เมื่อ Function Node ดึงข้อมูลสำเร็จ ให้ส่งต่อไปยัง Conversation Node ที่จะนำ {{customer_name}} และ {{debt_amount}} ไปใช้สนทนาต่อ โดยลากเส้นจากจุด handle รอบ Function Node ไปยัง Conversation Node นั้น

ตัวอย่างเช่น Node "ทักทายลูกค้า" ใช้ Prompt: สวัสดีคุณ {{customer_name}} โทรมาแจ้งยอดค้างชำระ {{debt_amount}} บาท

ขั้นที่ 7

ทดสอบใน Testing Mode

ก่อน Publish ให้ใช้แท็บ Testing ใน Flow Editor เพื่อทดลองสนทนากับ Agent และตรวจสอบว่า Function Node ดึงข้อมูลได้ถูกต้องหรือไม่

ดูรายละเอียดเพิ่มเติม: Testing

จัดการเมื่อ API ล้มเหลว

ระบบภายนอกอาจล้มเหลวได้เสมอ ดังนั้น Function Node จึงต้องเตรียมรับมือ 3 สถานการณ์ ดังนี้

ขั้นที่ 1

API ล่ม หรือไม่ตอบกลับ (Network Error)

ระบบของคุณอาจล่มชั่วคราว หรือเครือข่ายขัดข้อง โดย Gowajee จะรอผลตอบกลับสูงสุดตามค่า Timeout ที่ตั้งไว้

ค่าเริ่มต้นคือ 10 วินาที หากเกินกว่านี้ จะถือว่าล้มเหลว

ขั้นที่ 2

API ตอบกลับเป็น Error (เช่น 404 ไม่พบข้อมูล หรือ 500 ระบบล่ม)

ให้เพิ่ม Transition แบบ Error ใน Function Node โดยกำหนดให้ไปยัง Conversation Node สำรอง เช่น Node ที่กล่าวขอโทษลูกค้าและเสนอโอนสายไปยังเจ้าหน้าที่

ตัวอย่าง Transition:

  • เมื่อ API สำเร็จ → ไปยัง Node "ทักทายด้วยชื่อจริง"
  • เมื่อ API ล้มเหลว → ไปยัง Node "ขอโทษและโอนสาย"
ขั้นที่ 3

API ตอบกลับมาผิดรูปแบบ (Unexpected Data)

ในกรณีที่ API ตอบกลับมา แต่ไม่มีข้อมูลที่คาดไว้ (เช่น ไม่มี response.name) Variable ที่ Map ไว้จะมีค่าว่าง

วิธีแก้: ใน Conversation Node ที่ใช้ Variable ตัวนี้ ให้เขียน Prompt ที่รองรับกรณีค่าว่าง เช่น

หาก {{customer_name}} ว่าง ให้กล่าวเพียง "สวัสดีค่ะ" แต่หากมีค่า ให้กล่าวว่า "สวัสดีคุณ {{customer_name}} ค่ะ"

ความปลอดภัย + การจัดเก็บ API Key

API Key ของระบบคุณถือเป็น ข้อมูลลับ หากรั่วไหลออกไป อาจมีผู้เข้าถึงระบบของคุณได้

  • Gowajee จะจัดเก็บ API Key ที่คุณใส่ใน Headers ไว้ใน ระบบเก็บความลับ (Vault) ที่เข้ารหัสไว้ ซึ่งบุคคลภายนอกไม่สามารถเห็นได้
  • เมื่อสมาชิกในทีมเปิด Flow ขึ้นมาดู จะเห็น Key ถูกซ่อนไว้เป็น •••••••• เพื่อป้องกันการอ่านโดยไม่ตั้งใจ
  • หากต้องการเปลี่ยน Key (เช่น เมื่อพบว่ารั่วไหล) ให้กลับมาแก้ไขในช่อง Headers แล้วกด Publish อีกครั้ง

ข้อผิดพลาดที่เจอบ่อย

❌ ไม่จัดการกรณี API ล้มเหลว

อาการ: เมื่อระบบของลูกค้าล่ม Function Node จะค้าง ทำให้ Agent เงียบ จนลูกค้าวางสายไป

วิธีแก้: ทุก Function Node ต้องมี Transition สำรอง เมื่อ API ล้มเหลว โดยส่งต่อไปยัง Node ที่กล่าวขอโทษและเสนอทางเลือกอื่น เช่น โอนสายไปยังเจ้าหน้าที่

❌ ใช้ข้อมูลทดสอบในระบบจริง

อาการ: ขณะทดสอบใช้ URL https://api-test.your-company.com แล้วลืมเปลี่ยนเป็น URL Production ก่อน Publish

ผลกระทบ: Agent ดึงข้อมูลผิดจากระบบทดสอบ ทำให้ยอดเงินและชื่อลูกค้าผิดทั้งหมด

วิธีแก้: ก่อน Publish ให้ตรวจสอบ URL ของทุก Function Node ว่าชี้ไปยังระบบ Production และทดสอบใน Testing Mode หนึ่งรอบ

❌ ไม่ตั้งค่า Timeout

อาการ: API ของลูกค้าตอบกลับช้ามาก (เกิน 30 วินาที) ทำให้ Agent เงียบ จนลูกค้าวางสายไป

วิธีแก้: ตั้งค่า Timeout ที่ 5-10 วินาที เท่านั้น หากระบบของคุณตอบช้ากว่านี้ ควรขอให้ทีมเทคนิคปรับปรุงประสิทธิภาพก่อนใช้งาน

❌ Map Response ผิด Path

อาการ: Response Mapping ใช้ response.customer.name แต่ API ตอบกลับมาเป็น response.data.name ทำให้ Variable มีค่าว่าง

วิธีแก้: ดูตัวอย่าง Response จริงจากเอกสาร API หรือทดสอบ API ด้วยเครื่องมือ เช่น Postman ก่อน แล้วเทียบ Path ให้ตรงกัน

❌ ใส่ API Key ลงใน Prompt

อาการ: ใส่ API Key ไว้ใน Global Prompt เพื่อความสะดวก

ผลกระทบ: AI อาจพูด Key ออกมาให้ลูกค้าฟังโดยไม่ตั้งใจ อีกทั้งยังเสี่ยงต่อการรั่วไหล

วิธีแก้: ใส่ API Key ไว้ในช่อง Headers ของ Function Node เท่านั้น (ระบบจะเข้ารหัสให้)

คัดลอกลิงก์แล้ว ✓