LINE 官方帳號還在手動回?資深工程師帶你用 WordPress 打造 24H 全自動 LINE Chatbot!

2025/08/22 | API 串接與自動化

LINE 官方帳號還在手動回?資深工程師帶你用 WordPress 打造 24H 全自動 LINE Chatbot!

哈囉,我是浪花科技的 Eric。身為一個整天跟程式碼打交道的工程師,我最討厭的就是重複性的手動工作。你是不是也覺得,每天要回覆的 LINE 官方帳號訊息,內容都大同小異,回到手軟心很累?客戶半夜三點問個常見問題,你隔天早上才回,商機可能早就跑了。

今天,我就要來教大家一個大絕招:如何將你最熟悉的 WordPress 網站,變身成一個聰明的 LINE Messaging API Chatbot,讓它 24 小時不打烊,自動幫你處理客服、推播消息,甚至串接你的網站內容。別再傻傻地手動回覆了,把時間花在更有價值的事情上吧!這篇教學會從觀念講起,手把手帶你完成 LINE Messaging API Chatbot 建置,就算你不是程式麻瓜,只要跟著步驟走,也能打造出自己的第一個 LINE 機器人。

為什麼要用 WordPress 整合 LINE Chatbot?優勢在哪?

你可能會想:「市面上不是很多現成的 Chatbot 平台嗎?幹嘛還要在 WordPress 上自己搞?」問得好!這就是工程師的堅持所在。用現成平台固然快,但彈性往往受限。而 WordPress 作為全世界最普及的 CMS,本身就是一個強大的資料庫與內容管理中心。把 LINE Chatbot 跟 WordPress 結合,你能得到的好處超乎想像:

  • 完全掌握資料: 客戶的對話紀錄、使用者標籤等,都可以儲存在你自己的 WordPress 資料庫,不用擔心被平台綁架。
  • 高度客製化與彈性: 你可以讓 Chatbot 直接讀取你網站上的最新文章、商品資訊(哈囉 WooCommerce 賣家們!)、活動頁面,並根據使用者訊息,動態產生回覆。想像一下,使用者輸入「最新活動」,機器人就自動抓取最新的活動文章丟給他,這有多酷?
  • 節省成本: 除了 LINE 官方帳號本身的費用,你不需要再額外支付第三方 Chatbot 平台的月費。伺服器成本?你的 WordPress 站本來就在跑了,不是嗎?
  • 串接現有生態系: 你可以將 Chatbot 的行為與你網站上的其他外掛(例如會員系統、表單系統)進行深度整合,打造無縫的自動化流程。

囉嗦了這麼多,就是想告訴你,自己動手做的爽度跟效益,絕對不是租用服務可以比的。好了,咖啡泡好,我們準備開始動工!

LINE Chatbot 運作原理:Webhook 的神奇魔法

在我們開始寫程式碼之前,花三分鐘搞懂原理,可以讓你事半功倍。這整個流程的核心概念叫做 Webhook

你可以把 Webhook 想像成一個「告密者」或「即時通知系統」。整個流程是這樣的:

  1. 使用者傳訊息給你的 LINE 官方帳號。
  2. LINE 的伺服器收到訊息後,會立刻透過 Webhook,往你指定的一個「URL 網址」發送一個 HTTP POST 請求,這個請求的內容(我們稱之為 payload)包含了誰傳的、傳了什麼內容等所有資訊。
  3. 這個指定的「URL 網址」就是我們要在 WordPress 上建立的「耳朵」,專門用來接收 LINE 的通知。
  4. 我們在 WordPress 端的程式收到這個請求後,解析內容,判斷使用者想幹嘛。
  5. 我們的程式處理完後,再呼叫 LINE Messaging API,把要回覆的訊息傳回去給 LINE 伺服器。
  6. LINE 伺服器再把訊息轉發給使用者。

