這篇文章主要是分享我在 CoderBridge 線上學習課程中的練習過程
LINE Bot的五大基本流程(摘錄課程綱要)
- 申請 LINE Bot 開發者帳號並建立 LINE Bot Provider / Channel 等相關設定
- 環境設定和安裝 Flask、Requests、Python LINE Messaging API SDK 等套件
- 建立 Python Flask Web Server 並撰寫 Webhook Server 商業邏輯
- 使用 ngrok 建立 https 入口,讓外界可以使用我們的 Flask Web Server
- 在 LINE Bot 管理後台設定 Webhook URL 網址後於 LINE App 上測試使用(可使用 QR Code 加入好友)
容易卡關的地方
1. Flask的本機測試方法
為了讓操作環境單純, 我採用 Anaconda Prompt(Anaconda3)的命令指令列來執行
此時會出現終端機視窗(指令列)
最前面會出現(base) 表示是在 Anaconda Prompt的環境下
因為我的工作目錄位於 D磁碟, 所以我用 D: 指令 和 CD 指令切換到我的Python工作目錄
然後在指令列安裝 flask
pip install flask
的指令在本機只要執行一次即可, 套件會存在電腦中
此時來撰寫 測試程式 (我用的是 Notepad++)
存檔時, 記得要選 Python的格式, 檔名也要記得加 .py
存檔完後, Notepad++ 自動會用 Python的格式來顯示整個程式
此時要如執行 寫好的 .py 程式呢???
在命令列執行 python flask測試.py
即可
如果無誤時, 會出現以下的 flask伺服器的待命狀態
* Serving Flask app "flask測試" (lazy loading)
* Environment: production
WARNING: This is a development server. Do not use it in a production deployment.
Use a production WSGI server instead.
* Debug mode: off
* Running on http://0.0.0.0:8080/ (Press CTRL+C to quit)
此時要如何知道我們寫的程式有成功, 在瀏覽器打上 localhost:8080 即可出現 Hello, World! 表示程式執行正確了
同時也可以看到 指令列的 flask待命區出現執行狀況
如果要離開 flask待命區的狀態, 只要在指令列的視窗 同時按 Ctrl
C
兩個按鍵, 即可離開
2. ngrok的執行
因為我們是用個人電腦來當做伺服主機使用, 而在 Line Bot要連結時, 需要有網址來對應連結, 此時我們就要在本機(電腦)中執行 ngrok 來做網址的對應(轉址, 有點像電話自動轉接的功能)
ngrok下載至電腦為一個執行檔 ngrok.exe
, 因為執行 ngrok
和 flask
都會讓指令列(端終機)處於待命狀態, 所以我們要開啟二個 Anaconda Prompt視窗, 才能分別執行這個功能
此時我們選擇其中一個指令列視窗來執行 ngrok http 8080
此時會出現 一個對應網址, 將這個網址抄寫到 Line的開發後台 Messagint API中的 Webhook URL中 https://da0ab438.ngrok.io/callback
這裡是我的對應, 要抄寫你自己電腦中的對應喔!!!
同時自動回應的功能也要關掉比較好
記得程式中的 @app.route("/callback", methods=['POST'])
那一段不用修改
3. Python Line SDK 和 flask的安裝及執行
此時我們在另一個指令列視窗安裝 Python Line SDK, flask...等套件
這些套件只要執行安裝一次即可!!!
4.執行聊天機器人的Python程式
我們在剛剛那個視窗執行我們寫好的聊天機器人的Python程式, 同樣我用 Notepad++ 來編寫Python程式
同樣的在指令列輸入 python 回聲機器人.py
(這是我的程式名稱, 你要輸入你自己的程式名稱)
此時兩個視窗都進入待命狀態, 等待我們用Line和聊天機器人對話....
上面的Line對話為何第一次的晚安, 沒有自動出現回聲呢? 因為我忘了設定
Webhook URL
你會發現當你在和 Line聊天機器人對話時, 兩個待命視窗都會出現處理的情況
5. 聊天機器人程式修正或更改時,如何處理?
當我們要修改聊天機器人的Python程式, 或更改要執行的程式時, 只要將執行 flask 那一個視窗, 同時按 Ctrl
C
離開即可, 另外一個 ngrok 視窗保持待命即可
以下為改為 輸入指令的聊天機器人程式的範例 (若是程式有問題時, 一樣是先離開 flask待命狀態, 修改好程式存檔完, 再執行相同的檔名程式即可)
因為我有輸入指令, 所以 ngrok 的待命狀態, 多出現了一個執行狀況
而 flask 只有一列的執行狀況 (因為是另一個程式了)
以上是我測試的分享筆記, 歡迎大家一起討論!!!