# News: Messaging API更新(2020年5月)

Messaging API更新(2020年5月)

我們對Messaging API做了幾項改善。

# 訊息的字數限制與影音檔案使用條件的調整

目前已調整針對文字訊息的字數限制以及影音檔案使用條件。請參考下方表格比對變更前後的差異。

  • 文字訊息

    項目 變更前 變更後
    最大字數 2000 5000
  • 圖文選單(Richmenu)物件 (圖片)

    項目 變更前 變更後
    圖片尺寸
    (寬度 x 高度)
    2500px × 1686px
    2500px × 843px
    1200px × 810px
    1200px × 405px
    800px × 540px
    800px × 270px
    800px以上 x 2500px以下 *

    * 寬度/長度的比例應至少為1.45。

  • 圖片訊息 (圖片)

    項目 變更前 變更後
    檔案格式 JPEG JPG, JPEG, PNG
    圖片尺寸上限 4096px × 4096px 無限制
    檔案大小上限 1MB 10MB
  • 影片訊息 (影片)

    項目 變更前 變更後
    長度上限 1分鐘 無限制
    檔案大小上限 10MB 200MB
  • 語音訊息 (語音)

    項目 變更前 變更後
    長度上限 1分鐘 無限制
    檔案大小上限 10MB 200MB
  • Imagemap訊息 (圖片)

    項目 變更前 變更後
    檔案大小上限 1MB 10MB
  • Imagemap訊息 (影片)

    項目 變更前 變更後
    長度上限 1分鐘 無限制
    檔案大小上限 10MB 200MB
  • 圖片訊息 / 影片訊息 / Imagemap訊息 (預覽圖片)

    項目 變更前 變更後
    檔案格式 JPEG JPEG, PNG
    圖片尺寸上限 240px x 240px 無限制

# 從webhook event的message物件中取得LINE表情貼資訊

如果使用者傳送的文字中包含LINE表情貼,則在webhook接收到文字訊息物件時會包含emojis的屬性,相關資訊被歸納在LINE emoji物件當中。

LINE表情貼種類是由productIdemojiId來識別:

{
  "replyToken": "nHuyWiB7yP5Zw52FIkcQobQuGDXCTA",
  "type": "message",
  "mode": "active",
  "timestamp": 1462629479859,
  "source": {
    "type": "user",
    "userId": "U4af4980629..."
  },
  "message": {
    "id": "325708",
    "type": "text",
    "text": "Hello, world! (love)",
    "emojis": [
      {
        "index": 14,
        "length": 6,
        "productId": "5ac1bfd5040ab15980c9b435",
        "emojiId": "001"
      }
    ]
  }
}

更多細節請參考Messaging API reference中的Text部分。

# 安全地重新呼叫已失敗的API請求

如果在使用Messaging API傳送訊息時出現錯誤,或是請求超時,您將無法得知訊息是否有正確地傳給使用者。而重新發送相同請求時,若第一次的請求已成功傳送,將可能導致使用者接收到同樣的訊息兩次。

您可以將retry key(X-Line-Retry-Key)追加至HTTP Header來安全地重新發送相同的請求。

Retry key的值是由十六進制隨機產生的UUID(例如: 123e4567-e89b-12d3-a456-426614174000)。無論API請求時使用多少次含有相同UUID的retry key,終將只會有一次請求被接受,避免重複執行相同請求。而透過retry key,能使API請求在retry時能夠更安全地執行。

curl -v -X POST https://api.line.me/v2/bot/message/push \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer {CHANNEL_ACCESS_TOKEN}' \
-H 'X-Line-Retry-Key: {UUID}' \
-d '{
    "messages": [
        {
            "type": "text",
            "text": "Hello, user"
        }
    ]
}'

更多資訊請參考重新嘗試失敗的API請求