做個LINE 機器人記錄誰+1!群組LINE Bot 製作教學與分享
文章推薦指數: 80 %
不少人會在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
延伸文章資訊
- 1line 機器人- 人氣推薦- 2022年10月 - 露天拍賣
line 機器人網路推薦好評商品就在露天,超多商品可享折扣優惠和運費補助。line機器人美女圖line機器人指令line機器人進群組line群組機器人推薦line標記機器人l line ...
- 2LINE 現在就能一次標記全部的人,不用再找點名機器人啦
以前LINE 要一次Tag 所有人,要一個個Tag,或者就要找像點名機器人這樣的第三方服務,對於老闆管理.
- 3趕快更新Line!超實用功能「一鍵標記所有人」,Tag群組成員 ...
LINE又推出新功能!現在想在群組標記所有聊天室成員,不必再一個一個輸入了,新增的「全部標註」功能,讓民眾一鍵就能標註所有人。...
- 4第三天:作一隻最簡單的Line 聊天機器人 - iT 邦幫忙
我們今天來作一個最簡單的Line 聊天機器人,要完成這個目標,我們連一行程式都不用寫。 建立Line Messaging API 帳號. 第一步:開啟Line developers 首頁.
- 5line機器人- 優惠推薦- 2022年10月| 蝦皮購物台灣
買line機器人立即上蝦皮台灣商品專區享超低折扣優惠與運費補助,搭配賣家評價 ... 【呼in】防翻群機器人line群防翻/群組點名/全體標記/查已讀/抽獎/星座運勢/簽到買斷.