即時精選

從零開始打造你的第一個 LINE Bot (Python Flask)

更新 發佈閱讀 15 分鐘

你好!如果你也想開發一個自己的 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 官方帳號。別擔心,這是免費的!

  1. 打開瀏覽器,前往 LINE 官方帳號管理後台。
  2. 使用你的 LINE 帳號登入。
  3. 點擊「建立新帳號」按鈕。
  4. 填寫帳號名稱、類別、公司/事業名稱和電子郵件,然後點擊確認。

2.2 建立 LINE Developers 帳號與 Messaging API Channel

  1. 前往 LINE Developers 網站 並登入。
  2. 建立 Provider (服務提供者):
    • 登入後,點擊「Create new provider」。
    • 輸入一個有意義的 Provider 名稱 (例如「我的實驗室」或「個人機器人開發」)。
    • 點擊「Create」。
  3. 建立 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 設定頁面。

  1. 在左側選單中,點擊 「Messaging API」
  2. 捲動頁面,你會看到:
    • 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 secretChannel 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

  1. 如果還沒有下載 ngrok,請前往 ngrok 官網 下載對應你作業系統的版本,並解壓縮。
  2. **註冊 ngrok 帳號並設定 Authtoken (重要!) **
    • 前往 ngrok 註冊頁面 註冊一個免費帳號。
    • 登入後,你會在 你的 Authtoken 頁面 看到一行設定 Authtoken 的指令,例如:ngrok config add-authtoken <你的authtoken值>。
    • 複製這行指令,在新的終端機視窗中執行它。這會將你的 Authtoken 保存起來,以後就不用再設定了。
  3. 新的終端機視窗中 (不要關閉運行 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 平台。

  1. 登入你的 LINE Developers Console
  2. 選擇你的 Provider,進入你的 LINE Bot Channel
  3. 在左側選單中,點擊 「Messaging API」
  4. Webhook settings 區塊,將你剛剛從 ngrok 複製的 HTTPS 網址貼入 Webhook URL 欄位。
    • 非常重要:請在網址後面加上 /callback。例如:https://abcdef12345.ngrok-free.app/callback
  5. 確認 Use webhook 開關是 開啟 狀態。
  6. 點擊 Verify 按鈕。如果一切設定正確,你會看到綠色的 Success 提示。

6. 測試你的 LINE Bot!

萬事俱備!現在是見證成果的時刻!

  1. 在 LINE Developers Console 的 Basic settings 頁籤中,找到你的 Bot 的 QR Code
  2. 使用你的 LINE App 掃描這個 QR Code,將你的 Bot 加入為好友。
  3. 加入好友後,在 LINE 聊天室中,發送任何文字訊息給你的 Bot。

如果你的 Bot 能夠回覆你所發送的相同文字訊息,那麼恭喜你!你已經成功地從零開始打造並運行了你的第一個 LINE Echo Bot!

下一步:讓你的 Bot 更聰明!

現在你已經掌握了 LINE Bot 的基礎。你可以開始探索更多進階功能,例如:

  • 處理圖片、貼圖等不同類型的訊息。
  • 基於關鍵字提供不同回覆。
  • 串接外部 API (天氣、新聞、翻譯等)。
  • 使用 LINE 的豐富訊息類型 (Template Message, Flex Message) 和圖文選單 (Rich Menu)。
  • 整合自然語言處理 (NLP) 服務 (如 Dialogflow, OpenAI API)。














留言
avatar-img
留言分享你的想法!
avatar-img
TKmanTW 的 沙發
1會員
78內容數
TKmanTW 的 沙發 不專業的生活演變
TKmanTW 的 沙發的其他內容
2025/05/26
立法院通過國民黨團提出的「反廢死公投案」,將於8月底舉行公投,此舉引發關於死刑、司法改革、權力分立以及政治操作的廣泛討論。本文將深入分析此提案的背景、內容、影響及各方勢力角逐,並探討其對臺灣民主與司法的深遠意義。
Thumbnail
2025/05/26
立法院通過國民黨團提出的「反廢死公投案」,將於8月底舉行公投,此舉引發關於死刑、司法改革、權力分立以及政治操作的廣泛討論。本文將深入分析此提案的背景、內容、影響及各方勢力角逐,並探討其對臺灣民主與司法的深遠意義。
Thumbnail
2025/05/26
2024年5月14日,立法院提案修法開放核電延役,此舉不僅是能源政策調整,更是政治話語的翻轉。提案利用國際趨勢、強調人才斷層、連結AI與核融合等策略,試圖為核電延役創造合法性與正當性。本文分析此提案背後的政治意圖與策略,並探討其對我國能源政策的影響。
2025/05/26
2024年5月14日,立法院提案修法開放核電延役,此舉不僅是能源政策調整,更是政治話語的翻轉。提案利用國際趨勢、強調人才斷層、連結AI與核融合等策略,試圖為核電延役創造合法性與正當性。本文分析此提案背後的政治意圖與策略,並探討其對我國能源政策的影響。
2025/05/26
2025年1月,「道路交通管理處罰條例」修正案三讀通過,針對偽造、變造車牌加重罰則,最高罰鍰達36,000元,並增設車輛沒入及駕駛人併罰規定。此舉旨在解決假車牌氾濫問題,然而,沒入車輛措施可能引發比例原則爭議。本文探討修法背景、內容、影響及潛在挑戰,並分析其對臺灣道路安全與社會的影響。
Thumbnail
2025/05/26
2025年1月,「道路交通管理處罰條例」修正案三讀通過,針對偽造、變造車牌加重罰則,最高罰鍰達36,000元,並增設車輛沒入及駕駛人併罰規定。此舉旨在解決假車牌氾濫問題,然而,沒入車輛措施可能引發比例原則爭議。本文探討修法背景、內容、影響及潛在挑戰,並分析其對臺灣道路安全與社會的影響。
Thumbnail
看更多
你可能也想看
Thumbnail
還在煩惱平凡日常該如何增添一點小驚喜嗎?全家便利商店這次聯手超萌的馬來貘,推出黑白配色的馬來貘雪糕,不僅外觀吸睛,層次豐富的雙層口味更是讓人一口接一口!本文將帶你探索馬來貘雪糕的多種創意吃法,從簡單的豆漿燕麥碗、藍莓果昔,到大人系的奇亞籽布丁下午茶,讓可愛的馬來貘陪你度過每一餐,增添生活中的小確幸!
Thumbnail
還在煩惱平凡日常該如何增添一點小驚喜嗎?全家便利商店這次聯手超萌的馬來貘,推出黑白配色的馬來貘雪糕,不僅外觀吸睛,層次豐富的雙層口味更是讓人一口接一口!本文將帶你探索馬來貘雪糕的多種創意吃法,從簡單的豆漿燕麥碗、藍莓果昔,到大人系的奇亞籽布丁下午茶,讓可愛的馬來貘陪你度過每一餐,增添生活中的小確幸!
Thumbnail
打開 jupyter notebook 寫一段 python 程式,可以完成五花八門的工作,這是玩程式最簡便的方式,其中可以獲得很多快樂,在現今這種資訊發達的時代,幾乎沒有門檻,只要願意,人人可享用。 下一步,希望程式可以隨時待命聽我吩咐,不想每次都要開電腦,啟動開發環境,只為完成一個重複性高
Thumbnail
打開 jupyter notebook 寫一段 python 程式,可以完成五花八門的工作,這是玩程式最簡便的方式,其中可以獲得很多快樂,在現今這種資訊發達的時代,幾乎沒有門檻,只要願意,人人可享用。 下一步,希望程式可以隨時待命聽我吩咐,不想每次都要開電腦,啟動開發環境,只為完成一個重複性高
Thumbnail
你好,在下最近在學習開發web,學了html css js,也得出一些心得,由於網路上已有許多教學,所以我會著重在如何開發出to do List,以及解釋我寫的程式碼。相關的教學我會直接貼網址。如果我有什麼地方出錯,或者是可以寫得更好,歡迎在下方留言,討論。 首先先介紹我的開發環境: 我用了vs
Thumbnail
你好,在下最近在學習開發web,學了html css js,也得出一些心得,由於網路上已有許多教學,所以我會著重在如何開發出to do List,以及解釋我寫的程式碼。相關的教學我會直接貼網址。如果我有什麼地方出錯,或者是可以寫得更好,歡迎在下方留言,討論。 首先先介紹我的開發環境: 我用了vs
Thumbnail
什麼是Python python是電腦程式語言的一種,如同python官方網站上的介紹 "Python是一種程式語,可讓你更快速地工作並更有效的整合系統"。簡單地說,就是你可用python這個程式語言去告訴電腦你想要作什麼,讓電腦來幫你完成你要作的事情。
Thumbnail
什麼是Python python是電腦程式語言的一種,如同python官方網站上的介紹 "Python是一種程式語,可讓你更快速地工作並更有效的整合系統"。簡單地說,就是你可用python這個程式語言去告訴電腦你想要作什麼,讓電腦來幫你完成你要作的事情。
Thumbnail
在 IG 上看到一位前端大大用 Google Apps Script + Line bot 替自己的球隊安排了球經,覺得很有趣,想來玩看看
Thumbnail
在 IG 上看到一位前端大大用 Google Apps Script + Line bot 替自己的球隊安排了球經,覺得很有趣,想來玩看看
Thumbnail
當我們在撰寫一套系統的時候, 總是會提供一個介面讓使用者來觸發功能模組並回傳使用者所需的請求, 而傳統的安裝包模式總是太侷限, 需要個別主機獨立安裝, 相當繁瑣, 但隨著時代的演進與互聯網的崛起, 大部分的工作都可以藉由網頁端、裝置端來觸發, 而伺服端則是負責接收指令、運算與回傳結果, 雲端
Thumbnail
當我們在撰寫一套系統的時候, 總是會提供一個介面讓使用者來觸發功能模組並回傳使用者所需的請求, 而傳統的安裝包模式總是太侷限, 需要個別主機獨立安裝, 相當繁瑣, 但隨著時代的演進與互聯網的崛起, 大部分的工作都可以藉由網頁端、裝置端來觸發, 而伺服端則是負責接收指令、運算與回傳結果, 雲端
Thumbnail
在這篇教學中,我們將學習如何使用 Google Apps Script 來連結 LINE Notify,以便於你的應用程式或自動化工作流程中發送通知。LINE Notify 是 LINE 提供的服務,可以讓你透過 LINE 帳號來發送自訂的通知訊息。
Thumbnail
在這篇教學中,我們將學習如何使用 Google Apps Script 來連結 LINE Notify,以便於你的應用程式或自動化工作流程中發送通知。LINE Notify 是 LINE 提供的服務,可以讓你透過 LINE 帳號來發送自訂的通知訊息。
Thumbnail
本文章將介紹如何在LINE Notify上設定及使用權杖(access token)來進行通知功能。透過此API,可以使用curl或JAVA CODE來讓結果顯示在Line上面,達到及時的通知效果。
Thumbnail
本文章將介紹如何在LINE Notify上設定及使用權杖(access token)來進行通知功能。透過此API,可以使用curl或JAVA CODE來讓結果顯示在Line上面,達到及時的通知效果。
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News