# 近期 LINE 針對開發者的更新:驗證圖文選單、LIFF 插件、Webhook 重送機制
大家好,我是做出「LINE 數位版名片」的 LINE API 專家均民。
近期 LINE 針對開發者發布了幾個更新,分別是驗證圖文選單(查看英文公告) (opens new window)、LIFF 插件(查看英文公告) (opens new window)、Webhook 重送機制(查看英文公告) (opens new window),這篇文章就是來帶大家快速瞭解這幾個更新的內容!
# 驗證圖文選單 API
這個 API 可以讓開發者在新增圖文選單之前,先驗證圖文選單的 JSON 是否正確。可惜這個 API 目前需要 channel access token
,也沒有提供 CORS 的 Header,所以目前比較適合的使用方式是透過 Postman 使用這個 API。
# LIFF 插件
這個功能是讓開發者可以自己寫程式幫 LIFF SDK 增加新的功能。
一個 LIFF 的 Plugin 必須要有 name
以及一個 install()
,剩下的部分就可以自由定義。在 install()
中有兩個參數可以使用,分別是 context
跟 option
:
LIFF 插件還能夠使用 LIFF SDK 的 hook 功能,目前有兩個內建的 hook:
除了使用內建的 hook 之外,你也可以新增自定義的 hook。
# Webhook 重送機制
這個 Webhook 重送機制是當你的 Webhook 沒有在時間內正確回傳 2xx
的狀態碼時,LINE 就會重新傳送這個事件給你的 Webhook。這個功能預設是被關閉的,在啟用這個功能之前,你需要先看過這些注意事項 (opens new window),然後你可以在 LINE Developers Console (opens new window) 的 Messaging API Channel 中啟用。
為了避免 Webhook 重複處理同一個事件,有兩個新的資料被加到 Event 的共通屬性中:
另外,針對傳送錯誤的次數,也有一個開關可以產生錯誤次數的報表,你一樣可以在 LINE Developers Console (opens new window) 的 Messaging API Channel 中啟用這個功能:
# Webhook 重送機制實測
TIP
- Webhook 重送機制實測原始碼在此 (opens new window),歡迎自行建立一個自己的 Google Cloud Functions 進行測試
為了實測 Webhook 的重送機制,我用 Google Cloud Functions 寫了一個 linebot,當目前的秒數介於 0-29
之間就會回傳 418
狀態碼,介於 30-59
之間就會回傳 200
狀態碼:
把程式碼部署好以後,我們就可以對 LINE 官方帳號傳送訊息:
在使用這個程式初步測試以後,我們可以發現 LINE 大約每 60 秒重新傳送一次訊息,然後在傳送 16 次都失敗後就會停止傳送:
另外一個值得注意的地方是,重新傳送的訊息會拿到相同的 replyToken
,但 replyToken
還是只能使用一次,所以後面幾次都會收到 Invalid reply token
的錯誤訊息:
# 原始碼及參考連結
TIP
本文範例程式的原始碼授權為 MIT License,如果有疑問可以透過 Facebook (opens new window) 跟我交流。