客服不再崩潰!用 OpenAI Function Calling 打造能『查訂單』的 WordPress 智慧 Chatbot 實戰

2026/01/6 | AI 人工智慧新知, API 串接與自動化, CRM 應用, WP 開發技巧

終結客服爆量:AI 智能 Chatbot 訂單查詢實戰

您的電商客服還在被訂單查詢塞爆嗎?告別傳統關鍵字機器人!本文教您運用 OpenAI Function Calling,將 WordPress 網站深度整合 CRM 系統,實現「理解意圖、執行查詢」的智慧客服。這不僅釋放人力,更能提供秒級的專業服務,同時確保資安滴水不漏。別再觀望,立即聯繫我們,打造您專屬的 24H 智慧業務助理!

需要專業協助?

聯絡浪花專案團隊 →

客服不再崩潰!用 OpenAI Function Calling 打造能『查訂單』的 WordPress 智慧 Chatbot 實戰

嗨,我是 Eric,浪花科技的資深工程師。如果你跟我們一樣,經手過大流量的電商或企業網站,你一定遇過這種狀況:明明網站上有「我的帳戶」頁面,明明 Email 都寄出出貨通知了,但客服信箱和 LINE 官方帳號還是每天被「請問我的貨到了嗎?」、「訂單編號 #123456 現在狀態是什麼?」這類問題塞爆。

這不是使用者的錯,人性就是懶得登入查網站,他們想要的是「問了就有答案」。

過去,我們可能會設定一些關鍵字自動回覆(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) 的變體思路,具體流程如下:

  1. 前端對話介面:使用者在 WordPress 網站上的 Chat Widget 提問。
  2. 中介層 (Middleware):將對話傳送給 OpenAI Assistants API。
  3. 意圖識別:OpenAI 判斷需要執行 get_order_status 這個 Function。
  4. 執行查詢:WordPress (作為後端) 接收到 AI 的指令,透過 PHP 執行 SQL 或打 API 去查詢 CRM/WooCommerce。
  5. 回傳結果:WordPress 將「訂單 #999 狀態:已出貨,物流單號:TW123」回傳給 OpenAI。
  6. 生成回應: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 串接的細節,這裡有幾篇我之前寫的技術筆記,強烈建議你搭配服用:

覺得 AI 串接太複雜,不知道從何下手?或者是擔心串接後的資安問題?

別讓技術門檻阻礙了你的業務成長。浪花科技專注於高難度的 WordPress 客製化開發與系統整合。

立即聯繫我們,打造你的專屬 AI 業務助理

常見問題 (FAQ)

Q1: 用 AI 查訂單會不會很貴?OpenAI API 費用如何計算?

這取決於你的對話量。使用 gpt-3.5-turbo 模型其實非常便宜,每筆查詢的成本通常不到台幣 0.1 元。除非你的流量極大,否則相較於聘請真人客服的薪資,AI 的成本幾乎可以忽略不計。但若使用 gpt-4o,成本會較高,建議在一般查詢使用輕量模型即可。

Q2: 除了 WooCommerce,這套系統能串接其他的 CRM 嗎?

當然可以。只要你的 CRM (如 HubSpot, Salesforce, Zoho) 或是 ERP 系統有提供 REST API 或 Webhook,我們就能透過中介程式碼(PHP/Python/Node.js)去撈取資料。Function Calling 的核心在於「邏輯」,後端要連線到哪個資料庫都是可以客製化的。

Q3: 如果 AI 回答錯誤的資訊怎麼辦?(AI 幻覺問題)

這就是為什麼我們要用 Function Calling 而不是讓 AI 自己生成答案。在 Function Calling 架構下,AI 的回答是基於我們從資料庫撈出來的「真實數據」去組織語言的,大大降低了胡說八道的機率。同時,我們可以在 System Prompt 中嚴格限制 AI:「如果不確定,請回答無法查詢,不要捏造數據。」

 
立即諮詢,索取免費1年網站保固