LINE Notify 初嚐心得
因為「[MOLiの暨大最新公告❤️](https://t.me/ncnu_news)」這個暨大公告推播只有在 Telegram Channel 上面,一直沒有人弄到 LINE 上面,原以為是有什麼考量,一問之下才知道是原開發者懶得弄而已。
其實早在一兩年前我就想弄了,只是當時對 LINE 很反感,加上 LINE Bot 要錢就沒有嘗試,直到昨天看到一篇文章「[Ptt Alertor Ptt新文章即時通知](https://www.ptt.cc/bbs/EZsoft/M.1497363598.A.74E.html)」裡面提到使用 LINE Notify 可以無限次數推播(LINE Bot 只能回覆,主動推播要💰),這下我就心動了,當天晚上心血來潮使用 Django 測試了一下,果然沒什麼問題,就馬上著手進行開發。
[專案請點我](https://github.com/MOLi-rocks/MOLi-TelegramBot/),或是看看我怎麼寫的朋友 [Commit History 在此](https://github.com/MOLi-rocks/MOLi-TelegramBot/commit/db8e815de3f53cfaea5ff45ddc4dad5b7841f36e)。
## 著手進行
[LINE Notify 官方文件](https://notify-bot.line.me/doc/en/)排版有點糟,不過內容也不多,花幾分鐘看完就可以得知所有功能了。
### 次數限制
其中,在最下方寫著「There is a limit to the number of times an API can be called on each service. The default number is set to 1000. The limit is per access token.」,上面又有個 [API Reference](https://developers.line.biz/en/enterprise-reference/messaging-api/#sending_message) 寫著每分鐘可以進行 1000 次 API call。以我破英文的理解能力,應該就是每分鐘不要觸發超過 1000 次就沒問題了,且在每次呼叫後,會在 Header 中附帶 Rate 的相關資訊,其中「X-RateLimit-ImageRemaining」是會定時刷新的,不必擔心一直減少。
### 認證方式
這很妙,你去申請連動幾次,就會獲得幾個 Access Token,這些 Token 都能用來傳送通知給你。
LINE 官方文件提到可以使用「state」去當作識別碼,也就是你得先需要有一個登入或驗證之類的平台,發送給使用者獨立的 URL,GET 方法裡面附帶 state 值丟給 LINE,LINE 會在回傳 code 時附上剛才傳給它的 state,再將 code 附上 Client Secret 傳給 LINE,它會再回傳 Access Token,也就是能夠用來推播訊息的 Token,配合上我們發的 state 就能知道哪位使用者對應到哪個 Token。
不過,因為還沒想到比較好的驗證方式,叫使用者註冊太麻煩(學校 OAuth 還在計畫中),乾脆就把 state 留空,僅在前端頁面提醒大家申請一次就好,避免我這邊收集到一位使用者的多個 Token,造成一則訊息多次推播。
### 實作狀況
太久沒寫 Laravel,每寫一小段就要查文件,加上這是 OpenSource 專案,排版風格要延續、註解要寫好、錯誤處理要寫等等,花了一些時間,不過也因此學到不少,看著前輩的 code 真是佩服!
常寫 code 很重要,多看別人的 code 也很重要,共勉之!
請問您是部署在heroku上嗎?
回覆刪除還是有其他的免費的serve可以選擇嗎?
目前是在學校的主機上
刪除免費的不多,推薦您可以使用樹莓派自架
若您的專案是開源的,也可試試看 OSS Planet 計畫