前言

因為遇到了很多不算坑的坑(說啥呢?),有些是文件沒有寫而有些可能是我沒有注意到的,但既然都知道了就乾脆記下來吧!

LIFF reply 到底算不算收費?

LIFF SendMessage api

字面上看起來很像 Push Message 的事件,但實際上是走 Flex Message,使用 Message api 的 Reply 功能來幫忙使用者發送條件引發 Bot 行為,並非是透過 Push api 發送讓 Bot 反應,這邊需要多注意喔!


liff.sendMessages([
  {
    type: "text",
    text: "You've successfully sent a message! Hooray!",
  },
]);

但是現在 LIFF 還沒有 postback 的功能喔!😭

Flex button 文字(text)欄位空值問題

flex 的 button text 的文字不能用 0 長度的字串,但可以用 ' ' 中間為空白鍵的字串去解決長度 0 的問題,否則會出現以上的錯誤:


Response Data -
  {
    "message": "A message (messages[0]) in the request body is invalid",
    "details": [
      {
        "message": "must be non-empty text",
        "property": "/contents/0/footer/contents/1/action/text"
      },
      ...
    ]
  }

User id 的問題 - Provider

如下圖所示,左邊為我擁有的 provider,而右邊框框則為兩個不同 provider 下屬於我的 user id,只要在同一個 provider 下 user id 都會是固定的,無論用 Login 或 Message API。


Richmenu

座標計算

richmenu 的 x,y 是從左上(0, 0)算到右下(n, n)

限制:

  • Image format: JPEG or PNG
  • Image size (pixels): 2500x1686, 2500x843, 1200x810, 1200x405, 800x540, 800x270
  • Max file size: 1 MB

參考

使用 link 的方式指定給特定使用者

➡️ python API - 連結特定使用者

若只需要連結特定使用者的話使用這個 api,我目前使用情境有兩個

  • Bot 裡有多重身份需要依照角色不同而給不同的 richmenu
  • 實作上下頁的功能,透過讓使用者按下特定位置時觸發更新成另一張圖片
1
def link_rich_menu_to_user(self, user_id, rich_menu_id, timeout=None):

➡️ python API - 一次連結多個使用者

1
def link_rich_menu_to_users(self, user_ids, rich_menu_id, timeout=None):

#[object object] #[object object] #[object object] #[object object] #[object object] #[object object]

【LINE API 的小眉角】feat. Flex message, LIFF, Richmenu, Provider
8.70 GEEK