今天寫一篇短文來介紹一下如何用最短的時間搞定用 Python 開發 Line 機器人的基本環境設定以及雲端部署流程,希望能幫助到想要開發 Line Bot 的 Python 開發者們!
基本環境要求
首先,正在看這篇文章的你必須確保你的電腦上已經安裝好 Python 了,你可以用這個指令來檢查看看目前安裝的版本:
python --version
如果你看到他寫 Python 3.11.6
或之類的其他版本,那太好了!但如果你看到的是 zsh: Unknown command: python
之類的錯誤訊息,那請你先回去把 Python 裝好再回來哦!
有了 Python 以後,我們還需要一個用來寫程式碼的編輯器,最多人用的應該是 Visual Studio Code 這個編輯器,不過我個人習慣用 PyCharm,可以根據個人喜好選擇~
專案初始化
環境準備好了以後,首先我們先建立一個用來放 Line Bot 程式碼的資料夾,或是直接建立一個新的也可以:
cd ~ mkdir my-line-bot cd my-line-bot
建立好以後,我們在這個資料夾裡面建立一個虛擬環境:
python -m venv venv
輸入這個指令以後,你應該會發現資料夾裡面多了一個 venv
資料夾,這裡面是我們用來存放關於 Line Bot 專案所需要的各種 Python 套件之類的東西。
初始化完畢以後,我們就可以建立一個叫做 app.py
的檔案,然後把 Line 官方的 Python SDK 的 README.md 裡面寫的範例程式碼貼進去:
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__) configuration = Configuration(access_token='YOUR_CHANNEL_ACCESS_TOKEN') 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: app.logger.info("Invalid signature. Please check your channel access token/channel secret.") 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_with_http_info( ReplyMessageRequest( reply_token=event.reply_token, messages=[TextMessage(text=event.message.text)])) if __name__ == "__main__": app.run()
貼進來以後你會發現你的程式碼編輯器開始報錯說找不到各種套件,這個時候不要緊張,我們可以開始來安裝這些套件:
# 別忘了先啟動虛擬環境! source bin/activate pip install flask pip install line-bot-sdk
這樣就可以啦~ 然後為了紀錄一下我們的專案用了哪些套件,我們需要用下面這個指令把他們記錄起來:
pip freeze > requirements.txt
執行這個指令以後,你會發現資料夾裡面多了一個 requirements.txt
檔案,裡面寫了所有我們這個專案需要的套件。這樣未來其他人如果接手這包專案,他只要輸入:
pip install -r requirements.txt
就可以把所有需要的套件都安裝進來了,是不是很方便呢?
申請 Line Bot 授權密鑰
初始化完畢以後,我們需要去 Line Developers Console 的網站申請一個 Line Bot 的密鑰,在這個頁面點擊 Providers 旁邊的 Create 按鈕即可:
點擊 Create 以後輸入一個名字:
然後因為我們是要開發一個 Line 機器人,所以選擇 Create a Messaging API Channel:
他會要你填一些基本資料,比如說你所在的國家、你的機器人的名字、類別和介紹等等的,可以簡單填寫一下然後按最下面的 Create 即可:
填寫完了以後,首先我們可以在 Basic Settings 裡面找到一個 Channel Secret:
把這個 Channel Secret 複製起來,貼進去我們的 app.py
裡面有一段 YOUR_CHANNEL_SECRET
把它覆蓋掉。
然後再去 Messaging API 這個分頁,滑到最下面找到 Channel Access Token
然後點擊 Issue:
申請到 Access Token 以後把原本的 YOUR_CHANNEL_ACCESS_TOKEN
覆蓋掉。
大功告成!
部署到雲端平台
寫好了以後,我們可以直接用 Zeabur CLI 超快速部署上去,只需要在 Terminal 輸入 zeabur
即可:
他會問你你要部署到哪一個專案,或是你也可以像我一樣選擇最下面的 Create a new project
建立新的專案。
如果你和我一樣選擇建立新的專案,他會問你要部署在哪個區域。建議可以選擇 hkg1
(香港)或 hnd1
(東京)這兩個區域,對於 Line Bot 來說速度非常快!
選好區域以後他就自動開始部署了,稍微等他幾分鐘就可以啦~
建立網域並設定 Webhook
在等待部署的過程中,我們可以先按下面的 Network,幫我們的 Line Bot 申請一個免費網域:
申請好了以後,我們可以回到 Line Developer Console 把這個網域設定成 Webhook:
比如說我申請網域填寫的是 yuanlin-line-bot
這個名字,所以我拿到的網域就是 yuanlin-line-bot.zeabur.app
這個網域,所以我在 Webhook 就要填寫:
https://yuanlin-line-bot.zeabur.app/callback
這個連結,這樣未來只要有人和我的 Line Bot 說話,他都會發一個 POST 請求到上面這個網址!
測試機器人
恭喜你,到這邊我們的機器人已經大功告成了,接下來我們可以用手機掃描 Line Developer Console 上面的 QR Code,加我們的機器人為 Line 好友,然後和他聊天看看:
以上就是這次關於如何用 Python 初始化一個 Line Bot 的教學文章。如果有任何問題,歡迎在文章下面留言讓我知道哦!