客服回訊息回到手軟?資深工程師教你用 WordPress 打造 24H 不打烊的 LINE Chatbot 智慧大腦 (Messaging API 實戰)

2026/01/17 | API 串接與自動化, WP 開發技巧

告別手動回覆!WordPress x LINE Chatbot 智慧客服免費自建術

客服訊息爆量讓你手軟嗎?資深工程師 Eric 揭密,你無需再支付昂貴的機器人月租費!如果你的企業使用 WordPress,這就是最強大的免費伺服器。本文帶你從零開始,利用 WordPress REST API 和 LINE Messaging API,親手打造一個 24 小時不打烊的智慧客服大腦。我們不只教你串接,更堅持資安驗證細節。立即掌握數據主權,將你的 WordPress 網站升級為能查訂單、串接 AI 的自動化中心。別讓重複性工作消耗你的時間,點擊學習,讓程式碼為你賺錢!

需要專業協助?

聯絡浪花專案團隊 →

客服回訊息回到手軟?資深工程師教你用 WordPress 打造 24H 不打烊的 LINE Chatbot 智慧大腦

嗨,我是 Eric,浪花科技的資深工程師。如果你的 LINE 官方帳號還在靠人工「手動」回覆,那這篇文章就是你的救星。我知道,大家都喜歡用 LINE,客戶喜歡在上面問價錢、問庫存、甚至半夜三點問你「在嗎?」。身為一個工程師,我最受不了的就是「重複性的人力浪費」。

市面上有很多 LINE 機器人租用平台,月費幾千塊跑不掉。但其實,如果你已經有一個 WordPress 網站,你根本不需要花那筆冤枉錢。你的 WordPress 網站本身就可以是一個超強大的 LINE Chatbot 伺服器。今天我就要帶大家從零開始,用最純正的程式碼(不用擔心,我會解釋得很清楚),直接串接 LINE Messaging API,打造一個屬於你自己的自動化客服大腦。

為什麼選擇用 WordPress 自建 LINE Chatbot?

這不僅僅是省錢的問題,更是「數據主權」的問題。

  • 省下月費: LINE 官方帳號的「回應訊息 (Reply Message)」是免費的!只有主動推播 (Push Message) 才要錢。利用 Webhook 機制,我們可以做到完全免費的自動回覆。
  • 資料整合: 你的會員資料、訂單狀態都在 WordPress 裡的 WooCommerce 資料庫,直接用 WordPress 當機器人後端,查訂單、查庫存只要一秒鐘。
  • 極高擴充性: 未來想串接 OpenAI (ChatGPT) 讓機器人講人話?或是串接 Google Sheets 記帳?因為 code 在你手上,想怎麼改都行。

準備工作:LINE Developers Console 設定

在我們打開編輯器寫 Code 之前,得先去 LINE 那邊「拜碼頭」。請前往 LINE Developers Console 登入你的帳號。

1. 建立 Provider 與 Channel

你需要建立一個 Provider(通常是公司名),然後在其下建立一個 Messaging API 類型的 Channel。這就是你的機器人本體。

2. 取得關鍵金鑰

在 Channel settings 頁面中,有兩串像亂碼一樣的東西是你必須記下來的,這就是連通 WordPress 與 LINE 的鑰匙:

  • Channel Secret: 用來驗證傳過來的訊息真的是 LINE 發的,而不是駭客偽造的(這點超級重要,很多新手都會忽略資安驗證)。
  • Channel Access Token (Long-lived): 讓你的 WordPress 有權力以機器人的名義發送訊息。

3. 設定 Webhook URL

這是 LINE 伺服器「通知」你的 WordPress 有人說話的管道。我們先預設等等要建立的 API 路徑為:
https://你的網域/wp-json/eric-bot/v1/webhook
記得把「Use webhook」開關打開。

進入正題:WordPress 程式碼實戰

現在,打開你的 WordPress 佈景主題編輯器(或是你習慣的 IDE,連線到 SFTP),我們要編輯 functions.php。雖然現在流行用外掛,但身為資深工程師,我建議這種核心功能寫在 Child Theme 或是做成獨立外掛比較保險。

我們會用到 WordPress 強大的 REST API 功能來建立自訂端點。

第一步:註冊 API路徑

這段程式碼會告訴 WordPress:「嘿,如果有請求發送到 /eric-bot/v1/webhook,請交給 handle_line_webhook 這個函式處理。」

add_action('rest_api_init', function () {
    register_rest_route('eric-bot/v1', '/webhook', array(
        'methods' => 'POST',
        'callback' => 'handle_line_webhook',
        'permission_callback' => '__return_true', // 我們會自己在 callback 裡做簽章驗證
    ));
});

第二步:處理 Webhook 與簽章驗證 (Signature Validation)

這裡是我要特別囉嗦的地方。很多網路教學為了省事,都略過了「簽章驗證」。這是非常危險的! 如果不驗證,任何人只要知道你的 API 網址,就可以偽裝成 LINE 塞垃圾資料給你,甚至發動攻擊。

Eric 的堅持:一定要用 hash_hmac 比對 x-line-signature