看起來好像很複雜,但其實就是一個「你丟我撿」的過程。我們的任務,就是在 WordPress 裡建立那個接收球的「耳朵」(Webhook Endpoint),以及判斷如何回球的「大腦」(Bot Logic)。

實戰教學:WordPress LINE Messaging API Chatbot 建置四步驟

理論講完了,我們來點實際的。跟著我一步一步來,你也能完成你的第一個 LINE 機器人。

步驟一:建立你的 LINE Messaging API 頻道

首先,你必須要有一個 LINE Developers 帳號。沒有的話就去註冊一個吧!

  1. 登入 LINE Developers Console
  2. 建立一個新的「Provider」(供應商),可以填你的公司或團隊名稱。
  3. 在建立好的 Provider 裡面,選擇「Create a new channel」,然後選擇「Messaging API」。
  4. 填寫頻道的各種資訊,頭像、名稱、描述等等。
  5. 建立完成後,進入你的頻道,點擊「Messaging API」這個頁籤。你會看到最重要的兩樣東西:Channel access token (long-lived)Channel secret。這兩個等一下會用到,先把它們複製下來。

工程師的小囉嗦: 拜託,千萬不要把 Channel Secret 或 Channel Access Token 這種敏感資訊直接寫在你的程式碼(例如 `functions.php`)裡面,然後就推上 Git。這就像把家裡鑰匙串上你的 email 和密碼掛在大門口,超級危險!最好的作法是把它們定義在 `wp-config.php` 這個檔案裡,這個檔案通常不會被版本控制系統追蹤。

define( 'MY_LINE_CHANNEL_SECRET', '你的Channel Secret' );
define( 'MY_LINE_CHANNEL_ACCESS_TOKEN', '你的Channel Access Token' );

步驟二:在 WordPress 建立 Webhook 接收點 (Endpoint)

接下來,我們要用 WordPress 的 REST API 功能來建立一個專屬的網址,給 LINE 來呼叫。這也是最推薦的作法,比自己寫一個獨立的 php 檔案來得更安全、更符合 WordPress 的開發標準。

請把以下程式碼加到你的佈景主題的 `functions.php` 檔案,或者(更好的作法是)建立一個自訂外掛來放這些程式碼。

add_action( 'rest_api_init', function () {
    register_rest_route( 'my-line-bot/v1', '/webhook', array(
        'methods'  => 'POST',
        'callback' => 'my_line_bot_webhook_callback',
        'permission_callback' => '__return_true', // 暫時先開放權限,之後會用簽章驗證
    ) );
} );

這段程式碼的意思是:我們註冊了一個新的 API 路徑,網址會是 `https://你的網域.com/wp-json/my-line-bot/v1/webhook`。當有 `POST` 請求送到這個網址時,WordPress 就會去執行一個叫做 `my_line_bot_webhook_callback` 的函式。

步驟三:撰寫 Chatbot 的大腦 (核心邏輯)

現在,我們要來實作剛剛提到的 `my_line_bot_webhook_callback` 函式。這是整個機器人的核心,所有判斷與回覆的邏輯都在這裡。

繼續把下面的程式碼加到 `functions.php` 或你的自訂外掛中。

