2021年7月18日 星期日

初始化 LineBot 專案

學習目標:
  • 了解 Line Bot 聊天機器人專案所需使用的設定
  • 了解每項開發工具的配合項目與使用方式

開始建立 Line Bot 專案
  1. 在 Workspace 目錄下,建立一個新的專案資料夾:LineBot
  2. 在 LineBot 資料匣下,先行建立 Python 主要程式檔:main.py
    import os
    from flask import Flask, request, abort
    from linebot import LineBotApi, WebhookHandler
    from linebot.exceptions import InvalidSignatureError
    
    app = Flask(__name__)
    
    # Line 聊天機器人的基本資料
    line_bot_api = LineBotApi('Channel access token')
    handler = WebhookHandler('Channel secret')
    
    # 接收 line 平台送來的「通知」
    @app.route("/callback", methods=['POST'])
    def callback():
        signature = request.headers['X-Line-Signature']
        body = request.get_data(as_text=True)
        app.logger.info("Request body: " + body)
    
        try:
            handler.handle(body, signature)
        except InvalidSignatureError:
            abort(400)
    
        return 'OK'
    
    if __name__ == "__main__":
        app.run()
    
    PS:先別急著執行測試該檔案
  3. 到 Line Developers 申請 access token 以及 secret key:
    • 選擇 Basic setting
    • 下接網頁至底,可以看見 Channel secret 項目!將資料複製下來,貼至程式 main.py 中,取代 Channel secret 字樣!
    • 選擇 Messaging API :
    • 下接頁面至底,可以看到 Channel access token!按下 issue ,可以產生access token !!
      複製 token 後,取代程式 main.py 內的 Channel access token 字樣!
  4. 在 Heroku 中建立專案!
    • 登入 Heroku 首頁中,選擇「Create new app」
  5. 自行輸入專案名稱,只要是出現綠色框,表示 Heroku 同意建立!
  6. 建立的主畫面如下:
  7. 在主畫面往下拉,可看見 Heroku cli 的 git 教學
    PS:等一下將會使用到該教學
  8. 在專案目錄底下建立三個檔案,分別為 Procfile、requirements.txt、runtime.txt
    • Procfile 檔案內容
      web: gunicorn main:app --preload
      
    • requirements.txt
      Flask>=1.1.1
      gunicorn>=20.0.4
      line-bot-sdk>=1.15.0
      
    • runtime.txt
      python-3.9.6
      
  9. 將工作目錄切換至專案目錄內,將檔案推送至 Heroku 的專案內!
    heroku login
    git init
    heroku git:remote -a 你的app名稱
    git add .
    git commit -m "Add new App"
    git branch
    git checkout -b main
    git branch -D master
    git push heroku main
     
    PS:出現以下畫面,就算成功了!
  10. 設定 Line Developers 的 Webhook :
    • 在 Line Developers 的 Messaging API 中,下拉網頁至 Webhook site
    • 在 Webhook URL 的欄位中,輸入 https://你的app名稱.herokuapp.com/callback
    • 按下「Verify」可以驗證結果,並且要記得推開 Use webhook 的功能
  11. 修改 main.py 檔案後,推送至 Heroku 專案,即可進行測試
    import os
    from typing import Text
    from flask import Flask, request, abort
    from linebot import LineBotApi, WebhookHandler
    from linebot.exceptions import InvalidSignatureError
    
    from linebot.models import MessageEvent, TextMessage, TextSendMessage
    
    app = Flask(__name__)
    
    # Line 聊天機器人的基本資料
    line_bot_api = LineBotApi('Channel access token')
    handler = WebhookHandler('Channel secret')
    
    # 接收 line 平台送來的「通知」
    @app.route("/callback", methods=['POST'])
    def callback():
        signature = request.headers['X-Line-Signature']
        body = request.get_data(as_text=True)
        app.logger.info("Request body: " + body)
    
        try:
            handler.handle(body, signature)
        except InvalidSignatureError:
            abort(400)
    
        return 'OK'
    
    if __name__ == "__main__":
        app.run()
    
參考文獻: