2020年3月10日 星期二

用C#開發LINE Bot(36) - 關於LINE Notify的發送限制

當許多用戶開始使用LINE Notify之後,就會發現它真是一個方便好用的機制。

他的推播速度不亞於使用Messaging API的Push Command,甚至我覺得在群發上有更高的彈性與控制自由度。我們只需要得到用戶的Token,就可以輕易的透過HTTP POST發訊息給用戶,這使我不僅可以透過程式碼操作,也可以在command line或搭配script 工具操作,使用起來非常方便。

但是,總不可能是無止盡的發送吧,這個機制怎麼計算發送量與限制的呢?

目前看到LINE官方文件上的說明是…

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.

The API Rate Limit status, can be checked on the response header of the API.

其實有點抽象,讓人有些分不清楚。

不過我們從上面說明也可以知道,呼叫API的次數限制是1000次,而且是Per Token的。也就是說,限制不在服務本身,而是在被呼叫的Token。看起來限制是針對我們取得的用戶Token,而非針對我們(開發人員)所申請的某一個LINE Notify Service。

另外,文件也讓我們知道,相關的資訊可以透過response header取得,針對Header的回覆訊息意義,文件上有說明如下:

我們可以嘗試對某一個token送出訊息,並觀察它的response header:

你會發現,當某個token被呼叫(上例是傳送訊息)時,response的header會透過X-RateLimit-Remaining回傳剩餘的可呼叫次數(上圖A)。不管是發送訊息,還是取得狀態(get status api),只要拿某一個token當做參數,該數字就會遞減。也就是你能針對這個token呼叫api的次數就會減少。

所以我們可以得到一個初步的結論,LINE Notify的限制,不是針對某一個服務、而是針對你取得的用戶Token。也不是針對該Token被發送訊息的量,而是該Token被作為Bearer token參數時被呼叫的API次數。

所以不管是針對該Token(用戶)發送訊息(send notify)或是取得狀態(get status)都算一次。但由於基本量有1000,且定時會reset,所以其實這個數量是遠遠的超過一般的需求的。

開發人員無須擔心LINE官方帳號若作為訊息推播時成本提高的問題,適當的使用LINE Notify不僅會讓你的推播更加輕送,也能夠大幅降低成本唷。

-----------

最新實體課程:http://www.studyhost.tw/NewCourses/LineBot
線上課程:https://www.udemy.com/line-bot/
電子書:https://www.pubu.com.tw/ebook/103305
實體書:https://www.tenlong.com.tw/products/9789865022662
LineBotSDK:https://www.nuget.org/packages/LineBotSDK
如果需要即時取得更多相關訊息,可按這裡加入FB專頁。若這篇文章對您有所幫助,請幫我們分享出去,謝謝您的支持。

沒有留言:

Related Posts Plugin for WordPress, Blogger...

熱門文章