# (新功能) 大量替換或取消連結用戶的圖文選單

大家好,我是做出「LINE 數位版名片」的 LINE API 專家均民。

LINE 在 2023/7/4 發佈了幾個跟官方帳號開發者有關的新功能:(查看英文公告1 (opens new window)公告2 (opens new window)

  1. 可以用更簡單的方式大量更換用戶的圖文選單
  2. Flex 訊息支援更多的卡片尺寸
  3. Flex 訊息內的文字大小可以根據用戶的設定自動縮放

以下是均民針對這幾個新功能的介紹。

# 大量更換用戶的圖文選單

這次 LINE 發佈了三個跟圖文選單有關的新 API,分別是:

  1. 大量替換或取消連結用戶的圖文選單
  2. 取得執行狀態 (針對大量控制圖文選單的 API)
  3. 驗證輸入資料 (針對大量控制圖文選單的 API)

# 大量替換或取消連結用戶的圖文選單(官方文件) (opens new window)

你可以透過這個新的 API 針對用戶的圖文選單進行以下的操作:

  1. 將所有連結到圖文選單 A 的用戶全部替換成圖文選單 B
  2. 將所有連結到圖文選單 A 的用戶全部取消連結
  3. 取消連結所有用戶的圖文選單

以前如果想要大量替換或把用戶的圖文選單取消連結,你需要在 API 內指定所有用戶的 userId,除了要記錄所有用戶的 userId 以外,你還需要用資料庫來記錄用戶目前所在的圖文選單,這樣才能夠去判斷要替換哪些用戶的圖文選單;現在透過這個 API 你只需要指定 richMenuId 即可。

這個 API 有一個需要特別注意的地方是,一次請求允許指定多個圖文選單的操作,這些操作會以用戶為單位進行並行處理。

如果想要知道有關這個 API 的更多說明,請查看官方文件 (opens new window)

# 取得執行狀態 (針對大量控制圖文選單的 API)(官方文件) (opens new window)

因為大量控制圖文選單的 API 通常沒辦法在短時間內執行完成,所以這個請求會在背景非同步執行,你可以使用這個 API 來取得該請求的執行狀態。你最多可以取得過去 14 天以內(336 小時)的執行狀態。

如果想要知道有關這個 API 的更多說明,請查看官方文件 (opens new window)

# 驗證輸入資料 (針對大量控制圖文選單的 API)(官方文件) (opens new window)

這個 API 可以在送出正式請求之前先驗證輸入的資料,由於大量控制圖文選單的 API 有呼叫的頻率限制,透過使用這個 API 可以提前驗證輸入資料的正確性。

如果想要知道有關這個 API 的更多說明,請查看官方文件 (opens new window)

# 如何正確的重新執行大量控制圖文選單的 API(官方文件) (opens new window)

在官方文件中有提到,可以透過指定 resumeRequestKey,來確保大量控制圖文選單的 API 可以在發生錯誤時,應該如何正確的重新執行,詳情請查看官方文件 (opens new window)

# Flex 訊息第 4 版更新

以下是 LINE 這次針對 Flex 訊息的更新內容,但目前 Flex 訊息模擬器對於以下的新功能只有部分支援,建議可以透過均民開發的「Flex 開發人員工具」 (opens new window)進行實測喔!

# Flex 訊息支援更多的卡片尺寸(官方文件) (opens new window)

這次的更新幫 Flex 訊息新增了兩個卡片的尺寸:deca 以及 hecto,卡片的尺寸由小到大排列後依序為:nanomicrodecahectokilomega 以及 giga

均民之前在「快速測試 LINE Flex 訊息顯示的寬度」 (opens new window)這篇文章中分享過如何測試寬度,下圖是加上兩個新卡片尺寸後的測試結果:

如果想知道如何實測,可以查看均民之前寫的「快速測試 LINE Flex 訊息顯示的寬度」 (opens new window)這篇文章。

如果想要知道這個功能的詳細說明,請查看官方文件 (opens new window)

# Flex 訊息內文字可以根據用戶的設定自動縮放(官方文件) (opens new window)

有時候用戶會在 LINE APP 中設定文字大小,只要設定 "scaling": true 以後,訊息內的文字大小就會根據用戶的設定自動縮放。

如果想要知道這個功能的詳細說明,請查看官方文件 (opens new window)

# 原始碼及參考連結

TIP

本文範例程式的原始碼授權為 MIT License,如果有疑問可以透過 Facebook (opens new window) 跟我交流。