Hint: 筆記內容主要來自: iT邦幫忙 - LINE BOT 新手村30日攻略系列 的部分重點節錄。
Our Goal & Ability You Need
1. 目的: 實做出一個可以回應使用者的天氣預報 line 機器人 💪
2. 需要具備的能力:
- Line 帳號
- Python 環境
- Python 基礎語法
- 分析JSON資料
- 學習熱誠
接下來進入實作環節 !
Setting Environment
- LINE Messenging API
- LINE BOT設定
Hint: 將我們希望回覆的訊息格式和內容以特定的JSON格式回覆給Messenging API,指定的 JSON格式檔案就可以在我們的 BOT Server 及 LINE Platform 之間以HTTPS的方式,傳遞這則訊息給用戶。
Step1. LINE BOT設定
新增LINE BOT
- 前往 https://developers.line.biz/ 並 登入/創建LINE帳號
- 新增Providers
登入 LINE 帳號後看到介面如下 👇
接下來點擊 Create
輸入Providers name,可以隨意填寫,只要下面都是綠色勾勾就可以~
- 新增 Messenger API channel
點選 Create a Messenging API channel
接下來修改以下內容:
- Channel name
- Channel description
- Category
- Subcategory
- Email address
- 其餘選填
填完後下方選項打勾並點選 Create
產生Access token
- 到 Messaging API
- 在最下面找到 Channel access token 並點擊 issue
務必將此token記下來!之後會用到喔!
Channel Secret
- 請到 Basic settings
- 往下找到Channel secret
務必將此secret記下來!之後會用到喔!
啟用webhook
- 前往 LINE manager 選擇剛剛新增的BOT
- 按右上角設定
- 選擇左側的回應設定 , 將進階設定中的 Webhook勾選啟用、自動回覆訊息改為停用
到這邊關於LINE BOT的設定就告一段落 😄
Step2. 下載Python套件
LINE官方關於python部分有提供 line-bot-sdk
此外,我們也會用到 flask 套件
- win+R 開啟cmd
- 輸入以下指令
1 | pip3 install line-bot-sdk flask |
Python的部分完成囉!
Step3. 開發用資料夾
上面的套件都下載&安裝完後就新增一個資料夾吧~
之後所有的資料都會放在這個資料夾裡面
Step4. 下載ngrok
做本機測試會用到ngrok,這邊就先下載
建議放在剛剛新增的資料夾裡面,之後會比較方便使用
- 前往 https://ngrok.com/download 下載windows版ngrok
如果你是使用WSL或是Linux系統可以下載Linux版ngrok
前置作業終於完成 ! 👍
實作 - 鸚鵡式機器人
Hint: 所謂鸚鵡式機器人就是 你說甚麼,它就說甚麼
- Coding
- 使用webhook建立連線
- 接收使用者訊息
- 回覆使用者訊息
Coding
先到建立的開發用資料夾中開啟新檔案,建議使用VScode開啟。
名稱就叫main.py
將模板放入main.py中
1 | from flask import Flask, request, abort |
Channel Access token 以及 Channel Secret 改成上面提到要記的兩個值放入
1 | app = Flask(__name__) |
指定在 /callback 通道上接收訊息,且方法是 POST
而 callback() 是為了要檢查連線是否正常
其中 signature 是LINE官方提供用來檢查該訊息是否透過LINE官方APP傳送
而 body 就是用戶傳送的訊息,並且是以 JSON 的格式傳送
1 | @app.route("/callback", methods=['POST']) |
這邊是用來接收訊息的地方
特別注意到 line_bot_api.reply_message()
它是回傳訊息的方法,而我們設定回傳的型態是文字(text)
1 | # Message event |
接收到的訊息會被放在event中,一樣會是JSON格式
- events.message.type
這裡記錄訊息的型態 - events.message.text
如果是文字訊息(text)
這裡會記錄傳送的文字 - events.sourse.userId
這裡記錄使用者的ID
指定BOT執行的位置是在 0.0.0.0:8888
接上前面所說的,BOT會接收訊息的位置會是0.0.0.0:8888/callback
1 | import os |
Webhook
Hint: 當LINE Platfrom接收到來自使用者的訊息後,透過API接口,webhook通道使得LINE Platform從被動方變成主動方,將訊息傳送到BOT Server
實作開始
實際上,這份code已經完成了鸚鵡的功能了,那接下來就讓它動起來吧 !
- 執行ngrok.exe
- 在命令提示視窗執行以下指令
1 | ngrok.exe http 8888 |
- 執行cmd,移動路徑到專案的資料夾中
- 在cmd執行以下指令
1 | python main.py |
目前為止,你的畫面應該會是這樣
你會發現有一個會將訊息導向 localhost:80 上的webhook
現在只需要讓LINE 知道webhook在哪裡就完成了!
前往 https://manager.line.biz/ 登入自己的LINE帳號,並進入自己的LINE BOT
點擊右上角的設定 > Messaging API
將Webhook網址改成剛剛ngrok上看到的網址加上/callback並儲存
圖片中忘記加上callback,請記得補上
這樣一來,通道就建構成功啦!
先將LINE BOT加入好友後來試試看功能吧!
LINE ID可以在剛剛的網頁上方找到
接下來就可以跟自己的BOT聊天