การเชื่อมต่อ API
เชื่อมต่อ API ภายนอกของคุณกับ enuchat เพื่อให้ AI และกฎสามารถดึงข้อมูลแบบเรียลไทม์จากระบบของคุณ
วิธีการทำงาน
การเชื่อมต่อ API ให้คุณรวม enuchat กับระบบ backend ของคุณเอง — เครื่องมือจอง CRM การจัดการคำสั่งซื้อ สินค้าคงคลัง และอื่น ๆ เมื่อผู้เยี่ยมชมถามคำถาม enuchat สามารถเรียก API ของคุณเพื่อรับข้อมูลจริงและรวมไว้ในการตอบกลับ
ขั้นตอน
- กำหนดค่าการเชื่อมต่อ — URL ฐานและการรับรองความถูกต้องของ API ของคุณ
- เพิ่มเอนด์พอยต์ — การเรียก API เฉพาะพร้อมเทมเพลตเส้นทางและการแมปการตอบกลับ
- สร้างกฎ — กฎ AI หรือกฎคงที่พร้อมการกระทำ CALL_API
- ผู้เยี่ยมชมถามคำถาม — กฎทริกเกอร์ เรียก API ของคุณ แมปการตอบกลับเป็นตัวแปรเซสชัน
- AI ตอบกลับด้วยข้อมูลจริง — ตัวแปรเซสชันมีให้ AI ใช้ในการสร้างคำตอบที่แม่นยำ
ตัวอย่าง: ความพร้อมใช้งานห้องโรงแรม
ผู้เยี่ยมชม: "ห้อง 205 ว่างสัปดาห์หน้าหรือไม่?"
กฎ AI ตรงกัน: "เมื่อผู้เยี่ยมชมถามเกี่ยวกับความพร้อมใช้งานห้อง"
การกระทำ CALL_API: GET https://api.hotel.com/rooms/205/availability
การตอบกลับที่แมป: room_available = true, price = "€120/คืน"
AI ตอบกลับ: "ห้อง 205 ว่างสัปดาห์หน้าที่ €120/คืน คุณต้องการจองหรือไม่?"
การตั้งค่าการเชื่อมต่อ
ไปที่ การตั้งค่า → การเชื่อมต่อ API ในแดชบอร์ดของคุณ
1. สร้างการเชื่อมต่อ
การเชื่อมต่อแสดง API ภายนอกหนึ่งรายการ คุณต้องการ:
| ฟิลด์ | คำอธิบาย | ตัวอย่าง |
|---|---|---|
| ชื่อ | ป้ายกำกับสำหรับการเชื่อมต่อนี้ | API การจองโรงแรม |
| URL ฐาน | URL รากของ API | https://api.hotel.com/v1 |
| ประเภทการรับรองความถูกต้อง | วิธีการรับรองความถูกต้อง | Bearer Token, OAuth2 ฯลฯ |
2. ประเภทการรับรองความถูกต้อง
None
สำหรับ API สาธารณะที่ไม่ต้องการการรับรองความถูกต้อง
API Key
ส่งคีย์คงที่เป็นส่วนหัวหรือพารามิเตอร์การค้นหา
| ฟิลด์ | คำอธิบาย |
|---|---|
| คีย์ | ค่าคีย์ API ของคุณ |
| ชื่อส่วนหัว | ส่วนหัวที่จะใช้ (ค่าเริ่มต้น: X-Api-Key) |
คีย์ถูกส่งเป็น: X-Api-Key: your_key_here
Bearer Token
ส่งโทเค็นคงที่ในส่วนหัว Authorization
ส่งเป็น: Authorization: Bearer your_token_here
Basic Auth
ส่งชื่อผู้ใช้และรหัสผ่าน เข้ารหัส base64
ส่งเป็น: Authorization: Basic dXNlcjpwYXNz
OAuth 2.0 (Client Credentials)
ดึงโทเค็นการเข้าถึงโดยอัตโนมัติและแคชจนกว่าจะหมดอายุ ดีที่สุดสำหรับ API ทันสมัยเช่น Salesforce, Google หรือเซิร์ฟเวอร์ OAuth ที่กำหนดเอง
| ฟิลด์ | คำอธิบาย |
|---|---|
| URL โทเค็น | เอนด์พอยต์โทเค็น OAuth (เช่น https://auth.example.com/oauth/token) |
| Client ID | OAuth client ID ของคุณ |
| Client Secret | OAuth client secret ของคุณ |
| Scope | Scope แยกด้วยช่องว่าง (เช่น read write) |
enuchat จัดการวงจรชีวิตโทเค็นโดยอัตโนมัติ — ดึงในการเรียกครั้งแรก แคชจนกว่าจะหมดอายุ รีเฟรชเมื่อจำเป็น
ความปลอดภัย: ข้อมูลรับรองทั้งหมดถูกเข้ารหัสในที่เก็บโดยใช้ libsodium พวกมันไม่เคยถูกเปิดเผยในการตอบกลับ API — แสดงเฉพาะค่าที่ปกปิดในแดชบอร์ด
การกำหนดค่าเอนด์พอยต์
การเชื่อมต่อแต่ละรายการสามารถมีเอนด์พอยต์หลายรายการ — การเรียก API เฉพาะที่คุณต้องการทำ
| ฟิลด์ | คำอธิบาย | ตัวอย่าง |
|---|---|---|
| ชื่อ | ป้ายกำกับสำหรับเอนด์พอยต์นี้ | ตรวจสอบความพร้อมใช้งาน |
| เมธอด | เมธอด HTTP | GET, POST, PUT, DELETE |
| เส้นทาง | เส้นทาง URL (เพิ่มไปยัง URL ฐาน) ใช้ {'{'}variable} สำหรับค่าแบบไดนามิก | /rooms/{'{'}roomId}/availability |
| พารามิเตอร์การค้นหา | พารามิเตอร์ URL เป็นคู่คีย์-ค่า ค่ารองรับ {'{'}variable} | date={'{'}checkIn} |
| เทมเพลตเนื้อหา | เนื้อหา JSON สำหรับ POST/PUT รองรับการแทรก {'{'}variable} | {'{'}"guest": "{'{'}name}"} |
| การแมปการตอบกลับ | แมปฟิลด์การตอบกลับ JSON เป็นตัวแปรเซสชันโดยใช้สัญกรณ์จุด | data.available → room_available |
| คำอธิบาย | บริบทสำหรับ AI (เอนด์พอยต์นี้ส่งคืนข้อมูลใด) | ส่งคืนความพร้อมใช้งานห้องและราคา |
การแทรกตัวแปร
ใช้ {'{'}variableName} ในเส้นทาง พารามิเตอร์การค้นหา และเทมเพลตเนื้อหา ตัวแปรมาจาก:
- ตัวแปรเซสชัน — ตั้งโดยกฎก่อนหน้า (การกระทำ SET_VARIABLE)
- พารามิเตอร์การกระทำ — ฮาร์ดโค้ดในการกระทำกฎ CALL_API
การแมปการตอบกลับ
แมปฟิลด์การตอบกลับ JSON เป็นตัวแปรเซสชันโดยใช้สัญกรณ์จุด:
// API returns:
{'{'}
"data": {'{'}
"available": true,
"price": {'{'} "amount": 120, "currency": "EUR" }
}
}
// Mapping:
data.available → room_available // "true"
data.price.amount → room_price // "120"
data.price.currency → room_currency // "EUR"ตัวแปรที่แมปจะถูกเก็บเป็นตัวแปรเซสชันในการสนทนาและมีให้ AI ใช้ในการสร้างการตอบกลับ
การใช้กับกฎ
การเรียก API ถูกทริกเกอร์โดยการกระทำ CALL_API ในกฎ คุณสามารถรวมกับการกระทำอื่น ๆ
สูตร: การค้นหาสถานะคำสั่งซื้อ
การเชื่อมต่อ: API การจัดการคำสั่งซื้อ — https://api.shop.com/v2 — Bearer Token
เอนด์พอยต์: GET /orders/{'{'}orderId} → แมป data.status → order_status, data.eta → delivery_eta
กฎ (ประเภท AI): "เมื่อผู้เยี่ยมชมถามเกี่ยวกับสถานะคำสั่งซื้อหรือการจัดส่งของพวกเขา"
การกระทำ:
- CALL_API → เอนด์พอยต์สถานะคำสั่งซื้อ
- REPLY_AI → AI ใช้
order_statusและdelivery_etaเพื่อตอบกลับ
ผลลัพธ์: ผู้เยี่ยมชม: "คำสั่งซื้อ #4521 ของฉันอยู่ที่ไหน?" — AI: "คำสั่งซื้อ #4521 ของคุณกำลังถูกจัดส่งและควรมาถึงในวันพฤหัสบดี"
สูตร: ราคาแบบเรียลไทม์
การเชื่อมต่อ: API ราคา — https://pricing.example.com — API Key
เอนด์พอยต์: GET /products/{'{'}productId}/price → แมป price → current_price, currency → price_currency
กฎ (คงที่): MESSAGE_MATCHES_REGEX: /\b(price|cost|how much)\b/i
การกระทำ:
- CALL_API → เอนด์พอยต์ราคา
- REPLY_TEXT → "ราคาปัจจุบันคือ {'{'}current_price} {'{'}price_currency}"
การทดสอบ
ทดสอบการเชื่อมต่อและเอนด์พอยต์ของคุณเสมอก่อนใช้งานในกฎ:
- ทดสอบการเชื่อมต่อ — ตรวจสอบว่าการรับรองความถูกต้องทำงาน (สำหรับ OAuth2: ดึงโทเค็น)
- ทดสอบเอนด์พอยต์ — ทำการเรียก API จริงด้วยตัวแปรตัวอย่างและแสดงการตอบกลับ
- ทดสอบกฎ (dry-run) — บนหน้ากฎ ทดสอบว่ากฎจะตรงกันหรือไม่และการกระทำใดจะดำเนินการ
เคล็ดลับ: เริ่มต้นโดยทดสอบการเชื่อมต่อ จากนั้นแต่ละเอนด์พอยต์ จากนั้นกฎที่สมบูรณ์ ด้วยวิธีนี้คุณสามารถแยกปัญหาในแต่ละระดับ
ความปลอดภัย
- การเข้ารหัสในที่เก็บ — ข้อมูลรับรองทั้งหมดถูกเข้ารหัสโดยใช้ libsodium ก่อนการจัดเก็บ
- ไม่เปิดเผย — การตอบกลับ API ไม่เคยรวมข้อมูลรับรองที่ถอดรหัส มีเพียงค่าที่ปกปิด
- การป้องกัน SSRF — enuchat บล็อกการเรียกไปยัง localhost, IP ส่วนตัว และชื่อโฮสต์ภายใน
- การหมดเวลา — การเรียก API ภายนอกมีการหมดเวลา 5 วินาทีเพื่อป้องกันการแขวน
- การแคชโทเค็น OAuth2 — โทเค็นการเข้าถึงถูกแคชอย่างปลอดภัยและรีเฟรชโดยอัตโนมัติ
- การแยก tenant — การเชื่อมต่อถูกจำกัดขอบเขตให้กับ tenant ของคุณ ไม่สามารถเข้าถึงได้โดยผู้อื่น