用 WordPress 打造你的 24H LINE 智能客服大師
資深工程師 Eric 揭示如何在 LINE 普及的台灣市場中,擺脫低效率的人工客服。這篇文章將徹底顛覆您對 WordPress 的認知,證明它不只是個部落格,更是功能強大的應用程式框架!我們將手把手教您利用 WordPress REST API 建立安全、高效的 LINE Webhook 接收端,實現 24 小時不間斷的自動回覆。從基礎的訊息覆誦到串接 WooCommerce 查訂單、甚至整合 AI,您的網站潛力無限。別再讓重複性工作佔用您的時間!立即捲起袖子,開啟您的 WordPress 自動化新篇章,或聯繫我們的專業團隊,為您客製化最複雜的商業邏輯!
LINE Chatbot 不求人!資深工程師手把手,用 WordPress 打造你的 24H 自動回覆大師
嗨,我是浪花科技的資深工程師 Eric。在數位時代,即時通訊軟體已經是客戶溝通的主要戰場,特別是在台灣,LINE 的普及率高得嚇人。很多企業都創立了 LINE 官方帳號,但很快就發現一個殘酷的現實:客服人力有限,回覆永遠慢半拍,或是只能用罐頭訊息應付,使用者體驗差到不行。
身為一個看到重複性工作就渾身不對勁的工程師,我總在想:為什麼不讓我們的網站自己來處理這些事呢?特別是如果你已經有一個功能強大的 WordPress 網站,它不僅僅是個內容發布系統,它完全有潛力成為你整個自動化工作流的中樞神經。今天,我就要帶大家捲起袖子,一步步實戰,教你如何利用 WordPress 的彈性,進行一場完整的 LINE Messaging API Chatbot 建置,讓你的網站學會 24 小時不打烊地跟使用者「聊天」。
為什麼要用 WordPress 打造 LINE Chatbot?別再只把它當部落格了!
我知道,很多人聽到 WordPress,直覺反應就是「喔,那個做部落格的」。這真是天大的誤會!現代的 WordPress 是一個成熟的應用程式框架 (Application Framework)。它擁有強大的使用者管理、豐富的資料庫操作函式庫 (WPDB),以及最重要的——可以無限擴充的 REST API。這代表什麼?
- 數據整合的絕佳平台: 你的使用者資料、商品庫存 (WooCommerce)、文章內容、活動資訊,全部都在 WordPress 裡。Chatbot 可以直接讀取這些資料,提供個人化、即時的資訊,而不是一個與網站完全脫節的孤島。
- 完全的控制權與彈性: 使用第三方 Chatbot 平台雖然方便,但總有功能限制,或是費用高昂。自己用 WordPress 開發,你想怎麼玩就怎麼玩,從簡單的關鍵字回覆,到串接金流、ERP,甚至是 AI 模型,天空才是你的極限。
- 成本效益: 除了你的開發時間,幾乎沒有額外成本。你不需要再多付一筆 SaaS 服務的月費,所有的運算都在你自己的主機上完成。對於我們這種精打細算的工程師來說,這點實在太香了。
簡單來說,把 LINE Chatbot 的大腦直接建構在 WordPress 裡,就像是為你的網站裝上了一對耳朵和一張嘴,讓它能直接與外界溝通,執行更複雜的自動化任務。
戰前準備:打造 LINE Chatbot 的基礎建設
在我們開始寫 Code 之前,有幾樣東西得先準備好,這就像蓋房子前要先打好地基一樣,一步都不能少。囉嗦是囉嗦了點,但相信我,先把環境搞定,可以省下你後面無數個抓蟲的夜晚。
第一步:你的 WordPress 網站 (而且必須是 HTTPS)
這點是硬性要求,沒得商量。LINE 的 Webhook 機制為了安全,只會將資料傳送到 `https://` 開頭的安全網址。如果你的網站還在用 `http://`,趕快去裝個 SSL 憑證吧。現在有很多免費的選擇,像是 Let’s Encrypt,我們的部落格裡也有完整的 Certbot 自動化教學,別再拖了!
第二步:註冊一個 LINE Developers 帳號並建立 Provider 與 Channel
- 前往 LINE Developers Console,用你的 LINE 帳號登入。
- 建立一個新的「Provider」(供應商),可以把它想成是你公司或品牌的名稱。
- 在 Provider 底下,選擇「Create a new channel」,然後選擇「Messaging API」。
- 填寫所有必要的資訊,像是 Channel icon、Channel name 等。完成後,你就擁有一個專屬的 LINE Bot 頻道了!
第三步:取得兩把關鍵鑰匙
進入你剛剛建立的 Channel 後台,找到「Messaging API」這個頁籤。這裡有兩個非常重要的東西,請務必把它們複製下來保管好,絕對不要外洩:
- Channel access token (long-lived): 這就像是你的機器人要去 LINE API 辦事時的「通行證」。當我們要從 WordPress 主動發送訊息給使用者時,就需要這組 Token 來驗明正身。
- Channel secret: 這則是用來驗證「是不是真的 LINE 官方把訊息傳給你」的一把「密鑰」。LINE 傳送 Webhook 到你的 WordPress 時,會用這個 Channel Secret 產生一個簽章,我們收到後要用同樣的方式計算一次,比對看看是否相符,以防有人偽造請求。
好了,基礎建設完成。現在,讓我們開始動手,為 WordPress 注入靈魂!
核心實戰:用 WordPress REST API 接收與回應 LINE 訊息
整個 Chatbot 的運作核心就是「Webhook」。簡單說,當使用者傳訊息給你的 LINE Bot 時,LINE 的伺服器會立刻向你指定的「Webhook URL」發送一個 HTTP POST 請求,裡面包含了使用者的訊息內容、是誰傳的、什麼時候傳的…等所有資訊。我們的工作,就是在 WordPress 裡建立一個能夠接收這個請求的端點 (Endpoint),並根據收到的內容做出回應。
最好的方法就是利用 WordPress 內建的 REST API 機制來註冊一個自訂的路由。把下面的程式碼,放到你子佈景主題的 `functions.php` 檔案裡。千萬記得,是「子佈景主題」!直接改動原始主題,一更新就什麼都沒了,這可是工程師的大忌啊!
第一步:註冊 Webhook 接收端點
我們需要告訴 WordPress:「嘿,幫我開一個網址,例如 `https://yourdomain.com/wp-json/line-bot/v1/webhook`,只要有 POST 請求送到這裡,就交給 `handle_line_webhook` 這個函式處理。」
<?php
add_action('rest_api_init', function () {
register_rest_route('line-bot/v1', '/webhook', [
'methods' => 'POST',
'callback' => 'handle_line_webhook',
'permission_callback' => '__return_true' // 暫時開放權限,之後會加上驗證
]);
});
?>
第二步:編寫 Webhook 核心處理函式
這就是我們 Chatbot 的大腦了。這個函式會負責幾件大事:驗證請求的合法性、解析收到的訊息、決定要回覆什麼,然後呼叫另一個函式把回覆訊息送出去。
<?php
function handle_line_webhook(WP_REST_Request $request) {
// -----------------------------------------------------
// 囉嗦一下:定義你的 Channel Secret 和 Access Token
// 最好是使用 wp-config.php 的常數來定義,不要直接寫在程式碼裡
// define('LINE_CHANNEL_SECRET', '你的 Channel Secret');
// define('LINE_CHANNEL_ACCESS_TOKEN', '你的 Channel Access Token');
// -----------------------------------------------------
$channel_secret = defined('LINE_CHANNEL_SECRET') ? LINE_CHANNEL_SECRET : '';
// 1. 驗證簽章,這是最重要的安全防線!
$signature = $request->get_header('x-line-signature');
$body = $request->get_body();
if (empty($signature)) {
return new WP_Error('bad_request', 'Signature not set.', ['status' => 400]);
}
$hash = hash_hmac('sha256', $body, $channel_secret, true);
$expected_signature = base64_encode($hash);
if ($signature !== $expected_signature) {
// 簽章不符,代表這可能是偽造的請求,直接擋掉!
error_log('LINE Webhook: Invalid signature.');
return new WP_Error('invalid_signature', 'Invalid signature.', ['status' => 403]);
}
// 2. 解析 LINE 送來的資料
$events = $request->get_json_params()['events'];
if (empty($events)) {
return new WP_REST_Response('OK', 200);
}
// 3. 處理每個事件
foreach ($events as $event) {
// 我們只處理訊息事件,其他像加入好友、封鎖等事件先忽略
if ($event['type'] == 'message') {
$reply_token = $event['replyToken'];
$message_type = $event['message']['type'];
// 根據不同訊息類型做不同處理
switch ($message_type) {
case 'text':
$user_text = $event['message']['text'];
// 簡單的 echo bot 邏輯:使用者說什麼,我們就回什麼
$reply_text = '你說了:' . $user_text;
reply_to_line($reply_token, [['type' => 'text', 'text' => $reply_text]]);
break;
case 'sticker':
// 如果收到貼圖,就回覆一個感謝訊息
$reply_text = '謝謝你的貼圖!';
reply_to_line($reply_token, [['type' => 'text', 'text' => $reply_text]]);
break;
// 你可以在這裡擴充,處理圖片、影片等其他類型的訊息
default:
// 不支援的訊息類型
error_log('LINE Webhook: Unhandled message type: ' . $message_type);
break;
}
}
}
// 4. 回應一個 HTTP 200 OK 給 LINE 伺服器,告訴它我們收到了
return new WP_REST_Response('OK', 200);
}
?>
第三步:建立回覆訊息的函式
上面的函式呼叫了 `reply_to_line()`,現在我們來實作它。這個函式專門負責打包我們要回覆的訊息,並透過 `wp_remote_post` 把它們發送到 LINE 的 Reply Message API。
<?php
function reply_to_line($reply_token, $messages) {
$channel_access_token = defined('LINE_CHANNEL_ACCESS_TOKEN') ? LINE_CHANNEL_ACCESS_TOKEN : '';
$url = 'https://api.line.me/v2/bot/message/reply';
$headers = [
'Content-Type' => 'application/json',
'Authorization' => 'Bearer ' . $channel_access_token,
];
$body = [
'replyToken' => $reply_token,
'messages' => $messages,
];
$response = wp_remote_post($url, [
'headers' => $headers,
'body' => json_encode($body),
]);
// 偵錯用:檢查 API 回應是否有誤
if (is_wp_error($response)) {
error_log('LINE Reply API Error: ' . $response->get_error_message());
} else {
$response_code = wp_remote_retrieve_response_code($response);
if ($response_code != 200) {
error_log('LINE Reply API HTTP Error: ' . $response_code . ' - ' . wp_remote_retrieve_body($response));
}
}
}
?>
把以上三段程式碼都加到你子佈景主題的 `functions.php` 後,回到你的 LINE Developers Console,在「Messaging API」頁籤下找到「Webhook settings」,把你的 Webhook URL (`https://yourdomain.com/wp-json/line-bot/v1/webhook`) 填進去,並啟用「Use webhook」。
現在,拿出你的手機,對你的 LINE 官方帳號發送一則訊息試試看!如果一切順利,你應該會收到機器人幾乎是秒回的覆誦訊息。恭喜你,你的 WordPress 已經成功化身為一個 LINE Chatbot 了!
下一步?解放 WordPress 的無限潛能
一個只會覆誦的機器人當然不夠看。但現在你已經打通了任督二脈,接下來的可能性是無限的:
- 關鍵字觸發文章查詢: 收到特定關鍵字時,使用 `WP_Query` 查詢相關文章,並將文章標題、連結以文字或卡片格式回覆。
- WooCommerce 訂單狀態查詢: 讓使用者輸入訂單編號,你的 Chatbot 就能從資料庫撈出訂單狀態並回覆。
- 內容訂閱服務: 建立一個功能,讓使用者輸入「訂閱」,你就將他的 LINE User ID 存到 `usermeta` 或自訂資料表。每當有新文章發布時,就透過 Push API 主動推播通知給所有訂閱者。
- 串接 OpenAI API: 接收到使用者問題後,將問題傳遞給 OpenAI API,再將 AI 生成的回答回覆給使用者,打造一個真正會思考的智慧客服。我們之前也寫過相關文章,原理是相通的!
這才是 LINE Messaging API Chatbot 建置 的真正魅力所在——將 LINE 的即時通訊能力與 WordPress 強大的內容管理和擴充性完美結合。你的網站不再是一個被動的資訊展示平台,而是一個能與使用者深度互動、提供即時服務的動態應用程式。
今天的教學只是一個起點,一個讓你窺見 WordPress 強大潛力的窗口。從這裡出發,你可以打造出各式各樣獨一無二的自動化應用。身為工程師,最快樂的事莫過於此——用程式碼解決實際問題,讓世界運轉得更有效率一點點。
相關推薦閱讀
- 你的 WordPress 正在大開後門嗎?資深工程師的 Webhook 設計與安全驗證終極指南
- WordPress 只能寫文章?錯!資深工程師手把手教你用 REST API 自訂端點,打造無頭應用超能力!
- 告別手動複製貼上!WooCommerce Webhook 終極指南:打造零失誤、全自動的訂單處理流程
如果你在建置過程中遇到任何棘手的問題,或者有更複雜的商業邏輯、系統串接需求,例如需要整合 ERP、CRM 或是打造更複雜的互動流程,這通常需要更深入的架構設計與開發。歡迎與浪花科技的團隊聯繫,我們很樂意提供專業的技術諮詢與開發服務,協助你打造真正能解決商業痛點的自動化解決方案。
常見問題 (FAQ)
Q1: 為什麼我的網站一定要有 SSL (HTTPS) 才能用 LINE Webhook?
這是 LINE 官方的安全性規定。Webhook 傳輸的資料可能包含敏感的使用者資訊,為了確保資料在傳輸過程中不被竊聽或竄改,LINE 強制要求 Webhook URL 必須是加密的 HTTPS 連線。這也是現代網站開發的基本安全標準。
Q2: 「Channel Secret」和「Channel Access Token」到底有什麼不同?
你可以這樣理解:「Channel Secret」是『對內』的鑰匙,用來驗證從 LINE 伺服器『傳進來』的請求是不是合法的,確保不是駭客偽造的請求。「Channel Access Token」則是『對外』的通行證,當你的 WordPress 網站要主動『傳出去』訊息給 LINE API 時(例如回覆訊息、主動推播),需要用這組 Token 來證明自己的身份。
Q3: 我的 LINE Bot 都沒有反應,該怎麼除錯?
除錯三步驟:第一,請再三確認你在 LINE Developers Console 填寫的 Webhook URL 是否正確,並且已經啟用了 Webhook。第二,暫時在 WordPress 的 `wp-config.php` 檔案中開啟除錯模式(`define(‘WP_DEBUG’, true);` 和 `define(‘WP_DEBUG_LOG’, true);`),然後再次測試,接著到 `wp-content` 資料夾下查看 `debug.log` 檔案,看看是否有任何 PHP 錯誤訊息。第三,檢查你的 Channel Secret 和 Access Token 是否有複製錯誤,或是不小心包含了空格。






