做個LINE 機器人記錄誰+1!群組LINE Bot 製作教學與分享

文章推薦指數: 80 %
投票人數:10人

不少人會在LINE 群組開團購、點餐、或是大家要預約課程,就會一直傳「+1」,你也覺得一直滑聊天室紀錄誰傳加一很麻煩嗎?這裡我用Google App Script 製作一款LINE +1 ... LINEBot 程式開發 36次分享 36 0 閱讀時間:2分鐘做個LINE機器人記錄誰+1!群組LINEBot製作教學與分享 Shawn2021-11-27 Total 36 Shares 36 0 Total 36 Shares 36 0 0 不少人會在LINE群組開團購、點餐、或是大家要預約課程,就會一直傳「+1」,你也覺得一直滑聊天室紀錄誰傳加一很麻煩嗎?這裡我用GoogleAppScript製作一款LINE+1紀錄機器人,自動紀錄群組有誰傳+1,還有附範例程式碼喔! 這是我第一次寫技術文章,盡量梳理我寫這個LINE機器人的過程、思緒邏輯和程式碼寫法,但無論是程式碼或是這篇技術文都有很多要改進的地方,若我的寫法很亂還請多包涵,也請大神多多指教!在2022我也用AppScript開發一支LINE機器人,幫全台高中生找大學科系資訊,歡迎閱讀:1個月內累積破萬使用者:大學科系查詢LINE機器人製作過程分享個人也有在接LINEBot開發的案件委託,若您想發案,讓我幫您開發客製化的LINE機器人,歡迎點此連結與我聯繫。

目錄 隱藏 1. +1LINE機器人設計動機💡 1.1. +1機器人實測(Demo) 2. +1機器人功能👍 2.1. 用AppScript製作超方便 2.2. Google試算表當簡易資料庫 3. 來寫Code!實作加一LINE機器人🤖 3.1. 第一步:設定LINEAPIwithAppScript 3.2. 第二步:連接Google試算表 3.3. 第三步:設定報名時間與條件 3.4. 第四步:設定關鍵字與報名動作 3.5. 第五步:部署LINE機器人 3.6. 附上LINE機器人範例程式碼 4. 注意事項&常見問題 4.1. 傳了訊息後,LINE機器人沒有回傳訊息 4.2. 機器人回傳的訊息是舊的,怎麼辦? 4.3. 機器人沒有回傳Google試算表的資料? 4.4. LINE機器人加入群組卻沒回覆? 5. 結語 +1LINE機器人設計動機💡 我媽有在上瑜珈課程,報名課程的方式是要參加的人在LINE群打「加一」,老師再手動記錄有哪些人要上課 加上課程名額有限,大家都是瘋傳訊息,也不知到額滿了沒。

而且瑜珈老師這樣紀錄很沒有效率,也容易出錯,所以我構思做一支LINE機器人,自動記錄+1名單。

+1機器人實測(Demo) 這是瑜珈課程的群組截圖,群組只要有人傳+1,機器人會自動記錄,並回傳告知報名成功與剩下多少名額: 傳指定關鍵字「名單」就能讓機器人傳送完整的報名名單: 更酷的是,資料都是暫存在Google試算表裡,不用另建伺服器或資料庫: +1機器人功能👍 以下是加一LINEBot具備的功能: 當群組有人傳「加一」訊息,擷取傳訊息者的帳號名稱並紀錄到資料庫有人+1時,機器人回傳群組剩下多少名額、或額滿了沒?設定「減一」(取消課程)以及候補名額,當有正式學員-1,自動讓候補者替補。

老師傳送指定關鍵字,機器人會回傳報名名單 這樣就能不僅節省老師紀錄的時間,要報名的同學也能知道明天的課程是否額滿了。

我是以課程預約為前提來設計這隻機器人的,你也可以改成用來記錄團購,或是單純的關鍵字回覆機器人。

用AppScript製作超方便 AppScript是一個由Google設計的程式語言,語法很接近Javascript,可以用來達成一些自動化操作,像是編輯GoogleSheet(試算表)或自動寄Gmail。