function handle_line_webhook(WP_REST_Request $request) {
    // 1. 設定你的 Channel Secret 和 Access Token
    $channel_secret = '你的_CHANNEL_SECRET'; 
    $access_token = '你的_CHANNEL_ACCESS_TOKEN';

    // 2. 取得 LINE 傳來的原始資料與簽章
    $body = $request->get_body();
    $signature = $request->get_header('x-line-signature');

    // 3. 資安驗證:確認這真的是 LINE 傳來的
    $hash = base64_encode(hash_hmac('sha256', $body, $channel_secret, true));
    if ($hash !== $signature) {
        return new WP_Error('invalid_signature', '簽章驗證失敗,你是駭客嗎?', array('status' => 403));
    }

    // 4. 解析 JSON 資料
    $events = json_decode($body, true);

    // 5. 處理每一個事件 (LINE 可能一次傳多個事件)
    if (isset($events['events'])) {
        foreach ($events['events'] as $event) {
            // 我們只處理文字訊息
            if ($event['type'] === 'message' && $event['message']['type'] === 'text') {
                $replyToken = $event['replyToken'];
                $userMessage = $event['message']['text'];
                
                // 簡單的回覆邏輯:學人精
                $replyText = '你剛剛說了:' . $userMessage;

                // 發送回覆
                reply_line_message($replyToken, $replyText, $access_token);
            }
        }
    }

    return rest_ensure_response('Event Received');
}

第三步:發送回覆 (Reply Message)

這裡我們使用 WordPress 內建的 wp_remote_post,這比原生的 PHP cURL 更優雅、更符合 WordPress 規範。

function reply_line_message($replyToken, $message, $access_token) {
    $url = 'https://api.line.me/v2/bot/message/reply';

    $data = array(
        'replyToken' => $replyToken,
        'messages' => array(
            array(
                'type' => 'text',
                'text' => $message
            )
        )
    );

    $args = array(
        'body' => json_encode($data),
        'headers' => array(
            'Content-Type' => 'application/json',
            'Authorization' => 'Bearer ' . $access_token
        )
    );

    $response = wp_remote_post($url, $args);

    if (is_wp_error($response)) {
        error_log('LINE 回覆失敗: ' . $response->get_error_message());
    }
}

進階應用:不只是「學人精」

上面的程式碼只是一個「學人精」機器人(Echo Bot)。但在實際商業場景中,你可能需要更聰明的邏輯。這時候就可以結合我們之前分享過的技術。

1. 串接 OpenAI 讓它變聰明

你可以把 $userMessage 丟給 OpenAI 的 API,拿到 AI 生成的回覆後,再透過 reply_line_message 傳回去。這樣你的 LINE 機器人瞬間就有了大腦,可以回答客服問題,甚至安撫奧客。

2. 查詢 WooCommerce 訂單

如果使用者傳送的是「#訂單編號 12345」,你可以寫一個正則表達式 (Regex) 去抓取訂單號碼,然後用 wc_get_order() 查詢狀態,直接回覆:「您的訂單 12345 目前狀態為:配送中」。這能大幅減少客服的 loading。

資深工程師的除錯小撇步

開發 Chatbot 最痛苦的就是「看不到畫面」。因為 Webhook 是背景執行的,你沒辦法直接 echo 變數出來看。這時候 error_log() 就是你唯一的朋友。

如果機器人已讀不回,請務必去檢查 WordPress 的 debug.log。通常問題都出在:

  • Channel Access Token 貼錯(有沒有多複製了空白鍵?)。
  • Webhook URL 在 LINE 後台沒按「Verify」。
  • 伺服器擋住了 LINE 的 IP(這比較少見,但有些防火牆設太嚴會發生)。

延伸閱讀

既然你已經掌握了基礎的 LINE Bot 開發,想要讓你的 WordPress 自動化能力更上一層樓,強烈建議閱讀以下幾篇深度技術文章,讓你的數位大腦更完整:

常見問題 (FAQ)

Q1: 使用 LINE Messaging API 需要付費嗎?

基本的 Messaging API 帳號是免費的。只要你是透過「Webhook」收訊並使用「Reply Token」進行被動回覆,這部分完全免費。但如果你要主動發送推播訊息(Push Message)給使用者,則有每月的免費額度限制,超過需要依照 LINE 官方方案付費。

Q2: 為什麼我的 LINE 機器人已讀不回?

常見原因有三點:1. Webhook URL 沒有在 LINE Developers Console 啟用 (Enable Webhook)。2. SSL 憑證問題,LINE 要求 Webhook 必須是 HTTPS 且憑證有效。3. 程式碼錯誤,建議開啟 WordPress 的 `WP_DEBUG_LOG` 查看 `error_log` 紀錄,確認是否有 500 Error 或邏輯錯誤。

Q3: 我可以把這個機器人安裝在 WordPress 既有的外掛裡嗎?

可以,但建議將自訂的程式碼寫在「子佈景主題 (Child Theme)」的 functions.php 中,或是自行開發一個專屬的 WordPress 外掛 (Plugin)。不要直接修改原本的主題檔案或第三方外掛,以免更新後程式碼被覆蓋消失。

自動化這條路一旦開始了,就回不去了。把時間花在更有創造力的事情上,回訊息這種事,就交給程式碼吧!如果你在實作上遇到任何「靈異現象」,或者需要更客製化的企業級解決方案,歡迎隨時找我們聊聊。

想打造專屬的企業級自動化系統?

別讓技術細節拖慢你的商業佈局。浪花科技擁有豐富的 WordPress 開發與 API 串接經驗。

立即填寫表單聯繫 Eric

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