Python + Line bot 從頭開始建立一個 Line 機器人,部署到 Heroku!

python linebot, code example, build on Heroku!

Molly M
6 min readJul 1, 2022

--

又是 Line 系列啦,今天要做一個基本款機器人,為了以後的 Side Project 做準備,先用此文紀錄如何從0開始建立一個聊天機器人,然後部署到 Heroku及丟上 Github 自動更新,讓它可以真的運作!

前言

基本款的完成後,可以依照個人喜好做出各種風格的機器人,像是 AI 聊天、使用內建的菜單選單樣式化、接收到的文字另存至資料庫等,都是製作個人 side project 很好的方式!

開發環境

  • window11
  • python 3.10.5

大綱

- 建立 Line bot / 建立一個機器人帳號
- 寫 python / 讓機器人回覆一樣的文字
- 部署至 heroku 及 github / 包含環境變數的設定
- 結論

〈一〉建立 Line bot

  1. 登入 line develop

這邊,登入自己的 line 帳號

2. 建立 line 頻道

選 create a new channel,選擇第二個 — Messaging API

3. 將帳號加為好友

選到第二個頁簽,Messaging API,在 Line 新增好友輸入這裡的 Bot basic ID

4. 設定 webhook

往下滑一點會看到 Webhook settings,把 Use webhook 打開,上方的 URL可以先不輸入,等等再回來設定。

5. 記下程式連接機器人必要的密鑰

  • Messaging API — Channel access token
  • Basic settings — Channel secret

6. 在 Basic information 有一個連結 LINE Official Account Manager,停用自動回覆及打招呼

〈二〉寫 Code

  1. 建立 github 專案

2. 將專案 clone 下來

並以 vscode 開啟

3. 新增 app.py 檔案

4. 建立虛擬環境,避免相關套件直接安裝在電腦中(需安裝虛擬環境套件 virtualenv)

  • 依序輸入
$ virtualenv venv 
$ .\venv\Scripts\activate.bat

看到前面帶著 (venv) 表示已經進入虛擬環境中

5. 新增檔案 requirements.txt

line-bot-sdk==2.3.0
flask==2.1.2
requests==2.28.0

6. 新增 heroku 需要的檔案

  • Procfile (沒有副檔名)
web: python app.py
  • .gitignore
venv

7. 修改 app.py,如下

8. 將目前的程式碼丟上 github

$ git add .
$ git commit -m init
$ git push

〈三〉部署至 heroku 及 github

  1. 建立 heroku 帳號
  2. 點擊 NEW , 新增一個專案 Create new app

3. Create app

4. 新增環境變數

切換到 Settings ,在 Config Vars,新增兩個變數,就是我們剛剛在 line 中記錄下來的 Token 與 secret

CHANNEL_ACCESS_TOKEN
CHANNEL_SECRET

5. 與 github 專案連結

切換至 Deploy 頁,在 Deployment method 點中間的 Github

6. connect 點下去

7. 設定自動部署

在我們 push 新程式碼到 github 時自動部署 — Enable Automatic Deploys

看到這裡表示自動部署OK

8. 手動部署第一次 — Manual deploy

點擊 Deploy a GitHub branch

9. 回到 line 設定 webhook

我們要到 heroku 的 Settings ,往下滑到 Domains,會看到一串網址

複製起來,貼到 Webhook URL

https://ooxxxxxx.herokuapp.com/callback
# 記得最後要加上 /callback

測試一下

成功啦~~~~~

結論

一個基本款的機器人就是拿莫簡單 ٩(ˊᗜˋ )و

( 之前寫機器人都是用 Node.js,這次用 python,感覺語法差好多,好險網路資源很豐富,謝謝各位大神前輩們 ╰(*°▽°*)╯)

Repo 在這

                              回到最上方

--

--

Molly M
Molly M

Written by Molly M

Molly — Software Developer / 職稱是軟體研發工程師。 什麼都寫,專精於前端及APP (ง•̀_•́)ง ! ❤ 合作發案討論疑難雜症請洽: momolly1024@gmail.com