~/blog/wordpress-line-messaging-api-chatbot-tutorial-2025.md
API 串接與系統整合 · 2026 / 01 / 17

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

Eric — 浪花科技創辦人 / AI 架構師
Eric
浪花科技創辦人 · AI 架構師
客服回訊息回到手軟?用 WordPress 打造 24H 不打烊的 LINE Chatbot 智慧大腦 (Messaging API 實戰)
目錄 table-of-contents.md

LINE Messaging API 的本質,就是一條 Webhook:客戶傳訊息,LINE 把內容 POST 到你指定的網址,你回傳 JSON,它就替你回話。而那個「指定的網址」,完全可以是你手上現成的 WordPress。客戶半夜三點問「在嗎?」、問價錢、問庫存——這些重複性的人力浪費,這篇就用一顆 24 小時不打烊的 Chatbot 智慧大腦來終結。

市面上有很多 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 自動化能力更上一層樓,強烈建議閱讀以下幾篇深度技術文章,讓你的數位大腦更完整:

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

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

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

立即填寫表單聯繫 Eric
// FAQ

常見問題

可以用 WordPress 自建 LINE Chatbot 嗎?
可以。若已有 WordPress 網站,可直接用它作為 LINE Chatbot 的後端伺服器,透過 REST API 建立 Webhook 端點來串接 LINE Messaging API,不必額外花錢租用機器人平台。好處包含省下月費、能直接整合站內的會員與訂單資料,且程式碼在自己手上、擴充性高。
用 WordPress 自動回覆 LINE 訊息需要付費嗎?
利用 Webhook 機制做自動回覆可以完全免費。LINE 官方帳號的「回應訊息(Reply Message)」是免費的,只有主動推播(Push Message)才需要付費,因此用 WordPress 接收 Webhook 並回覆訊息不會產生額外費用。
串接 LINE Messaging API 前需要先準備什麼?
需先到 LINE Developers Console 建立一個 Provider,並在其下建立 Messaging API 類型的 Channel。接著取得兩組關鍵金鑰:用來驗證訊息來源的 Channel Secret,以及讓你能以機器人名義發送訊息的 Channel Access Token,最後設定 Webhook URL 並開啟「Use webhook」開關。
LINE Chatbot 的 Webhook 為什麼一定要驗證簽章?
若不驗證,任何人只要知道你的 API 網址,就能偽裝成 LINE 塞入垃圾資料甚至發動攻擊。正確做法是取得請求的原始 body 與 x-line-signature Header,用 Channel Secret 以 hash_hmac(sha256)計算並 base64 編碼後比對;若不一致就回傳 403 拒絕處理。
如何讓 WordPress 的 LINE 機器人變得更聰明、不只是複讀?
基礎範例只是回覆使用者原話的 Echo Bot,可進一步擴充:把使用者訊息丟給 OpenAI API,取得 AI 生成的回覆後再傳回去,讓機器人能回答客服問題;或用正則表達式抓取訊息中的訂單編號,透過 wc_get_order() 查詢 WooCommerce 訂單狀態後直接回覆,大幅減輕客服負擔。
~/roamer-tech/newsletter // FREE
// newsletter

訂閱免費電子報

把 AI 自動化、企業系統設計與 WordPress / Laravel 開發的真實案例和可直接照做的技巧,整理成電子報寄給你。只寄精選內容、不灌垃圾信,一鍵就能退訂。

$
// final.exec()

準備好讓你的網站開始為你工作了嗎?