## 前言 動機:自己有很多想記錄整理的事情,像是追蹤自己的健康狀況,而有些事情像是喝水或上廁所,智慧手錶是不會幫忙記錄的(何況我也不戴手錶)。所以才想到用line chatbot幫忙我隨時記錄,畢竟手機隨時在身上~另外還有家裡時不時會有過期的零食,也想藉由這次機會做一個可以幫忙統整家裡物品的chatbot。最後,最大的動機其實是想要嘗試看看[Google Cloud](https://cloud.google.com/free/?utm_source=google&utm_medium=cpc&utm_campaign=japac-TW-all-zh-dr-BKWS-all-core-trial-EXA-dr-1605216&utm_content=text-ad-none-none-DEV_c-CRE_644095273672-ADGP_Hybrid+%7C+BKWS+-+EXA+%7C+Txt+-GCP-General-core+brand-main-KWID_43700074766895895-kwd-6458750523&userloc_9198904-network_g&utm_term=KW_google+cloud&gad_source=1&gclid=CjwKCAjwoJa2BhBPEiwA0l0ImBon8DzGgFqpKVmTFRKI3odZB1Mo0FXQZJZw7V8A-Vq0emfIlcyAKhoC0P8QAvD_BwE&gclsrc=aw.ds&hl=zh_tw)的功能,本次實作使用到了[Cloud Functions](https://cloud.google.com/functions?hl=zh_tw)和[Firebase](https://firebase.google.com/)的Realtime database進行API串接。因為兩年前也有嘗試做一個Line chatbot,現在的感想是GCP提供了非常便利的平台開發,讚讚! - 目前功能: - 記錄生活 - 紀錄與整理零食櫃(過期日期) - 紀錄與整理櫥櫃(日用品) - 待開發功能: - [ ] 切換為教學模式 - [ ] 供使用者自行創造小吉OO指令,並加入自動選單中 - [X] 將統整資料繪製成圖片或輸出flex介面, 傳給使用者 - [X] 不可在省略了數量的情況下寫日期 - [ ] 加入冰箱 --- ## 開發地圖 ![image](https://hackmd.io/_uploads/S1mfVM7sR.png) --- ## 加入好友的畫面 把小吉加入好友後會出現畫面,點擊後就可以[開始領養小吉](#呼叫指令選單「我要領養小吉」)了 ![image](https://hackmd.io/_uploads/rkJxpHVjR.png) ## 呼叫指令選單「我要領養小吉」 呼叫選單提示後,會顯示以下選項,點擊即可供使用者自動輸入文字: 1. [照顧小吉的同時記錄牠的生活](#照顧並記錄小吉生活):`呼叫小吉` 2. [叫小吉幫忙整理零食櫃和櫥櫃](#請小吉幫忙整理櫃子):`小吉幫忙` 3. [再次放生小吉](#放生小吉): `放生小吉` 4. 一探究竟小吉的一生: 導至[說明網站](https://franchingkao.github.io/2024/08/21/chatbot-chiwa/) ![image](https://hackmd.io/_uploads/HypB6BNi0.png) ## 照顧並記錄小吉生活 輸入`呼叫小吉`會出現自動選單,可以帶小吉去尿尿、大便、散步(跑跑)、喝水,摸摸小吉則會統整小吉目前為止的生活紀錄。 ![image](https://hackmd.io/_uploads/r1IGAr4jA.png) ### 1. 指令:「小吉OO」 預設的自動選單中有尿尿、大便、散步、喝水~~,其他的指令使用者也可以自行創造~~。 - 動作:將紀錄寫入firebase中 - 回覆:好了! ### 2. 指令:「最近怎麼樣」或「摸摸」 - 動作:取得並統整生活紀錄,再繪製成圖片 - 回覆-1:生活紀錄 - 回覆-2:若生活紀錄尚為空,將回傳生活自動選單 | 回覆-1 | 回覆-2 | | -------- | -------- | | ![image](https://hackmd.io/_uploads/BJ3dA3SjA.png) | ![image](https://hackmd.io/_uploads/Sk5j0r4j0.png) | ## 請小吉幫忙整理櫃子 輸入`小吉幫忙`會出現自動選單,可以請小吉幫忙整理零食櫃(零食)或櫥櫃(日用品),叫`小吉看看`則會統整小吉目前為止的零食櫃(零食)或櫥櫃(日用品)。 ### 1. 指令:「小吉看看零食櫃」或「小吉看看櫥櫃」 - 動作1:根據使用者指示「零食櫃」或「櫥櫃」,取得並統整櫃子紀錄,再繪製成圖片 - 回覆1:櫃子紀錄 - 回覆2:若櫃子尚為空,將回傳打開櫃子自動選單教學 | 回覆-1 | 回覆-2 | |------ | ------| | ![image](https://hackmd.io/_uploads/rk1p02BoA.png) ![image](https://hackmd.io/_uploads/S1d0C3Hj0.png)| ![image](https://hackmd.io/_uploads/B1FL1L4i0.png)| ### 2. 指令:「打開零食櫃」或「打開櫥櫃」 新增零食櫃或櫥櫃裡的東西,輸入模式是以`空行`新增多個物品。若未輸入,則有效期限預設七天後過期,數量預設為1個。 ``` # 物品 數量 日期 # 物品 數量 (可省略日期) # 物品 (可省略數量) 日期 # 物品 (可省略數量) (可省略日期) 打開零食櫃 小吉飼料 1 2024/08/31 小吉潔牙骨 2 小吉餅乾 2024/08/31 小吉餅乾 ``` - 動作:將紀錄寫入firebase中 - 回覆:好了! ### 3. 指令:「清空零食櫃」或「清空櫥櫃」 - 動作:根據使用者指示「零食櫃」或「櫥櫃」,清除在firebase上的所有資料。 - 回覆:好了! ### 4. 指令:「整理零食櫃」或「整理櫥櫃」 - 動作:根據使用者指示「零食櫃」或「櫥櫃」,預設為清除在firebase上的過期資料,即有效期限在今天以前的資料;若有以`空行`指定多個物品,則清除在firebase上的相符資料。 - 回覆:好了! ``` 整理零食櫃 小吉飼料 小吉潔牙骨 小吉餅乾 ``` ## 放生小吉 輸入`放生小吉`會出現自動選單,確認是否要放生小吉。確認放生小吉後會清空所有零食櫃、櫥櫃,以及小吉的所有生活紀錄。 ![image](https://hackmd.io/_uploads/Hk_oW8EiA.png) ### 1. 選項:放生牠 - 動作:清除使用者在firebase上的所有資料。 - 回覆:這個世界上又多了一隻流浪小吉... ### 2. 選項:帶回家 - 動作:無 - 回覆:小吉還是會永遠愛你<3