--- title: 使用Lotify建立一個簡單LINE Notify筆記 tags: Python description: 以Flask 建置一個簡單LINE Notify訂閱與訊息發送範例 --- ## 使用Lotify建立一個簡單LINE Notify筆記 ### 前言 參加今年MOPCON 2020 剛好聽到LINE自家工程師演講開發Python套件[Lotify](https://github.com/louis70109/lotify),此套件已經整合LINE API呼叫操作部份, 來試試看發送基本文字訊息與訂閱基本實作。 **此筆記範例 GitHub:** https://github.com/s123600g/LINENotifyDemo_Lotify --- ## 環境建置 使用`Flask`做一個簡單網站框架,搭配`Vue3`來做一個簡單資料操作(這只是作者個人自己還在學習Vue,套入簡單練習應用),在Ubuntu 20.04環境下實作。 **第一步 安裝Python 套件** ```shell= pip3 install -r requirements.txt ``` 因應Flask框架設置,所有靜態檔案預設都放置在`static/`底下,其實是對應在`Config.py`內設置 ```python= static_folder = 'static' ``` 設置一個指定放置靜態檔案目錄名稱,也就是`static/` **第二步 下載NPM Package** `package.json`在專案目錄內`static`底下 ```shell= npm i ``` 前面說到所有靜態檔案都在`static`底下,所以`package.json`也會在裡面,必須要先在終端機切換位置至`static/`,在做上面指令進行Package檔案下載補齊,完成後就會在`static`底下產生一個`node_modules`目錄。 **第三步 設定LINE Notify個人服務** 要前往[LINE Notify](https://notify-bot.line.me/zh_TW/)進行服務建立,進去後需要登入個人的LINE帳號,然後建立起服務設置大概如下 ![](https://i.imgur.com/E4b7New.png) 其中需要注意的是`Callback URL`這個項目,它會跟用戶訂閱動作有相關,在用戶訂閱完成後,LINE Notify會根據這個項目設定的網址進行導向,而我們需要透過這個網址去接收LINE Notify所回傳的用戶訂閱授權token,也就是說我們提供一個管道讓LINE Notify去將頁面導向,同一時間導向完畢後面就由我們這邊接手處理後面事情,在這範例中設置了`/api/user_callback`連結,進行接收授權token後再自動導向到首頁去。 ```python @app.route("/api/user_callback", methods=['GET']) def user_callback(): # 從回傳的網址中取出'code'參數值 access_token = lotify.get_access_token(code=request.args.get("code")) ''' 紀錄訂閱戶授權token ''' db.session.add( Base_Data( user_token=access_token, InertDate=dtime.datetime.strptime(dtime.datetime.now(pytz.timezone( "Asia/Taipei")).strftime('%Y-%m-%d %H:%M:%S'), '%Y-%m-%d %H:%M:%S') ) ) db.session.commit() return redirect(url_for("index"), code=302) ``` 在導向回來過程URL為,`http://127.0.0.1:8080/api/user_callback?code=`,用戶授權token會放在url參數`code`,將其取回後再放入SQLite DB存放,完成後再透過`redirect`導向回去首頁。 **第四步 設定Client ID、Client Secret、Redirect_uri** 這部份在`Config.py`內設置 ```python= CLIENT_ID = "Vf.........................v" SECRET = "0l.............................N6" URI = "http://127.0.0.1:8080/api/user_callback" ``` **參數對照表:** | Config 參數 | LINE Notify 服務設定參數 | |:-----------:|:------------------------:| |CLIENT_ID | Client ID | | SECRET | Client Secret | | URI | Callback URL | --- ## 啟動測試伺服器 ```shell= sudo sh StartServer.sh ``` ![](https://i.imgur.com/PQ4PEp5.png) 在網址列輸入 `http://127.0.0.1:8080/`即可看到下面畫面 ![](https://i.imgur.com/4Kr1WLj.png) --- ## 用戶訂閱 ![](https://i.imgur.com/B79efgX.png) --- ## 發送訊息給用戶 ![](https://i.imgur.com/3HgKdwj.png) ![](https://i.imgur.com/L7Axsno.jpg) --- 發送訊息功能不單單只有基本文字訊息,還可以傳圖片(檔案、圖片連結)、貼圖,有興趣讀者可以去看看[Lotify](https://github.com/louis70109/lotify)了解。 --- 參考資源: * [lotify](https://github.com/louis70109/lotify) * [LINE Notify API Document](https://notify-bot.line.me/doc/en/) * [LINE Notify](https://notify-bot.line.me/zh_TW/) * [Flask](https://flask.palletsprojects.com/en/1.1.x/) * [flask-script](https://flask-script.readthedocs.io/en/latest/)
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up