function my_line_bot_webhook_callback( WP_REST_Request $request ) {
    // 從 wp-config.php 取得金鑰,比較安全!
    $channel_secret = defined('MY_LINE_CHANNEL_SECRET') ? MY_LINE_CHANNEL_SECRET : '';
    $channel_access_token = defined('MY_LINE_CHANNEL_ACCESS_TOKEN') ? MY_LINE_CHANNEL_ACCESS_TOKEN : '';

    // 取得請求內容和 LINE 的簽章
    $body = $request->get_body();
    $signature = $request->get_header('x-line-signature');

    // 驗證簽章,確保請求是從 LINE 發出的,而不是被偽造的
    if ( ! my_line_bot_validate_signature($body, $channel_secret, $signature) ) {
        return new WP_Error( 'invalid_signature', 'Invalid signature', array( 'status' => 400 ) );
    }

    $events = json_decode($body, true);

    if ( ! empty($events['events']) ) {
        foreach ($events['events'] as $event) {
            // 只處理訊息事件
            if ($event['type'] == 'message' && $event['message']['type'] == 'text') {
                $reply_token = $event['replyToken'];
                $user_message = $event['message']['text'];

                // 設計你的機器人邏輯
                $reply_text = '你說了:' . $user_message;

                if ( strpos($user_message, '你好') !== false ) {
                    $reply_text = '哈囉!我是 Eric 寫出來的機器人,很高興為您服務。';
                } elseif ( strpos($user_message, '最新文章') !== false ) {
                    // 這裡可以擴充去抓 WordPress 最新文章
                    $reply_text = '功能開發中,敬請期待!'; 
                }

                // 準備回覆訊息
                my_line_bot_reply_message($reply_token, $reply_text, $channel_access_token);
            }
        }
    }

    // 回應 200 OK 給 LINE 伺服器,表示已成功接收
    return new WP_REST_Response( 'OK', 200 );
}

// 簽章驗證函式
function my_line_bot_validate_signature($body, $channel_secret, $signature) {
    $hash = hash_hmac('sha256', $body, $channel_secret, true);
    $generated_signature = base64_encode($hash);
    return hash_equals($generated_signature, $signature);
}

// 回覆訊息函式
function my_line_bot_reply_message($reply_token, $text, $channel_access_token) {
    $url = 'https://api.line.me/v2/bot/message/reply';
    $headers = array(
        'Content-Type'  => 'application/json',
        'Authorization' => 'Bearer ' . $channel_access_token,
    );
    $body = array(
        'replyToken' => $reply_token,
        'messages'   => array(
            array(
                'type' => 'text',
                'text' => $text,
            ),
        ),
    );

    $args = array(
        'body'    => json_encode($body),
        'headers' => $headers,
        'method'  => 'POST',
        'data_format' => 'body',
    );

    // 使用 WordPress 的 HTTP API 來發送請求
    wp_remote_post($url, $args);
}

程式碼解析:

  • 簽章驗證: `my_line_bot_validate_signature` 這一步非常、非常重要!這是為了確認這個請求真的是從 LINE 官方伺服器發出來的,而不是有人偽造請求來亂你的機器人。
  • 解析事件: LINE 的 Webhook 會一次把多個「事件(events)」包在一起送過來,所以我們用 `foreach` 去處理每一個事件。
  • 判斷與回覆: 我們只處理文字訊息 (`’type’ == ‘text’`),並取得使用者的訊息內容 (`$user_message`) 和一個一次性的回覆權杖 (`$reply_token`)。接著,我們用簡單的 `if` 判斷來決定要回覆什麼內容。
  • 呼叫 Reply API: `my_line_bot_reply_message` 函式使用 WordPress 內建的 `wp_remote_post` 函式,將我們要回覆的內容,連同 `replyToken`,一起送回 LINE 的 Reply API。

步驟四:將 WordPress Webhook 網址設定回 LINE

最後一步,就是告訴 LINE 你的「耳朵」在哪裡。

  1. 回到你的 LINE Developers Console 頻道設定頁面。
  2. 找到「Webhook settings」區塊。
  3. 在「Webhook URL」欄位,填上你剛剛建立的網址:`https://你的網域.com/wp-json/my-line-bot/v1/webhook`
  4. 點擊「Verify」按鈕,如果你的程式碼沒問題,應該會顯示 Success。
  5. 最後,把「Use webhook」這個開關打開。

恭喜你!現在打開你的手機,加入你的官方帳號為好友,試著傳送「你好」或其他訊息看看,如果一切順利,你應該會收到機器人的自動回覆了!

更進階的應用:讓你的 Chatbot 更聰明

基本的應聲蟲完成了,但這只是開始。真正的威力在於讓 Chatbot 與你的 WordPress 網站內容互動。

串接 WordPress 文章

你可以修改機器人邏輯,當使用者輸入特定關鍵字時,用 `get_posts` 或 `WP_Query` 去資料庫抓取最新的文章,並組合成訊息回覆給使用者。

整合 WooCommerce 商品

如果你的網站是電商,可以讓使用者查詢訂單狀態、搜尋商品、或是推播最新的特價商品資訊。可能性無限!

記錄使用者互動

你可以將使用者的訊息、ID 等資訊,透過 `wp_insert_post` 存成一個 Custom Post Type,或是存到自訂的資料表中,作為未來分析或精準行銷的依據。

打造一個強大的 LINE Messaging API Chatbot 不是一蹴可幾的事,但透過 WordPress 這個堅實的後盾,你已經擁有了一個絕佳的起點。從簡單的關鍵字回覆開始,逐步擴充功能,你會發現自動化的世界是多麽美好。

希望這篇詳細的教學對你有幫助。身為工程師,我們追求的就是用更聰明的方法解決問題。如果你在建置過程中遇到任何困難,或是想討論更複雜的應用場景,像是串接 CRM、打造更複雜的對話流程等,都歡迎與我們浪花科技的團隊聊聊。

延伸閱讀

我們專注於提供企業級的 WordPress 解決方案,從網站建置、效能優化到複雜的 API 串接與自動化,都是我們的專業。別讓重複的工作消磨你的熱情,立即聯繫我們,讓浪花科技的技術專家團隊,為你的事業注入自動化的強大動能!

常見問題 (FAQ)

Q1: 我一定要自己寫程式碼嗎?有沒有推薦的外掛?

A1: 雖然市面上有一些 Chatbot 外掛,但通常功能或彈性會受到限制。本篇教學採用自己寫程式碼的方式,是為了讓你擁有 100% 的控制權與客製化彈性。對於企業級應用來說,自己開發一個輕量級的專屬外掛來處理,絕對是長期來看最穩定、最安全且最能符合商業邏輯的作法。

Q2: 這樣建置 LINE Chatbot 安全嗎?會不會被攻擊?

A2: 安全性是我們工程師最在乎的點。本教學中提到的「簽章驗證 (Signature Validation)」是關鍵中的關鍵。只要你確實執行了這一步,就能確保所有送到你 Webhook 的請求都是合法來自 LINE 官方,而非惡意偽造的請求。同時,將 Channel Secret 等金鑰存放在 `wp-config.php` 而非程式碼中,也是非常重要的安全習慣。

Q3: 我的機器人可以傳送圖片、按鈕或更複雜的 Flex Message 嗎?

A3: 絕對可以!LINE Messaging API 支援非常多種訊息格式,包括圖片、影片、音訊、貼圖、可點擊按鈕的樣板訊息 (Template Messages),以及能讓你高度自訂排版的 Flex Message。本文為了聚焦在基礎建置,只用了最單純的文字訊息。但原理是相通的,你只需要在 `my_line_bot_reply_message` 函式中,根據 LINE 官方 API 文件,修改 `$body` 陣列的結構,就能發送各式各樣的豐富訊息了。

Q4: 為什麼要用 WordPress REST API 來建立 Webhook,而不是直接建立一個 line-bot.php 檔案?

A4: 這是個很好的技術問題!直接建立一個獨立的 PHP 檔案雖然看似簡單,但有幾個缺點:1. 它繞過了 WordPress 的核心載入流程,你無法輕易使用 WordPress 的內建函式(如 `get_posts`, `update_option` 等)。2. 安全性較差,你需要自己處理所有的請求驗證與權限控管。3. 比較不符合現代 WordPress 的開發標準。使用 REST API 來建立 Endpoint,可以讓我們在 WordPress 的框架下安全地工作,無痛取用所有 WordPress 功能,是更專業且穩健的作法。

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