LINE 官方帳號還在手動回? WordPress LINE Chatbot 開發實戰,從 Webhook 到 WooCommerce 全自動!
☰ 目錄 table-of-contents.md
半夜三點,客戶在 LINE 官方帳號丟來一句「請問還有貨嗎」,難道真的要從床上跳起來回?更別說每次有新訂單、新留言,還得手動複製貼上、傳訊通知自己或團隊,光想就心累。這篇實戰帶你從 Webhook 接上 WordPress,一路串到 WooCommerce,讓 LINE Chatbot 全自動上工。
別鬧了,我們是活在 21 世紀的開發者,這種事情當然要交給自動化!今天,我就要帶你手把手,從零開始在你的 WordPress 網站上,打造一個真正屬於你自己的 LINE Messaging API Chatbot。這不是那種只會關鍵字回覆的陽春機器人,而是一個能深度整合你網站功能的智慧小幫手。準備好了嗎?泡杯咖啡,跟著我一起來趟程式碼的奇幻之旅吧!
為什麼你的 WordPress 網站需要一個「會思考」的 LINE Chatbot?
你可能會想:「市面上一堆 Chatbot 服務,為什麼我還要自己寫?」問得好。那些服務雖然方便,但往往彈性不足,而且通常需要額外付費。當你想要的功能是「當 WooCommerce 有一筆『已完成』的訂單時,自動傳送一則附有客戶姓名和訂單編號的訊息到我私人的 LINE」時,你會發現多數的套裝服務都做不到,或者需要串接到天荒地老。
自己開發就不一樣了,整個 WordPress 的核心功能、資料庫、外掛生態系,都是你的武器庫。你可以做到:
- 24/7 全天候自動客服: 設定常見問題回覆,讓 Chatbot 處理掉 80% 的重複性問題。
- 即時事件通知: 網站有新留言、新訂單、使用者註冊,第一時間透過 LINE 通知你或指定的管理員。
- 個人化行銷推播: 根據使用者在網站上的行為(例如:瀏覽過某個商品),透過 LINE 推送相關的優惠訊息。
- 內容訂閱與派送: 使用者只要輸入「訂閱最新文章」,你的 Chatbot 就能在發佈新文章時自動通知他們。
總之,可能性無窮無盡。一旦你打通了 WordPress 和 LINE 之間的任督二脈,你的網站就不再只是一個被動的內容展示平台,而是一個能與使用者即時互動的動態服務中心。
戰前準備:建置 LINE Chatbot 的必備軍火庫
在我們開始寫 Code 之前,有些前置作業是免不了的。就像蓋房子要先打好地基一樣,這些準備工作能確保後續開發順利,少踩一點坑。工程師的日常,就是花 80% 的時間在準備和除錯,剩下 20% 才是真正享受寫程式的快感。
1. 你的 WordPress 環境
這部分很基本,但非常重要。你的網站必須具備:
- 有效的 SSL 憑證 (HTTPS): 這是絕對必要的條件。LINE 的 Webhook 只接受 HTTPS 協定的 URL,這是為了確保通訊過程中的資料安全。如果你的網站還在用 HTTP,趕快去處理一下吧,這對 SEO 和使用者信任度也很重要。
- 管理員權限: 你需要能夠安裝外掛、編輯程式碼的權限。
2. LINE Developers 帳號與 Messaging API Channel
接下來,我們要到 LINE 的開發者後台去申請我們的「機器人執照」。
- 步驟一: 前往 LINE Developers Console,用你的 LINE 帳號登入。
- 步驟二: 建立一個新的「Provider」。你可以把它想像成是你公司或品牌的開發者身份。
- 步驟三: 在你的 Provider 之下,選擇「Create a new channel」,然後選擇「Messaging API」。
- 步驟四: 填寫你的 Channel 基本資料,像是名稱、描述、頭像等等。
- 步驟五: 建立完成後,進入你的 Channel 設定頁面。有兩個東西是我們的命脈,一定要先找個安全的地方記下來:
- Channel secret: 用來驗證從 LINE 伺服器發過來的請求是不是合法的。
- Channel access token: 我們要回覆訊息給使用者時,需要用到的「通行證」。通常會是一個很長的字串,點擊「Issue」按鈕來產生。
囉嗦一下:這兩組金鑰絕對不要外洩,也千萬不要直接寫死在你的 GitHub public repository 裡,不然你的機器人很快就會被別人接管,開始傳送一些奇怪的訊息了。
動手實作!從零打造你的 WordPress LINE Chatbot 外掛
好了,萬事俱備,只欠東風(Code)!我們將會建立一個非常簡單的 WordPress 外掛來處理所有跟 LINE 的互動。
步驟一:建立外掛基本架構
首先,在你的 WordPress 網站的 /wp-content/plugins/ 資料夾下,建立一個新的資料夾,例如 my-line-chatbot。然後在裡面建立一個 PHP 檔案,例如 my-line-chatbot.php。打開這個檔案,貼上外掛的標頭資訊:
<?php
/**
* Plugin Name: My Awesome LINE Chatbot
* Description: A custom LINE Chatbot integration for WordPress.
* Version: 1.0
* Author: Eric @ Roamer Tech
*/
if ( ! defined( 'ABSPATH' ) ) {
exit; // Exit if accessed directly
}
// 我們的主要邏輯會寫在這裡
這段程式碼讓 WordPress 知道這是一個外掛。去後台啟用它吧!雖然它現在什麼事都還不會做。
步驟二:設定 Webhook,讓 LINE 知道該找誰
Webhook 是什麼?簡單說,就是一個 URL。當你的 LINE 官方帳號收到訊息時,LINE 的伺服器就會朝這個 URL 發送一個 HTTP POST 請求,把訊息內容、使用者資訊等等都打包好送過來。我們要做的,就是建立一個專門接收這個請求的「窗口」。
在 WordPress 中,最優雅的作法就是註冊一個自訂的 REST API 端點。把下面的程式碼加到你的外掛檔案裡:
add_action( 'rest_api_init', function () {
register_rest_route( 'my-line-chatbot/v1', '/webhook', [
'methods' => 'POST',
'callback' => 'handle_line_webhook',
] );
} );
這段碼的意思是:「嘿 WordPress,幫我開一個網址 https://yourdomain.com/wp-json/my-line-chatbot/v1/webhook,當有 POST 請求進來時,就去執行一個叫做 `handle_line_webhook` 的函式。」
現在,把這個完整的 URL 貼到你 LINE Developers 後台的「Messaging API」設定頁面下的「Webhook URL」欄位,並啟用「Use webhook」。
步驟三:接收並驗證 LINE 傳來的訊息
任何人都可以向我們的 Webhook URL 發送請求,所以我們必須驗證請求是否真的來自 LINE。這就要用到前面記下來的 `Channel Secret` 了。LINE 會在 HTTP 標頭中夾帶一個名為 `X-Line-Signature` 的簽章,我們需要用 `Channel Secret` 產生同樣的簽章來比對。
function handle_line_webhook( WP_REST_Request $request ) {
// 請將 'YOUR_CHANNEL_SECRET' 換成你自己的 Channel Secret
$channel_secret = 'YOUR_CHANNEL_SECRET';
// 從 Request header 取得簽章
$signature = $request->get_header( 'x_line_signature' );
// 取得 Request body
$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 );
$generated_signature = base64_encode( $hash );
// 驗證簽章是否相符
if ( $signature !== $generated_signature ) {
error_log('LINE Webhook: Signature validation failed!');
return new WP_Error( 'invalid_signature', 'Invalid signature', [ 'status' => 403 ] );
}
// 簽章驗證成功,處理事件
$events = json_decode( $body, true );
if ( ! empty( $events['events'] ) ) {
foreach ( $events['events'] as $event ) {
// 在這裡處理不同類型的事件 (例如: 收到訊息、被加好友)
// 我們先專注在訊息事件
if ( $event['type'] === 'message' && $event['message']['type'] === 'text' ) {
reply_to_line_message( $event );
}
}
}
return new WP_REST_Response( 'OK', 200 );
}
這段程式碼有點硬,但它做的事情很單純:拿到請求 -> 拿到簽章 -> 自己算一次簽章 -> 比對一下。如果不一樣,就代表是偽造的請求,直接把它踢出去。這一步是資安的基礎,絕對不能省!
步驟四:解析訊息並做出回應 (Echo Bot)
驗證成功後,我們就可以安心地處理訊息了。作為入門,我們先來做一個最簡單的「Echo Bot」,也就是你傳什麼訊息給它,它就回覆一模一樣的訊息。
我們需要建立 `reply_to_line_message` 這個函式:
function reply_to_line_message( $event ) {
// 請將 'YOUR_CHANNEL_ACCESS_TOKEN' 換成你自己的 Channel Access Token
$access_token = 'YOUR_CHANNEL_ACCESS_TOKEN';
$reply_token = $event['replyToken'];
$user_message = $event['message']['text'];
$reply_data = [
'replyToken' => $reply_token,
'messages' => [
[
'type' => 'text',
'text' => '你剛剛說了:' . $user_message,
],
],
];
$url = 'https://api.line.me/v2/bot/message/reply';
$headers = [
'Content-Type' => 'application/json',
'Authorization' => 'Bearer ' . $access_token,
];
$args = [
'body' => json_encode( $reply_data ),
'headers' => $headers,
'timeout' => 60,
];
// 使用 WordPress 的 HTTP API 來發送請求
$response = wp_remote_post( $url, $args );
// 記錄 Log,方便除錯
if ( is_wp_error( $response ) ) {
error_log( 'LINE Reply Error: ' . $response->get_error_message() );
}
}
這段程式碼做了幾件事:
- 從事件中取得 `replyToken`(回覆這次對話的鑰匙)和使用者傳來的訊息。
- 準備好要回傳的資料格式(一個簡單的文字訊息)。
- 設定好請求的標頭,特別是 `Authorization`,要把我們的 `Channel Access Token` 放進去。
- 使用 WordPress 內建的 `wp_remote_post` 函式,把我們的回覆訊息發送給 LINE 的 Reply API。
把這幾段程式碼組合起來,存檔。現在,打開你的 LINE,找到你的官方帳號,傳個訊息試試看!如果一切順利,你應該會收到機器人回傳「你剛剛說了:[你的訊息]」的訊息。恭喜你,你的第一個 WordPress LINE Chatbot 誕生了!
進階應用:讓你的 Chatbot 更上一層樓
只會學人說話的 Echo Bot 當然不夠看。既然我們身處 WordPress 的主場,就要善用它的強大功能。
串接 WooCommerce:自動發送訂單通知
想像一下,客戶下單完成後,你的 LINE 馬上跳出通知,是不是很酷?我們可以透過 WooCommerce 的 Hook 來達成。
// 概念程式碼,實際應用需處理如何取得使用者 LINE ID
add_action( 'woocommerce_thankyou', 'send_line_order_notification', 10, 1 );
function send_line_order_notification( $order_id ) {
if ( ! $order_id ) return;
$order = wc_get_order( $order_id );
$message = sprintf("新訂單通知!\n訂單編號:%s\n總金額:%s\n客戶:%s",
$order->get_order_number(),
$order->get_total(),
$order->get_billing_first_name()
);
// 這裡需要一個函式,將訊息推送到指定的 LINE User ID
// push_line_message('YOUR_ADMIN_LINE_USER_ID', $message);
}
這段程式碼會在訂單完成頁面觸發,抓取訂單資訊後,就可以呼叫 LINE Push API 把訊息傳送給指定的管理員。這比 Email 通知快多了!
關鍵字觸發:查詢最新文章
我們也可以讓 Chatbot 變得更聰明。修改一下 `handle_line_webhook` 函式裡的事件處理迴圈,加入關鍵字判斷:
// 於 handle_line_webhook 函式中
$user_message = $event['message']['text'];
if ( trim($user_message) === '最新文章' ) {
reply_with_latest_posts( $event['replyToken'] );
} else {
// 原本的 Echo Bot 邏輯
reply_to_line_message( $event );
}
然後我們來實作 `reply_with_latest_posts` 函式,利用 `WP_Query` 抓取文章:
// 概念程式碼
function reply_with_latest_posts( $reply_token ) {
$args = [
'post_type' => 'post',
'posts_per_page' => 3,
'post_status' => 'publish',
];
$query = new WP_Query( $args );
$reply_text = "為您找到最新的 3 篇文章:\n";
if ( $query->have_posts() ) {
while ( $query->have_posts() ) {
$query->the_post();
$reply_text .= get_the_title() . "\n" . get_permalink() . "\n\n";
}
}
wp_reset_postdata();
// 接下來就是打包成 LINE Message 格式,用 reply API 回傳...
}
這樣一來,當使用者傳送「最新文章」時,機器人就會自動去資料庫撈資料,並回傳最新的文章列表,瞬間變成一個內容派送小助手!
工程師的囉嗦時間:部署與維護的注意事項
程式碼能動只是第一步,要讓它穩定可靠地運行,還有一些事情你必須注意:
- 日誌 (Logging) 是你的好朋友: 在處理 Webhook 的過程中,善用
error_log()函式。把收到的請求內容、驗證過程、發送的回覆都記錄下來。當機器人行為不正常時,這些日誌就是你唯一的破案線索。 - 金鑰管理: 再囉嗦一次,不要把 Channel Secret 和 Access Token 直接寫在程式碼裡。比較好的做法是把它們定義在
wp-config.php檔案中,例如define('LINE_CHANNEL_SECRET', 'your_secret');,然後在程式碼中用LINE_CHANNEL_SECRET來取用。這樣程式碼本身就不會包含敏感資訊。 - 非同步處理: 如果你的 Chatbot 需要做一些比較耗時的操作(例如:串接外部 API、複雜的資料庫查詢),最好不要直接在 Webhook 的處理流程中執行。因為 LINE 的 Webhook 有超時限制,太久沒回應會失敗。進階作法是將耗時任務丟到 WordPress 的 Cron Job 或 Action Scheduler 中背景執行,Webhook 只需要快速回應一個「處理中」的訊息即可。
打造一個強大的 Chatbot 是一條持續優化的路。從一個簡單的 Echo Bot 開始,逐步為它添加新功能,你會發現它能為你的網站和業務帶來巨大的價值。自動化不僅解放了你的雙手,更讓你的服務體驗提升到一個新的層次。
希望這篇從零到一的實戰教學對你有幫助。如果你在開發過程中遇到任何問題,或是想實現更複雜的客製化 LINE Chatbot 功能,別客氣,浪花科技的團隊隨時準備好為你提供專業的技術支援。
延伸閱讀
- n8n、Make、Zapier 怎麼選?2026 自動化平台完整比較
- WordPress REST API 宇宙大爆炸:從零開始打造你的第一個自訂端點!
- 你的 WordPress 正在大開後門嗎?資深工程師的 Webhook 設計與安全驗證終極指南
- 訂單一來,自動歸檔通知?揭秘 WooCommerce Webhook 自動化訂單流程,讓你躺著也賺錢!
對打造更強大的 WordPress 自動化流程有興趣嗎?或是有更複雜的 API 串接需求?歡迎點擊這裡,填寫表單與我們的技術專家聊聊!讓我們一起把你的絕佳點子變成現實。
常見問題
開發 LINE Chatbot 的 Webhook 為什麼一定要用 HTTPS?
申請 LINE Messaging API 後要記下哪些重要金鑰?
在 WordPress 中如何建立接收 LINE 訊息的 Webhook 窗口?
如何驗證 Webhook 請求確實來自 LINE?
訂閱免費電子報
把 AI 自動化、企業系統設計與 WordPress / Laravel 開發的真實案例和可直接照做的技巧,整理成電子報寄給你。只寄精選內容、不灌垃圾信,一鍵就能退訂。