按這裡前往GCP首頁 點選 建立VM
GCP免費政策如下,可以自己選喜歡的地區,也要注意不要玩過頭網路流量爆掉囉~
我的相關設定如下
點選變更更改硬碟大小與系統
更改硬碟大小與系統如下圖
允許HTTP與HTTPS流量
點選建立,到這裡已經成功建立屬於自己的VM囉~
網路上有相當多教學就不再贅述
選擇VM執行個體
點選SSH
更新軟體包(?)
sudo apt update && sudo apt upgrade -y
更改時區
sudo timedatectl set-timezone Asia/Taipei
把專案抓回來
sudo git clone https://github.com/jayceh99/donate_blood_linebot.git
更改資料夾讀寫權限
sudo chmod 777 /opt/
移到專案資料夾內
cd donate_blood_linebot/
安裝套件管理器
sudo apt install pip -y
安裝所需套件
sudo pip install flask line-bot-sdk python-dateutil lxml apscheduler
修改設定檔
sudo vim config.xml
按i進入編輯,前三項資訊可以在LINE Developers裡面找到
Channel secret跟Your user ID 在Basic settings裡面
Channel access token在Messaging API裡面
最後location就填上你最常出沒的區域,像我住在林口我就填
新北市林口區
整份文件填起來像這樣
<?xml version="1.0"?> <data> <channel_secret>xxxxxxxxxxxxxxxxxxxxxxxxxx</channel_secret> <channel_access_token>xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx</channel_access_token> <your_user_ID>xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx</your_user_ID> <location>新北市林口區</location> </data>
填完後按鍵盤左上角的esc退出編輯,並輸入
:wq
儲存並離開
回到專案資料夾,直接輸入
nohup sudo python3 main.py >/dev/null 2>&1 &
讓主程式在背景運作
下載ngrok
curl -s https://ngrok-agent.s3.amazonaws.com/ngrok.asc | sudo tee /etc/apt/trusted.gpg.d/ngrok.asc >/dev/null && echo "deb https://ngrok-agent.s3.amazonaws.com buster main" | sudo tee /etc/apt/sources.list.d/ngrok.list && sudo apt update && sudo apt install ngrok
記住被碼掉的部分(這個是金鑰)
回到GCP的VM裡,輸入
ngrok authtoken 你的金鑰
啟動ngrok 並放到背景運行
nohup ngrok http 5000 &
將ngrok連線資訊抓出來
sudo wget 127.0.0.1 http://127.0.0.1:4040/api/tunnels
查看外部https網址
cat tunnels
從裡面找到
public_url
後面的https網址把他貼到line bot 內Messaging API 的 Webhook URL最後面加上/callback
如下圖(2024/02/10 ngrok給的`public_url'結尾已經從ngrok.io改成ngrok-free.app了! 不過還是一樣能用)
好了之後點update再點Verify驗證,跳出Success的視窗,代表機器人已經上線囉
到line bot對話視窗,輸入 ? 取得line bot的使用說明
之後就可以開始照著說明初始化囉~
回到專案資料夾內
把自動推播的程式叫起來並放到背景運行
nohup python3 auto_push_info.py &
初始化過後,只要能夠再次捐血的時間一到,每個禮拜天早上8點就會開始自動推播(auto_push_info.py內可更改時間)接下來一個禮拜(日~六)
最常出沒的區域(設定檔內可以更改)哪裡有捐血車囉
以上就大功告成囉~ 建議大家也可以把捐血當作身體健康檢查喔~ 捐血一袋,救人一命,每次捐完血都要給自己一個讚d(`・∀・)b
這機器人只能一個人使用喔!若想多人使用可以用其他google帳號另外建一個雲端主機或是直接修改源碼即可!
若覺得每次都要打一堆字才能做查詢或時期他動作,可以到line bussiness裡面新增圖文選單
點這裡進到圖文選單的設計頁面
把常用的指令放到選單內,設計完會變這樣
我感覺是挺方便的啦 (^ω^)
其實可以在主程式main.py裡面加一行
userid = event.source.user_id
(profile = line_bot_api.get_profile(userid) #這個是取得聯絡人所有資訊(使用者名字、使用者大頭照網址、使用者自介內容))
取得個人的userid,再修改其他相關副程式就可以讓一個機器人服務多人,但本專案運行於免費的GCP雲端主機,有每月的流量限制,所以沒辦法開放給多人使用
group = event.source.group_id 可針對群組取得群組ID 用於機器人在群組裡發送訊息(可以拿來取代line notify)