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 想像成一個「告密者」或「即時通知系統」。整個流程是這樣的:
- 使用者傳訊息給你的 LINE 官方帳號。
- LINE 的伺服器收到訊息後,會立刻透過 Webhook,往你指定的一個「URL 網址」發送一個 HTTP POST 請求,這個請求的內容(我們稱之為 payload)包含了誰傳的、傳了什麼內容等所有資訊。
- 這個指定的「URL 網址」就是我們要在 WordPress 上建立的「耳朵」,專門用來接收 LINE 的通知。
- 我們在 WordPress 端的程式收到這個請求後,解析內容,判斷使用者想幹嘛。
- 我們的程式處理完後,再呼叫 LINE Messaging API,把要回覆的訊息傳回去給 LINE 伺服器。
- LINE 伺服器再把訊息轉發給使用者。
看起來好像很複雜,但其實就是一個「你丟我撿」的過程。我們的任務,就是在 WordPress 裡建立那個接收球的「耳朵」(Webhook Endpoint),以及判斷如何回球的「大腦」(Bot Logic)。
實戰教學:WordPress LINE Messaging API Chatbot 建置四步驟
理論講完了,我們來點實際的。跟著我一步一步來,你也能完成你的第一個 LINE 機器人。
步驟一:建立你的 LINE Messaging API 頻道
首先,你必須要有一個 LINE Developers 帳號。沒有的話就去註冊一個吧!
- 登入 LINE Developers Console。
- 建立一個新的「Provider」(供應商),可以填你的公司或團隊名稱。
- 在建立好的 Provider 裡面,選擇「Create a new channel」,然後選擇「Messaging API」。
- 填寫頻道的各種資訊,頭像、名稱、描述等等。
- 建立完成後,進入你的頻道,點擊「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 你的「耳朵」在哪裡。
- 回到你的 LINE Developers Console 頻道設定頁面。
- 找到「Webhook settings」區塊。
- 在「Webhook URL」欄位,填上你剛剛建立的網址:`https://你的網域.com/wp-json/my-line-bot/v1/webhook`
- 點擊「Verify」按鈕,如果你的程式碼沒問題,應該會顯示 Success。
- 最後,把「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 開發的任督二脈:搞懂 Action & Filter Hooks,客製化功力大爆發!
- 解鎖 WordPress 的無限可能:資深工程師帶你深入 REST API 的黑魔法世界
- 用 n8n 為 WordPress 注入自動化靈魂:你該知道的五大應用場景
我們專注於提供企業級的 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 功能,是更專業且穩健的作法。






