用 Python 建構你的 LINE BOT 聊天機器人 — 部署篇

Mr.HandbyHand
6 min readAug 13, 2020

Hey 大家好,經過上一篇的基本設定介紹相信大家都迫不及待想要來玩 LINE BOT 了,用 Python 來實作是非常快速以及簡易的, 可以透過任何 Python 套件來達成你的目的。這一篇主要是部署的實作,從透過 ngrok 進行本地端測試到部署至 Heroku 實際運行環境,準備好的朋友就開始吧~

主要流程:

  • 撰寫、修改 Python code
  • 透過 ngrok 來測試
  • 部署至 Heroku

撰寫、修改 Python code

Step 1. 安裝套件

先把我的 code clone 下來,我們會用到的套件有:

  • line-bot-sdk
  • flask
# 安裝套件
cd just-echo
pip install -r requirements.txt

Step 2. 修改程式

還記得上一篇提到的 Channel secretChannel access token 嗎?這邊會需要把你的 secret 以及 access token 替換到程式上(app.py)。這邊為求方便所以是直接把它們寫在程式裡,但通常不是很建議這樣做會有資安上的疑慮,建議用環境變數的方式會比較好,修改完後就可以來測試啦!

# you can replace by load env file
handler = WebhookHandler('Your_Channel_Secret')
line_bot_api = LineBotApi('Your_Channel_Access_Token')

透過 ngrok 來測試

ngrok 是一個暫時提供你網路穿牆的免費工具,他會把你的 local 端暫時接到公網上讓他人可以連接到你,且提供 https 協定

Step 1. 啟動 ngrok

到命令列輸入指令後他會把你的 local 端指定 port 暫時接到公網上

ngrok http 3000

沒問題的話就會看到上方畫面,其中的 https://0cc578799d0d.ngrok.io 就是我們待會要用到的,這一步驟用好後請先不要關閉,不然 session 就斷了!

Step 2. 修改 Webhook

回到 LINE Developers 的 channel setting,把 Webhook URL 替換成剛才 ngrok 產生的連結,後方別忘了加上 /callback ,這是程式裡面定義好的路由

記得要開啟 webhook (enable 狀態)

Step 3. 修改程式偵聽 port 號

因為我們需要先在本地端測試,測試完成後才部署到 Heroku 上,因此我們需要把程式原本指定的 port 號 (環境變數) 改成我們剛才用 ngrok 穿牆的 port 號,修改處位於 app.py 最下方

# 原本 
app.run(host='0.0.0.0', port=os.environ['PORT'])
# 修改後 (for test)
app.run(host='0.0.0.0', port=3000)

Step 4. 啟動程式

cd just-echo
python app.py

Step 5. 測試 echo BOT

如果沒問題的話就會看到 BOT 把你的訊息原封不動地傳回給你了,接著我們就可以將程式部署到 Heroku 上了

demo

部署至 Heroku

Step 1. 修改程式偵聽 port 號

這邊需要把剛才修改的 port 改回來,改成由 Heroku 實際運行的 port 號 (用環境變數的方式去抓)

# 原本 
app.run(host='0.0.0.0', port=3000)
# 修改後 (for test)
app.run(host='0.0.0.0', port=os.environ['PORT'])

Step 2. 指定 Heroku 專案

連結你的 Heroku 專案,後方名稱是上一篇在 Heroku 步驟所取的專案名稱

# login 
heroku login
# 連結專案
heroku git:remote my-line-bot-666

Step 3. 修改 Webhook

記得把 Webhook URL 改成 Heroku app domain,你的 Heroku app 連結會在Heroku 專案 > Settings 裡面

Step 4. 準備 push 上去

輸入以下指令即可部署到 Heroku

# 把目錄底下所有檔案都加到暫存區
git add .
# 製作一個 commit ,後面是這個 commit 的描述
git commit -m "init"
# 推到 heroku
git push heroku master

到這邊都順利的話先恭喜你部署完成 ~

參考資料

歡迎請我喝咖啡
歡迎讚賞,您的鼓勵是我的動力
如果覺得這篇文章有幫助到你可以給我 拍手 當作鼓勵唷,也歡迎您點擊上方 讚賞鍵 不需要花費就可以給創作者鼓勵 (最多點擊 5 下) ,也歡迎 Follow 我,下次見

--

--

Mr.HandbyHand

AI/程式/投資理財/Crypto 分享與紀錄學習mr.handbyhand666@gmail.com