API 連線
將您的外部 API 連接到 enuchat,讓 AI 和規則可以從您的系統取得即時資料。
運作方式
API 連線讓您將 enuchat 與自己的後端系統整合 — 訂房引擎、CRM、訂單管理、庫存等。當訪客提問時,enuchat 可以呼叫您的 API 取得真實資料並納入回覆中。
流程
- 設定連線 — 您的 API 基礎 URL 和認證方式
- 新增 endpoint — 具體的 API 呼叫,包含路徑範本和回應映射
- 建立規則 — 帶有 CALL_API 動作的 AI 或靜態規則
- 訪客提問 — 規則觸發,呼叫您的 API,將回應映射到工作階段變數
- AI 以真實資料回覆 — 工作階段變數可供 AI 用於生成準確回答
範例:飯店客房可用性
訪客:"205 號房下週有空嗎?"
AI 規則匹配:"當訪客詢問客房可用性時"
CALL_API 動作:GET https://api.hotel.com/rooms/205/availability
回應映射:room_available = true, price = "€120/night"
AI 回覆:"205 號房下週有空,每晚 €120。您要預訂嗎?"
設定連線
前往管理面板中的設定 → API 連線。
1. 建立連線
一個連線代表一個外部 API。您需要:
| 欄位 | 說明 | 範例 |
|---|---|---|
| 名稱 | 此連線的標籤 | 飯店訂房 API |
| 基礎 URL | API 的根 URL | https://api.hotel.com/v1 |
| 認證類型 | 認證方式 | Bearer Token、OAuth2 等 |
2. 認證類型
無
用於不需要認證的公開 API。
API Key
以標頭或查詢參數發送靜態金鑰。
| 欄位 | 說明 |
|---|---|
| Key | 您的 API 金鑰值 |
| Header Name | 使用的標頭(預設:X-Api-Key) |
金鑰以 X-Api-Key: your_key_here 發送
Bearer Token
在 Authorization 標頭中發送靜態 Token。
以 Authorization: Bearer your_token_here 發送
Basic Auth
發送 base64 編碼的使用者名稱和密碼。
以 Authorization: Basic dXNlcjpwYXNz 發送
OAuth 2.0(Client Credentials)
自動取得存取 Token 並快取至到期。最適合現代 API,如 Salesforce、Google 或自訂 OAuth 伺服器。
| 欄位 | 說明 |
|---|---|
| Token URL | OAuth Token endpoint(例如 https://auth.example.com/oauth/token) |
| Client ID | 您的 OAuth Client ID |
| Client Secret | 您的 OAuth Client Secret |
| Scope | 以空格分隔的 scope(例如 read write) |
enuchat 自動處理 Token 生命週期 — 首次呼叫時取得、快取至到期、需要時刷新。
安全性:所有憑證使用 libsodium 加密靜態儲存。API 回應中絕不暴露 — 管理面板中僅顯示遮罩後的值。
設定 Endpoint
每個連線可以有多個 endpoint — 您想要執行的特定 API 呼叫。
| 欄位 | 說明 | 範例 |
|---|---|---|
| 名稱 | 此 endpoint 的標籤 | 查詢可用性 |
| 方法 | HTTP 方法 | GET、POST、PUT、DELETE |
| 路徑 | URL 路徑(附加到基礎 URL)。使用 {'{'}variable} 表示動態值 | /rooms/{'{'}roomId}/availability |
| 查詢參數 | 鍵值對形式的 URL 參數。值支援 {'{'}variable} | date={'{'}checkIn} |
| 請求主體範本 | POST/PUT 的 JSON 主體。支援 {'{'}variable} 插值 | {'{'}"guest": "{'{'}name}"} |
| 回應映射 | 使用點表示法將 JSON 回應欄位映射到工作階段變數 | data.available → room_available |
| 說明 | 提供給 AI 的上下文(此 endpoint 回傳什麼資料) | 回傳客房可用性和價格 |
變數插值
在路徑、查詢參數和請求主體範本中使用 {'{'}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
Endpoint:GET /orders/{'{'}orderId} → 映射 data.status → order_status、data.eta → delivery_eta
規則(AI 類型):"當訪客詢問訂單狀態或配送時"
動作:
- CALL_API → 訂單狀態 endpoint
- REPLY_AI → AI 使用
order_status和delivery_eta來回覆
結果:訪客:"我的訂單 #4521 到哪了?" — AI:"您的訂單 #4521 目前正在配送中,預計週四前送達。"
配方:即時價格查詢
連線:價格 API — https://pricing.example.com — API Key
Endpoint:GET /products/{'{'}productId}/price → 映射 price → current_price、currency → price_currency
規則(靜態):MESSAGE_MATCHES_REGEX:/\b(price|cost|how much)\b/i
動作:
- CALL_API → 價格 endpoint
- REPLY_TEXT → "The current price is {'{'}current_price} {'{'}price_currency}."
測試
在規則中使用之前,請務必測試您的連線和 endpoint:
- 測試連線 — 驗證認證是否有效(OAuth2:取得 Token)
- 測試 Endpoint — 以範例變數執行真實 API 呼叫並顯示回應
- 測試規則(模擬執行) — 在規則頁面測試規則是否會匹配以及會執行哪些動作
提示:先測試連線,然後測試每個 endpoint,最後測試完整規則。這樣您可以在每個層級隔離問題。
安全性
- 靜態加密 — 所有憑證在儲存前使用 libsodium 加密
- 絕不暴露 — API 回應絕不包含解密後的憑證,僅顯示遮罩後的值
- SSRF 防護 — enuchat 阻止對 localhost、私有 IP 和內部主機名的呼叫
- 逾時 — 外部 API 呼叫有 5 秒逾時以防止卡住
- OAuth2 Token 快取 — 存取 Token 安全快取並自動刷新
- 租戶隔離 — 連線僅限於您的租戶,其他人無法存取