你好!如果你也想開發一個自己的 LINE Bot,卻不知道從何開始,那麼這篇文章正是為你準備的!我將一步步引導你,從環境設定、LINE Developers 帳號申請,到第一個能夠「回音」的 LINE Bot 成功運行。
完成這篇教學後,你將擁有一個能理解你文字訊息並原封不動回覆的 LINE Bot。讓我們開始吧!
1. 前置準備:Python 環境與套件安裝
在開始之前,請確保你的電腦已經安裝了 Python 3。本教學使用的是 Python 3.11.1,但 3.6+ 版本通常都能相容。1.1 確認 Python 版本
打開你的終端機 (Terminal) 或命令提示字元 (Command Prompt/PowerShell),輸入以下指令:
python --version
# 或
python3 --version
確保你看到的是 Python 3.x.x 的版本號。
1.2 安裝必要的 Python 套件
我們需要兩個主要的 Python 套件:
line-bot-sdk: LINE 官方提供的 SDK,讓 Python 程式能方便地與 LINE Messaging API 互動。Flask: 一個輕量級的 Python Web 框架,用來建立你的 Bot 應用程式的網路服務。python-dotenv: 用於從.env檔案載入環境變數,安全地管理你的 LINE Bot 憑證。gunicorn: 在部署時會用到的 WSGI HTTP Server,本地開發時可以先裝起來。
在終端機中依序執行以下指令來安裝它們:
pip install line-bot-sdk
pip install Flask
pip install python-dotenv
pip install gunicorn
2. 申請 LINE Developers 帳號與 Bot Channel
這是為你的 LINE Bot 在 LINE 平台上建立「身份」的關鍵步驟。
2.1 建立 LINE 官方帳號 (必要步驟!)
自 2024 年中起,建立 Messaging API Channel 必須先關聯一個 LINE 官方帳號。別擔心,這是免費的!
- 打開瀏覽器,前往 LINE 官方帳號管理後台。
- 使用你的 LINE 帳號登入。
- 點擊「建立新帳號」按鈕。
- 填寫帳號名稱、類別、公司/事業名稱和電子郵件,然後點擊確認。
2.2 建立 LINE Developers 帳號與 Messaging API Channel
- 前往 LINE Developers 網站 並登入。
- 建立 Provider (服務提供者):
- 登入後,點擊「Create new provider」。
- 輸入一個有意義的 Provider 名稱 (例如「我的實驗室」或「個人機器人開發」)。
- 點擊「Create」。
- 建立 Messaging API Channel:
- 在你的 Provider 頁面中,點擊「Create a Messaging API channel」。
- 填寫頻道資訊: Channel icon: 你的 Bot 頭像。 Channel name: 你的 Bot 在 LINE 上顯示的名稱。 Channel description: Bot 的功能簡述。 Category/Subcategory: Bot 的類別。 Email address: 你的聯絡信箱。
- 你會看到一個選項讓你選擇或建立 LINE 官方帳號,請選擇你剛剛建立的官方帳號。
- 勾選同意條款,然後點擊「Create」。
2.3 取得你的 Channel 憑證
建立 Channel 成功後,你會進入 Channel 設定頁面。
- 在左側選單中,點擊 「Messaging API」。
- 捲動頁面,你會看到:
- Channel secret: 這是一個重要的金鑰,用於驗證 LINE 傳來的訊息。
- Channel access token (long-lived): 這是一個用來讓你的程式碼向 LINE 平台發送訊息的憑證。如果它沒有立即顯示,請點擊旁邊的 issue 或 reissue 按鈕來生成。
請務必複製這兩組金鑰並妥善保管!它們是連接你的 Bot 程式碼與 LINE 平台的關鍵。
3. 程式碼撰寫與環境變數設定
3.1 建立專案資料夾和檔案
在你的電腦上,建立一個新的專案資料夾,例如 my_line_bot。 在這個資料夾中,建立兩個檔案:app.py 和 .env。
3.2 編輯 .env 檔案 (安全存放憑證)
.env 檔案用來存放你的敏感資訊,避免直接寫在程式碼中。 在 my_line_bot/.env 檔案中,填入你剛剛取得的 Channel secret 和 Channel access token:
LINE_CHANNEL_SECRET=你的_Channel_secret_貼在這裡
LINE_CHANNEL_ACCESS_TOKEN=你的_Channel_access_token_貼在這裡
請務必將 <你的_Channel_secret_貼在這裡> 和 <你的_Channel_access_token_貼在這裡> 替換成你實際取得的值。
重要: 如果你使用 Git 進行版本控制,請務必將 .env 加入到 .gitignore 檔案中,避免將敏感資訊提交到公共倉庫。
3.3 編輯 app.py (你的 LINE Bot 程式碼)
在 my_line_bot/app.py 檔案中,貼入以下程式碼。這是一個最基本的 Echo Bot (回音機器人),當你發送任何文字訊息給它時,它會原封不動地回覆給你。
from flask import Flask, request, abort
import os
# 導入 python-dotenv 套件
from dotenv import load_dotenv
# 載入 .env 檔案中的環境變數
load_dotenv()
from linebot import (
LineBotApi, WebhookHandler
)
from linebot.exceptions import (
InvalidSignatureError
)
from linebot.models import (
MessageEvent, TextMessage, TextSendMessage,
)
# 初始化 Flask 應用程式
app = Flask(__name__)
# 從環境變數中取得 Channel Secret 和 Channel Access Token
LINE_CHANNEL_SECRET = os.getenv('LINE_CHANNEL_SECRET')
LINE_CHANNEL_ACCESS_TOKEN = os.getenv('LINE_CHANNEL_ACCESS_TOKEN')
# 檢查環境變數是否設定
if LINE_CHANNEL_SECRET is None:
print('錯誤:請設定環境變數 LINE_CHANNEL_SECRET')
exit(1)
if LINE_CHANNEL_ACCESS_TOKEN is None:
print('錯誤:請設定環境變數 LINE_CHANNEL_ACCESS_TOKEN')
exit(1)
# 初始化 LineBotApi 和 WebhookHandler
line_bot_api = LineBotApi(LINE_CHANNEL_ACCESS_TOKEN)
handler = WebhookHandler(LINE_CHANNEL_SECRET)
# 定義 Webhook 的入口點
# LINE 伺服器會將訊息傳送到這個 /callback 路徑
@app.route("/callback", methods=['POST'])
def callback():
# 取得請求的簽名,用於驗證訊息來源
signature = request.headers['X-Line-Signature']
# 取得請求的內容 (訊息資料)
body = request.get_data(as_text=True)
app.logger.info("Request body: " + body)
try:
# 處理 Webhook 請求,並根據事件類型觸發相應的處理器
handler.handle(body, signature)
except InvalidSignatureError:
# 如果簽名不合法,則回應 400 錯誤
print("簽名無效。請檢查你的 Channel access token 或 Channel secret。")
abort(400)
return 'OK'
# 定義訊息事件處理器
# 當收到訊息事件且訊息類型為文字訊息時,會執行此函數
@handler.add(MessageEvent, message=TextMessage)
def handle_message(event):
# 回覆相同的文字訊息給使用者
line_bot_api.reply_message(
event.reply_token,
TextSendMessage(text=event.message.text)
)
# 當檔案被直接執行時,啟動 Flask 應用程式
if __name__ == "__main__":
# 在本地端運行,port 5000
# os.environ.get("PORT", 5000) 讓程式在部署到 Heroku 等平台時能使用該平台提供的 port
app.run(host="0.0.0.0", port=int(os.environ.get("PORT", 5000)))
4. 本地測試:運行你的 Bot 與 ngrok
LINE 平台需要一個公開的 HTTPS 網址來發送訊息給你的 Bot。在本地開發時,我們可以使用 ngrok 來做到這一點。
4.1 運行你的 Flask 應用程式
打開你的終端機 (或命令提示字元),進入你的 my_line_bot 資料夾,執行:
python app.py
你應該會看到類似 * Running on http://0.0.0.0:5000/ 的訊息。請讓這個視窗保持開啟!
4.2 下載與運行 ngrok
- 如果還沒有下載
ngrok,請前往 ngrok 官網 下載對應你作業系統的版本,並解壓縮。 - **註冊 ngrok 帳號並設定 Authtoken (重要!) **
- 前往 ngrok 註冊頁面 註冊一個免費帳號。
- 登入後,你會在 你的 Authtoken 頁面 看到一行設定 Authtoken 的指令,例如:ngrok config add-authtoken <你的authtoken值>。
- 複製這行指令,在新的終端機視窗中執行它。這會將你的 Authtoken 保存起來,以後就不用再設定了。
- 在新的終端機視窗中 (不要關閉運行
app.py的視窗),進入ngrok執行檔所在的資料夾,然後執行:
./ngrok http 5000
# Windows 用戶可能直接執行:ngrok http 5000
成功運行後,你會看到類似以下訊息,其中 Forwarding 會提供一個公開的 HTTPS 網址:
Forwarding https://<一串隨機字串>.ngrok-free.app -> http://localhost:5000
請複製這個 https:// 開頭的網址。 (注意:每次重啟 ngrok,這個網址都會改變。)
5. 設定 LINE Webhook URL
現在,將 ngrok 提供的公開網址告訴 LINE 平台。
- 登入你的 LINE Developers Console。
- 選擇你的 Provider,進入你的 LINE Bot Channel。
- 在左側選單中,點擊 「Messaging API」。
- 在
Webhook settings區塊,將你剛剛從ngrok複製的 HTTPS 網址貼入Webhook URL欄位。 - 非常重要:請在網址後面加上 /callback。例如:https://abcdef12345.ngrok-free.app/callback
- 確認
Use webhook開關是 開啟 狀態。 - 點擊
Verify按鈕。如果一切設定正確,你會看到綠色的Success提示。
6. 測試你的 LINE Bot!
萬事俱備!現在是見證成果的時刻!
- 在 LINE Developers Console 的
Basic settings頁籤中,找到你的 Bot 的 QR Code。 - 使用你的 LINE App 掃描這個 QR Code,將你的 Bot 加入為好友。
- 加入好友後,在 LINE 聊天室中,發送任何文字訊息給你的 Bot。
如果你的 Bot 能夠回覆你所發送的相同文字訊息,那麼恭喜你!你已經成功地從零開始打造並運行了你的第一個 LINE Echo Bot!
下一步:讓你的 Bot 更聰明!
現在你已經掌握了 LINE Bot 的基礎。你可以開始探索更多進階功能,例如:
- 處理圖片、貼圖等不同類型的訊息。
- 基於關鍵字提供不同回覆。
- 串接外部 API (天氣、新聞、翻譯等)。
- 使用 LINE 的豐富訊息類型 (Template Message, Flex Message) 和圖文選單 (Rich Menu)。
- 整合自然語言處理 (NLP) 服務 (如 Dialogflow, OpenAI API)。











