附件上載 API 參考資料

注意事項:附件編號於 90 天後過期。附件編號過期後,您需要重新上載影音素材以取得新的附件編號。

雖然可重複使用的附件將於 90 天後過期,且無法重新傳送,但訊息串中的附件永遠不會過期,且在用戶從訊息串中刪除之前會一直顯示。如果您的使用案例允許的話,您可同時採取下文所述的上載和傳送步驟,以免發生此存留時間問題。

附件上載 API 可讓您之後在訊息中上載素材,與訊息一起傳送。這樣您就不必多次上載常用的檔案。API 支援從網址和本機檔案系統儲存素材。

您亦可使用 Send API 傳送含有附件的訊息,同時儲存該附件以便日後使用。如需更多資訊,請參閱下面的上載和傳送區塊。

上載附件

若要上載附件,請向 /Your-page-id/message_attachments 端點傳送 POST 要求,其中的 message.attachment 需包含 typepayload。如需在多則訊息中使用素材,請將 payload.is_reusable 設為 true

要求從網址上載的範例

已設定格式以便閱讀。使用自家值替換 bolditalics values,如 page_access_token

curl -X POST "https://graph.facebook.com/v21.0/Your-page-id/message_attachments" \
     -H "Content-Type: application/json" \
     -d '{
           "access_token":"Your_page_access_token",
           "message":{
             "attachment":{
               "type":"image", 
               "payload":{
                 "url":"https://your-url.com/image.jpg",
                 "is_reusable": true
               }
             }
           }
         }'

要求從檔案上載的範例

已設定格式以便閱讀。使用自家值替換 bolditalics values,如 page_access_token

curl -X POST -H "Content-Type: application/json" -d '{
   "message": {
     "attachment": {
       "type": "image"
     }
   },
   "filedata": "@/path-to-your-file/image.jpg",
   "type": "image/png"
  }' "https://graph.facebook.com/v21.0/{PAGE_ID}/message_attachments?access_token={PAGE_ACCESS_TOKEN}"

成功的話,應用程式會收到 JSON 物件,其中 attachment_id 設為要在訊息中使用的附件編號。

{"attachment_id": "Your-attachment-ID"}

傳送包含已上載素材的訊息

如要傳送包含您先前已經上載的素材的訊息,並且在上載時將 message.attachment.payload.is_reusable 設為 true,請向編號為 recipient.id/Your-page-id/messages 端點傳送 POST 要求,其中的 message.attachment 物件包含 typepayload.attachment_id

要求從檔案上載的範例

已設定格式以便閱讀。使用自家值替換 bolditalics values,如 page_access_token

curl -X POST -H "Content-Type: application/json" -d '{
    "recipient": {
      "id": "{PSID}"
    },
    "message": {
      "attachment": {
        "type": "image",
        "payload": {
          "attachment_id": "Your-attachment-ID"
        }
      }
    }
  }' "https://graph.facebook.com/v21.0/{PAGE_ID}/messages?access_token={PAGE_ACCESS_TOKEN}"

成功的話,應用程式會收到 JSON 物件,其中的 success 設為 true

{"success": "true"}

上載和傳送

您還可上載影音素材並透過單個 API 要求傳送。

注意事項:在此案例中,請勿設定裝載中的 is_public=true。用戶訊息串中的附件會一律保密。

要求從網址上載的範例

已設定格式以便閱讀。使用自家值替換 bolditalics values,如 page_access_token

curl -X POST -H "Content-Type: application/json" -d '{
   "recipient": {
     "id": "{PSID}"
   },
   "message": {
     "attachment": {
       "type": "image",
       "payload": {
         "url": "https://your-url.com/image.jpg"
       }
     }
   }
  }' "https://graph.facebook.com/v21.0/{PAGE_ID}/messages?access_token={PAGE_ACCESS_TOKEN}"

成功的話,應用程式會收到 JSON 物件,其中的 success 設為 true

{"success": "true"}

屬性

針對來自網址的附件,請以 JSON 物件格式傳送要求,並於要求內文中提供下列屬性。針對來自檔案的附件,請以表格資料形式傳送屬性。

message

Description of the message to be sent.
Property Type Description

message.attachment

Object

An object describing attachments to the message.

message.attachment

屬性 類型 說明

type

字串

附件類型。必須是下列其中一項:

  • 圖片
  • 影片
  • 音訊
  • 檔案

payload

物件

描述附件的 payload 物件。

message.attachment.payload

屬性 類型 說明

url

字串

可選。要上載檔案的網址。圖像檔案大小不超過 8MB,所有其他檔案類型的大小不超過 25MB(編碼後)。影片逾時期限設為 75 秒,所有其他檔案類型的逾時期限為 10 秒。

is_reusable

布林值

此為選用項目,預設為 false。如果您在一個 API 呼叫中上載和傳送,請勿將其設為 true

只有在分為不同步驟上載和傳送時才設為 true。附件編號會於 90 天後過期。90 天後,重新上載影音素材以取得新的附件編號。

雖然可重複使用的附件將於 90 天後過期,且無法重新傳送,但訊息串中的附件永遠不會過期,且在用戶從訊息串中刪除之前會一直顯示。

錯誤代碼

錯誤代碼子代碼訊息

100

2018074

編號可能無效或您並未擁有此附件。

100

2018008

無法從網址擷取檔案。檢查該網址是否有效、具備有效的 SSL 證書、有效的檔案大小,以及伺服器的回應速度夠快,能避免逾時。

100

2018294

影片上載逾時或影片已損壞。請注意,若未能在 75 秒內擷取此影片便會逾時。

100

2018047

上載附件失敗。觸發此錯誤的一種常見原因,就是所提供的影音素材類型與網址中提供的檔案類型不符。