LINE 機器人製作完整步驟:從申請帳號到串接 API 實作教學

Published on: | Last updated:

嗯,來聊聊怎麼做一個 LINE 機器人吧

最近好像很多人想自己做 LINE Bot,但網路上教學感覺... 有點跳躍。 不是寫給工程師看、太深,就是只講行銷概念,中間那塊「到底怎麼從零開始」好像沒人想碰。我來試著整理一下好了,從頭開始,一步一步來。

目標是,就算你不是本科系的,也能大概聽懂整個流程。至少知道發生了什麼事。

重點一句話

簡單說,就是去 LINE 官方開發者後台申請一個「門牌」(API Channel),拿到兩把「鑰匙」(Token 跟 Secret),然後告訴 LINE 你家的「地址」(Webhook URL),這樣 LINE 就能把訊息送到你家給你處理了。

整個流程長怎樣?

在我們動手之前,先搞懂角色關係很重要。不然你會不知道現在到底在哪一步。

基本上就是這幾個角色在互動:

  • 你 (使用者):傳訊息給機器人。
  • LINE Platform:LINE 的伺服器,像個總機,收到你的訊息。
  • 你的程式 (Your Server / Webhook):你寫的程式,放在某個地方等著。LINE 的總機會把訊息轉送到這裡。
  • 機器人回覆:你的程式處理完訊息後,再透過 LINE 的總機回覆訊息給你。

所以,使用者不是直接跟你的程式溝通,中間都隔著 LINE Platform。這也是為什麼我們需要設定一堆東西,就是要讓他們兩個能互相認得、順利溝通。

LINE Bot 訊息傳遞流程示意圖
LINE Bot 訊息傳遞流程示意圖

怎麼做:從申請帳號到串接實作

好,理論講完了,來實際操作。一步一步跟著做,應該不會太難。

第一步:準備好 LINE 開發者帳號

首先,你要有個地方放你的機器人設定。那個地方就叫 LINE Developers Console

  1. 登入開發者後台:先去 LINE Developers 網站,用你自己的 LINE 帳號登入就行。
  2. 建立 Provider:登入後,你會看到建立 Provider 的按鈕。 Provider... 你可以想像成是「開發商」或「公司」的感覺,一個開發商底下可以有很多個不同的機器人 (Channel)。 就填個你喜歡的名字,例如你的名字或公司名。
  3. 建立 Channel:有了 Provider 之後,就可以在底下建立 Channel。Channel 才是機器人的本體。我們要選的是「Messaging API」。 這裡會要你填一些機器人的基本資料,像是頭像、名稱、介紹等等,就照實填。比較重要的是,你會被要求連結一個 LINE 官方帳號 (LINE Official Account),如果沒有的話,它會引導你建立一個新的。

完成這步,你就等於在 LINE 的世界裡,幫你的機器人報好戶口了。

開發環境大概長這樣
開發環境大概長這樣

第二步:拿到重要的兩把鑰匙

戶口報好了,接下來要拿鑰匙,才能跟 LINE 的系統溝通。這兩把鑰匙都在你剛剛建立好的 Channel 設定頁裡。

  • Channel access token (long-lived):這就像一把萬能鑰匙,你的程式要主動傳訊息給使用者(例如推播),或是回覆訊息時,都要靠它。 在 "Messaging API" 的頁籤裡,往下滑應該就能找到,如果沒有就按「issue」或「發行」。
  • Channel secret:這比較像一把... 確認身份用的私鑰。主要是用來驗證從 LINE 伺服器傳來的請求是不是真的,而不是別人偽造的。

這兩個東西非常重要,尤其是 Channel secret,絕對不能外洩。通常我們會把它們存在環境變數裡,而不是直接寫在程式碼中。

第三步:架設伺服器並設定 Webhook

這是最關鍵,也是最多人卡關的一步。前面說過,LINE 收到訊息後,會把訊息「轉送」到你指定的地址,這個地址就是 Webhook URL。

這代表你需要有一個公開的網址,而且必須是 `https` 開頭的安全連線。 對新手來說,自己搞一個有 https 的伺服器太麻煩了。所以我們用一個很方便的工具來解決這個問題:ngrok

什麼是 ngrok?

簡單說,ngrok 能幫你在你的電腦(localhost)和網際網路之間,挖一條安全的隧道。它會給你一個公開的 `https` 網址,然後把所有送到這個網址的請求,都轉發到你電腦上的特定連接埠(port)。 這讓我們可以在自己的電腦上開發和測試,超級方便。

操作流程:

  1. 安裝並執行 Python 程式:首先,你要有一段簡單的程式碼,用來接收 LINE 的訊息。這邊用 Python 的 Flask 框架當例子,因為它很輕巧。你需要先安裝 `flask` 跟 `line-bot-sdk`。
    
     pip install flask line-bot-sdk
       
    然後寫一個簡單的 `app.py` 檔案。
    
     from flask import Flask, request, abort
     from linebot.v3 import WebhookHandler
     from linebot.v3.exceptions import InvalidSignatureError
     from linebot.v3.messaging import Configuration, ApiClient, MessagingApi, ReplyMessageRequest, TextMessage
     from linebot.v3.webhooks import MessageEvent, TextMessageContent
     
     app = Flask(__name__)
     
     # 你的 Channel Access Token
     configuration = Configuration(access_token='YOUR_CHANNEL_ACCESS_TOKEN')
     # 你的 Channel Secret
     handler = WebhookHandler('YOUR_CHANNEL_SECRET')
     
     @app.route("/callback", methods=['POST'])
     def callback():
         # get X-Line-Signature header value
         signature = request.headers['X-Line-Signature']
     
         # get request body as text
         body = request.get_data(as_text=True)
         app.logger.info("Request body: " + body)
     
         # handle webhook body
         try:
             handler.handle(body, signature)
         except InvalidSignatureError:
             abort(400)
     
         return 'OK'
     
     @handler.add(MessageEvent, message=TextMessageContent)
     def handle_message(event):
         with ApiClient(configuration) as api_client:
             line_bot_api = MessagingApi(api_client)
             line_bot_api.reply_message(
                 ReplyMessageRequest(
                     reply_token=event.reply_token,
                     messages=[TextMessage(text=event.message.text)] # 鸚鵡機器人,回覆一樣的訊息
                 )
             )
     
     if __name__ == "__main__":
         app.run()
       
    記得把 `YOUR_CHANNEL_ACCESS_TOKEN` 和 `YOUR_CHANNEL_SECRET` 換成你自己的。然後在終端機執行 `python app.py`,你的 Flask 伺服器就會跑在 `http://127.0.0.1:5000`。
  2. 啟動 ngrok:下載 ngrok 後,在另一個終端機視窗執行指令,把流量導到 5000 port。
    
     ngrok http 5000
       
    執行後,ngrok 會給你一個 `Forwarding` 網址,長得像 `https://xxxx-xxxx-xxxx.ngrok-free.app`。這個就是我們需要的公開網址。
  3. 設定 Webhook URL:回到 LINE Developers Console,在 "Messaging API" 頁籤找到 "Webhook settings"。 把剛剛 ngrok 給你的網址貼上去,並在後面加上 `/callback` (因為我們程式碼裡的路徑是 `/callback`)。所以完整的 Webhook URL 會是 `https://xxxx-xxxx-xxxx.ngrok-free.app/callback`。 填好後,打開 "Use webhook" 的開關。

做到這裡,整個串接就完成了。你可以試著用手機傳個訊息給你的機器人,如果一切順利,它應該會回傳一模一樣的訊息給你。

成功!機器人回覆訊息了
成功!機器人回覆訊息了

本機測試 vs. 正式部署

用 ngrok 在自己電腦上測試很方便,但它有個問題:每次重啟 ngrok,那個轉發網址都會變,而且只要你電腦關機或網路斷了,服務就停了。 所以,當你的機器人開發到一個段落,準備要正式上線時,就必須把它「部署」到一台 24 小時運作的雲端伺服器上。

這部分選擇很多,我簡單列幾個比較一下,但深入的教學又是另一個故事了。

部署方式 優點 缺點 適合誰
Ngrok (本機開發) 設定超簡單,改完程式碼馬上看到結果,免費。 網址會一直變,電腦要一直開著,不穩定。 開發跟測試階段,強烈推薦。
Google Apps Script 完全免費,不用管伺服器,跟 Google Sheets 整合很方便。 有一些執行時間限制,功能比較受限,適合簡單的應用。像是做個記帳機器人就還不錯。 想做點小工具、不想碰伺服器的人。
雲端平台 (如 Render, Heroku) 穩定,有免費方案可以用,擴充性好,是比較正規的做法。 設定比前兩者複雜一點,需要了解一點 Git 跟部署的觀念。 準備好要讓機器人正式上線的人。

一些補充與提醒

日本的 LINE 文件(畢竟是他們家的產品)寫得非常詳細,但有時候很生硬。 像是速率限制 (rate limits) 這種東西,官方文件會直接給你數字,但通常要等到你真的發訊息發到被擋下來,你才會知道它的重要性。 反觀台灣一些開發者的部落格或分享,雖然不見得最即時,但通常會用比較白話的方式,或結合本地應用情境來解釋,讀起來親切很多。 建議可以兩邊對照著看。

另外,你可能會在設定時看到 LINE Login 或 LIFF 這些詞,這些是跟在 LINE 裡面開網頁、做登入驗證有關的功能,跟單純的訊息一來一回的 Messaging API 不太一樣,先不要搞混了。

好了,差不多就是這樣。這條路坑不少,但第一個機器人能成功回覆訊息時,真的會蠻有成就感的。試試看吧。

你第一個想做的 LINE 機器人是什麼功能呢?是簡單的問候、自動回覆,還是想串接更複雜的服務?在下面分享你的想法吧!

Related to this topic:

Comments

  1. Guest 2025-07-11 Reply
    感覺這個LINE機器人好像很厲害耶!不過我有點好奇,對小型創業團隊來說,開發成本會不會太高?好像需要一定的技術門檻,有點擔心啊...
  2. Guest 2025-06-11 Reply
    哇,這篇文章真的超實用!想請教一下,我剛開始學LINE Bot開發,有什麼建議可以快速上手嗎?對於程式新手來說,感覺有點複雜耶...
  3. Guest 2025-05-08 Reply
    這篇文章提到的LINE機器人真的很有趣!我想知道在不同國家,企業如何利用這些機器人來改善顧客互動呢?有沒有特別成功的案例?
撥打專線 LINE免費通話