這個專案是一個使用 FastAPI 建立的 LINE Bot,提供使用者查詢滑板場地資訊,並且將資訊以圖片的方式儲存至 Github,提供給 LINE Bot 所需輸出的網址,詳細流程請參考下圖
- 使用者可以透過 LINE Bot 查詢滑板場地資訊
- 機器人會將查詢結果以圖片的方式儲存至 Github
- 使用者可以透過 API 拿取 CCTV 的截圖
這個專案使用了以下的主要技術:
FastAPI:建立 API LINE Messaging API:與使用者進行互動 Github API:將查詢結果儲存至 Github
你需要 Python 3.7 或以上版本的環境來運行此應用程式,並確保安裝以下的 Python 套件:
Clone 這個專案到你的本地環境:
git clone https://github.com/louis70109/skatepark-CCTV-line.git
cd notifier-line/
python3 -m venv venv
source venv/bin/activate
pip install -r requirements.txt
export LINE_CHANNEL_SECRET=your_line_channel_secret
export LINE_CHANNEL_ACCESS_TOKEN=your_line_channel_access_token
export GITHUB=your_github_token
透過 ngrok 建立暫時含有 https 的網址,並設定在 LINE Developer Console Webhook 欄位當中
ngrok http 8080
將 Domain 設定於 LINE Developer Console
- 前往 LINE Developer Console 網站:https://developers.line.biz/console/
- 點選右上角的「Log in」按鈕,登入您的 LINE 帳號。如果您還沒有 LINE 帳號,您需要先建立一個。
- 在網頁上方的選單中,選擇「Provider」,然後選擇「Create」。
- 在彈出的視窗中,輸入一個 Provider 名稱,然後點擊「Create」。
- 建立之後,您將被導向該 Provider 的頁面。在這裡,選擇「Create Channel」。
- 您需要選擇您要創建的 Channel 類型,對於 bot,請選擇「Messaging API」。
- 填寫 Channel 的資訊,包括 Channel 名稱、Channel 說明、區域、大頭貼等等,然後點選「Create」。
- Channel 建立後,您將被導向 Channel 的設定頁面。在這裡,您可以看到您的 Channel ID、Channel Secret、以及 Channel Access Token,這些資訊將被用於設定 bot。
- 還有一個重要的設定是「Use webhooks」。如果您希望您的 bot 可以接收來自 LINE 的訊息,您需要打開這個設定,並輸入您的 webhook URL。您的 webhook URL 是一個可以接收 POST 請求的伺服器網址。
- 之後,您可以在 LINE app 中加入您剛剛建立的 bot 為好友,並開始測試。
由於 cronjob 是部署在 Cloud Function 上,若要在本地端測試上傳圖片至 GitHub,請參考以下指令:
python -m cron.skatepark
爬取檔案時間避免 cronjob 浪費,因此設定 30 分鐘跑一次,檔案名稱也是以整天、30分為界線,其餘時間點則不會爬取
LINE Bot 也會抓取每 30 分鐘的圖片(ex: 0:00, 0:30),若抓不到的話可能得再稍等
Clone 此專案
git clone git@github.com:gcp-serverless-workshop/notifier-line.git
cd notifier-line/
gcloud init
:初始化 gcloud CLI,該指令會提示登錄 Google 帳戶,並選擇您要使用的 GCP 項目。gcloud config set project PROJECT_ID
:設定 GCP Project ID,以便 gcloud CLI 與該項目交互使用。gcloud auth login
:登錄 Google 帳戶。
透過 gcloud 指令佈署
gcloud run deploy notifier-line-1 --source .
如果你有任何問題或建議,歡迎開 issue 或 pull request。
請見 LICENSE 文件