會用AppScript寫LINEBot,主要有以下兩個優點: 免費用Google雲端主機,穩定快速,且不會跟HeroKu一樣喚醒要很久不用設定Port,對我來說很方便(筆者用ngork跟Heroku開port常常失敗) Google試算表當簡易資料庫 前面我有提到要讓機器人把名單紀錄到資料庫,因為內建的LINEBot本身沒有紀錄資料的功能,所以我們可以用Google的試算表(類似Excel)充當簡易的資料庫,紀錄哪些人報名了。

而且用AppScript寫LINEBot的話,連接試算表只要幾句code就好,不用設定APIKey等工作。

來寫Code!實作加一LINE機器人🤖 接著來分享一些技術性內容,分享我如何用GoogleAppScript來做紀錄加一的LINEBot。

第一步:設定LINEAPIwithAppScript 先來寫GoogleAppScript版的LINE機器人,下方是最簡單的LINEBot範例程式碼: 這個檔案的功能包含拆解使用者傳送的JSON格式訊息,並將同為JSON格式的回覆訊息傳給LINE伺服器,讓LINE處理並轉寄回給使用者,各個程式碼的說明都用註解附上了。

如果你單純想複製、使用我寫好的原始碼,我在文末有附上Github完整程式碼的連結,可以直接滑到後面。

第二步:連接Google試算表 前面有提到我們要讓機器人將報名資料儲存到Google試算表裡,以下是讓AppScript存取、寫入Google試算表的語法: 我是用連結的方式讓AppScript存取Google試算表,也可以透過SheetID。

有了這段code就能讓AppScript讀寫試算表,將使用者傳的資料存進去,需要時再爬取資料回傳給使用者。

第三步:設定報名時間與條件 瑜珈老師有提到他的報名時間和條件: 只在當天晚上九點到隔天晚上七點前接受報名每次課程最多只收40人 所以需要讓LINE機器人收到訊息時,先取得訊息傳送的時間是否在開放時段裡,並判斷報名表單是否達到四十人。

報名時間部分,我參考了GoogleAppScript說明文件和這篇StackOverflow,AppScript取得時間的語法如下: 程式最後的“HH”可以指定要取得的時間格式,若改成“HH:mm:ss”則會顯示「小時:分:秒」,因為目前我只需要判斷小時,所以用“HH”(Hour) 接著是判斷報名人數,我的資料記錄方式就是單純把人名記錄在Arow(第一列),所以只要判斷A列的行數是否達到40筆資料(40人)即可。

取得Google試算表最大行數的AppScript語法如下: 記得將reserve_list改成第二步驟設定的試算表變數名稱 第四步:設定關鍵字與報名動作 在第一步驟的程式碼中,我將使用者傳送的訊息文字變數設定為“userMessage”,所以只要判斷userMessage等於哪些字就好。

我需要判斷的關鍵字有四個: 「+1」:一人報名「+2」:一個使用者幫兩人報名「-1」:取消報名「名單」:列出報名名單 (一個瑜珈課程報名也能這麼複雜XDDDDDDD) 以下是我寫的「+1」關鍵字部分,各段重點說明放在註解裡: 使用者傳「+1」「加一」「+1」(全形)時觸發抓取Google資料表的行數與執行時間,判斷要不要紀錄設有3位候補名額,第41–43位會設為候補學員 「+2」部分我直接用填入兩格資料替代: 使用者傳「+2」時,自動填入兩格資料當候補名額剩一位,不開放+2的使用者 「減一」(取消課程)的部分,我先用迴圈檢查一次要取消的學員是否真的有報名過,並讓候補者替補取消的人的位置(若有候補者): 最後是讓老師查報名名單的部分,我設計讓老師傳「名單」兩字,機器人會回覆有多少人報名,以及會上課的名單。

先用迴圈紀錄一次試算表的資料,再加到回覆訊息中: 第五步:部署LINE機器人 網路上有很多GoogleAppScript部署LINEBot的教學了,這裡我簡單講一下流程: 先到LINEDevelopers開一個Provider帳號,新增一個LINEMessagingAPI取得Token填入AppScript的程式碼中點選AppScript網頁的部署按鈕,新增一個網路應用程式將應用程式網址填入LINEWebhook中 LINEDevelopers詳細操作可以參考這支Youtube影片: 用LineBot來搜尋Google試算表的資料–(02)LineBot設定 部署AppScript的步驟可以參考這篇文: 兩小時打造簡單LineChatbot—使用GoogleAppsScript&GoogleSheetAPI 附上LINE機器人範例程式碼 如果你看前面的說明還是霧煞煞,或是單純想改成自己的機器人,我已經將完整的程式碼公開在個人Github,也有部署教學。

如果我的這個sideproject有幫到你,或是覺得我寫的還不錯,請幫我按個星星大力地鞭策我XD當然有任何指教也歡迎留言告知我。

延伸閱讀:2021LINEBot教學:讓LINE機器人知道使用者/群組成員的名字👈🏻延伸閱讀2:1個月內累積破萬使用者:大學科系查詢LINE機器人製作過程分享 前往GitHub原始碼 注意事項&常見問題 我在開發LINE機器人犯過不少錯,這裡列幾個新手會常犯的錯誤及常見問題: 傳了訊息後,LINE機器人沒有回傳訊息 如果傳測試訊息後,你的機器人沒有傳任何訊息(只有已讀),代表是程式碼出錯,可能是Token錯誤,或是你的回覆訊息(reply_message)的JSON格式有問題,建議重新檢查一下變數跟reply_message格式是否正確。

機器人回傳的訊息是舊的,怎麼辦? GoogleAppScript的每一次部署都會生成新的網址,所以每更改一次程式碼,就要重新按一次部署按鈕,並將新的應用程式網址貼到LINEConsole的Webhook欄位,這很重要。

機器人沒有回傳Google試算表的資料? 先確認Sheet_url的網址、以及工作表等名稱是否正確,所有設定要跟你自己的試算表相同。

再來是確定你用的getValue後面有沒有加括號()也可能該資料格沒有資料(請善用try&catch) LINE機器人加入群組卻沒回覆? 先到LINE商務網站,到你的LINEBot頁面點右上角的設定:帳號設定>功能切換>改成「接受邀請加入群組或多人聊天室」,如果群組已有其他機器人要先移除,一個群組只能同時用一個機器人。

結語 在製作這個+1LINE機器人時,我也是邊爬文邊學到很多,像是怎麼讓機器人取得LINE使用者的名稱,更遇到幾十次的錯誤bug,建議在你的code加上一個測試關鍵字,確認是整個檔案出錯還是只有特定關鍵字的區塊無法執行。

當然如果你複製、照著設定走還是失敗,或是有其他疑問、建議的話,都歡迎留言告訴我~未來也會分享幾個AppScript+LINEAPI的教學文。

而筆者也有在接LINEBot開發的案件委託,若您想開發客製化的LINE機器人、想發案給我,歡迎點此連結聯繫。

更新:目前LINEBot程式接案委託已排程至8月底(2022),不接受急案❗️ 延伸閱讀:1個月內累積破萬使用者:大學科系查詢LINE機器人製作過程分享👈 嗨囉我是Shawn,首先感謝你看完全部內容!我是位大一學生,也是一間新創的前端實習生,希望跟大家分享如何運用科技提高生產力,並在網站紀錄著自己樸實無華的平凡人生。

如果對於文中內容有任何問題,或是商業合作洽詢,可在下方管道與我聯繫: e-mail:[email protected] Telegram:jschang666 linebotlinemessagingAPILINE機器人LINE機器人程式碼line機器人範例程式碼 Share 36 Share 0 前一篇文章 科技教學 2022Spotify匯入音樂到手機教學:教你把電腦本機檔案同步至手機 2021-11-20 下一篇文章 學生資訊 學習與效率 15個學習歷程檔案/學生PPT模版與工具分享:高中生必收藏! 2021-12-15 最新文章 生活紀錄 從金融系到UI設計師:轉職心得分享與經驗談ft.學習家&EliseFu 學習與效率 生活紀錄 程式開發 IT實習生的心得筆記:4個我所學的重點心法(沒有程式碼) 學生資訊 科技教學 準大學生請看!2022大學新生免費資源&優惠懶人包 好站推薦 我的社群帳號 Instagram GitHub LinkedIn Medium



請為這篇文章評分?