客服不再崩潰!用 OpenAI Function Calling 打造能『查訂單』的 WordPress 智慧 Chatbot 實戰
☰ 目錄 table-of-contents.md
「請問我的貨到了嗎?」這一句話,能塞爆任何規模的客服信箱,再完整的「我的帳戶」頁面和出貨通知信都擋不住。傳統 chatbot 幫不上忙,是因為它只會聊天、不會查資料;而 OpenAI 的 Function Calling 正好補上這塊——讓模型自己決定何時呼叫你的訂單 API。這篇就在 WordPress 上實作一個真的能查訂單的智慧客服。
這不是使用者的錯,人性就是懶得登入查網站,他們想要的是「問了就有答案」。
過去,我們可能會設定一些關鍵字自動回覆(Keyword-based chatbot),但那種體驗通常很災難。客人問「貨哪時候到?」,機器人回「請輸入訂單編號」,客人輸入後,機器人可能還看不懂。但現在,時代不同了。我們可以利用 OpenAI 的 Function Calling (函數呼叫) 技術,結合 WordPress REST API 與你的 CRM 系統,打造 24H 業務助理:用 AI 讓 Chatbot 查詢 CRM 訂單狀態。這不再是生硬的腳本,而是真正能「理解意圖」並「執行查詢」的智慧大腦。
今天這篇文章,不講空泛的概念,我們來談談技術實作的架構與核心程式碼。
為什麼傳統 Chatbot 查不到訂單?
傳統的 Chatbot 大多是「封閉式」的。它們的邏輯是:
- 如果使用者輸入 A,則回覆 B。
- 如果使用者輸入「查詢訂單」,則丟出查詢連結。
這最大的問題在於「資料孤島」。Chatbot 不知道你的 WooCommerce 裡有什麼資料,也不知道 HubSpot 或 Salesforce 裡的 CRM 狀態。它只是一個會說話的佈告欄。
而導入 LLM (大型語言模型) 加上 Function Calling 後,AI 變成了「中控官」。它能聽懂自然語言(例如:「幫我查一下昨天買的那雙鞋子出貨沒?」),然後判斷:「喔!這個用戶想查訂單,我需要去呼叫『查詢訂單 API』,但我缺訂單編號或 Email,所以我先問他要這些資訊。」
這就是本質的區別:從「關鍵字匹配」進化到「意圖識別與工具使用」。
技術架構:如何讓 AI 伸手進 CRM 撈資料?
要實現這個功能,我們不需要把整個 CRM 資料庫餵給 AI(千萬別這麼做,這是資安自殺行為)。我們採用的是 RAG (Retrieval-Augmented Generation) 的變體思路,具體流程如下:
- 前端對話介面:使用者在 WordPress 網站上的 Chat Widget 提問。
- 中介層 (Middleware):將對話傳送給 OpenAI Assistants API。
- 意圖識別:OpenAI 判斷需要執行
get_order_status這個 Function。 - 執行查詢:WordPress (作為後端) 接收到 AI 的指令,透過 PHP 執行 SQL 或打 API 去查詢 CRM/WooCommerce。
- 回傳結果:WordPress 將「訂單 #999 狀態:已出貨,物流單號:TW123」回傳給 OpenAI。
- 生成回應:OpenAI 將生硬的數據轉化為親切的口語:「Eric 您好,您購買的鞋子已經出貨囉!物流單號是 TW123,預計明天送達。」
核心實作:定義 Function 與 WordPress 處理邏輯
作為工程師,我們最關心的就是 Code 怎麼寫。這裡我示範如何在 WordPress 環境下,定義一個讓 AI 呼叫的「工具」,以及後端該如何回應。
1. 定義 OpenAI 的 Tools (Function Definition)
在發送請求給 OpenAI API 時,我們需要在 JSON body 中告訴它:「嘿,我這裡有個工具可以用喔。」
{
"tools": [
{
"type": "function",
"function": {
"name": "get_order_status",
"description": "根據訂單編號或 Email 查詢訂單目前的物流狀態與詳細資訊",
"parameters": {
"type": "object",
"properties": {
"order_id": {
"type": "string",
"description": "使用者的訂單編號,例如:WC-12345"
},
"email": {
"type": "string",
"description": "下單時使用的電子郵件信箱,用於驗證身份"
}
},
"required": ["order_id"]
}
}
}
]
}
2. WordPress 後端處理 (PHP)
當 OpenAI 回傳 requires_action 狀態時,代表它想呼叫我們上面定義的 get_order_status。這時,我們需要在 WordPress 寫一個處理函數。
這裡我用一個簡化的 PHP 範例,示範如何從 WooCommerce 撈資料:
function handle_ai_function_call($function_name, $arguments) {
$args = json_decode($arguments, true);
if ($function_name === 'get_order_status') {
$order_id = isset($args['order_id']) ? sanitize_text_field($args['order_id']) : 0;
// 在實際應用中,務必加上 Email 驗證邏輯以確保資安
// $email = sanitize_email($args['email']);
// 檢查是不是 WooCommerce 訂單
$order = wc_get_order($order_id);
if (!$order) {
return json_encode(['status' => 'error', 'message' => '找不到此訂單編號']);
}
// 獲取訂單狀態與物流資訊 (假設有用外掛紀錄物流單號)
$status = $order->get_status_label();
$tracking_number = $order->get_meta('_shipping_tracking_number', true) ?: '尚無物流單號';
$items = [];
foreach ($order->get_items() as $item) {
$items[] = $item->get_name();
}
return json_encode([
'status' => 'success',
'order_status' => $status,
'tracking_number' => $tracking_number,
'products' => implode(', ', $items),
'updated_at' => $order->get_date_modified()->date('Y-m-d H:i')
], JSON_UNESCAPED_UNICODE);
}
return json_encode(['status' => 'error', 'message' => '未知的函數']);
}
這段程式碼的關鍵在於:它不是直接吐 HTML 給使用者看,而是吐 JSON 數據 給 AI 看。AI 看到 JSON 後,會幫你「翻譯」成人話。
資安關鍵:別讓 API 變成個資外洩的破口
這是我在輔導企業導入 AI 時最常碎念的一點。絕對不能只靠「訂單編號」就吐出所有資料!
如果我隨便猜一個號碼 #10001,Chatbot 就告訴我這是「王小明買的 iPhone 15,地址在台北市...」,那你的網站大概離被告不遠了。
在實作 打造 24H 業務助理:用 AI 讓 Chatbot 查詢 CRM 訂單狀態 的過程中,務必加入以下安全機制:
- 雙重驗證 (2FA) 邏輯:除了訂單編號,一定要要求使用者提供 Email 或手機號碼末四碼,並在程式端比對兩者是否吻合。
- Rate Limiting (頻率限制):限制同一個 IP 或 Session 在短時間內的查詢次數,防止暴力猜測訂單號。
- 敏感資料遮罩:回傳給 AI 的資料中,地址、電話等個資應進行遮罩處理 (Masking),只讓 AI 知道「已出貨至 台北市信義區」,而不是完整地址。
結論:從「被動查詢」到「主動服務」
導入這套架構後,你會發現客服 Loading 會顯著下降。更棒的是,因為我們已經打通了 WordPress 與 CRM 的 API,未來甚至可以做更進階的應用。例如,當 AI 發現訂單狀態是「配送失敗」時,可以主動在對話中詢問使用者:「我看物流顯示配送失敗,您要不要更改配送時間?」
這才是一個 2025 年合格的現代化網站該有的樣子。不再是冷冰冰的表單,而是能解決問題的智慧助理。
延伸閱讀
如果你對 AI 與 WordPress 的整合有興趣,或是想深入了解 API 串接的細節,這裡有幾篇我之前寫的技術筆記,強烈建議你搭配服用:
- 客服半夜裝睡?OpenAI Assistants API 終極實戰,打造永不關機的 WordPress 智慧大腦
- 客服回覆到手軟?教你用 Gemini API 打造 WordPress 自動讀心術,一秒看懂客戶在想啥!
- 告別陽春同步!Laravel x HubSpot 進階戰術:打造企業級雙向、容錯、高效率的資料流引擎
覺得 AI 串接太複雜,不知道從何下手?或者是擔心串接後的資安問題?
別讓技術門檻阻礙了你的業務成長。浪花科技專注於高難度的 WordPress 客製化開發與系統整合。
立即聯繫我們,打造你的專屬 AI 業務助理常見問題
OpenAI Function Calling 跟傳統關鍵字 Chatbot 查訂單有什麼不同?
讓 AI 查 CRM 訂單時,後端應該回傳什麼格式給 AI?
AI 查詢訂單的功能要怎麼避免變成個資外洩破口?
AI 訂單查詢系統需要把整個 CRM 資料庫餵給 AI 嗎?
訂閱免費電子報
把 AI 自動化、企業系統設計與 WordPress / Laravel 開發的真實案例和可直接照做的技巧,整理成電子報寄給你。只寄精選內容、不灌垃圾信,一鍵就能退訂。