告別手動回覆!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 自動化能力更上一層樓,強烈建議閱讀以下幾篇深度技術文章,讓你的數位大腦更完整:
- 資料孤島終結者!n8n Webhook + API 串接實戰:讓你的 WordPress 與外部系統「秒速」通靈 – 如果你覺得寫 PHP 太累,用 n8n 視覺化串接 LINE 也是一條路。
- 你的客戶在 LINE 叫陳先生,在臉書叫 David C.?終極 API 戰術,縫合破碎的用戶數據,打造無斷點客服體驗! – 進階心法:如何把 LINE User ID 跟你的會員資料庫綁定。
- 你的 WordPress 網站是「真 AI」還是「裝 AI」?資深工程師手把手教你串接 OpenAI API,打造會思考的智慧大腦! – 學會這招,你的 LINE Bot 就不再只會回罐頭訊息。
常見問題 (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)。不要直接修改原本的主題檔案或第三方外掛,以免更新後程式碼被覆蓋消失。
自動化這條路一旦開始了,就回不去了。把時間花在更有創造力的事情上,回訊息這種事,就交給程式碼吧!如果你在實作上遇到任何「靈異現象」,或者需要更客製化的企業級解決方案,歡迎隨時找我們聊聊。






