Tài liệu tham khảo về API Tải lên file đính kèm

CHÚ Ý: ID file đính kèm sẽ hết hạn sau 90 ngày. Sau khi ID file đính kèm hết hạn, bạn cần phải tải lại file phương tiện của mình lên để lấy ID file đính kèm mới.

Mặc dù file đính kèm có thể tái sử dụng sẽ hết hạn sau 90 ngày và không thể gửi lại, nhưng file đính kèm trong chuỗi tin nhắn sẽ không bao giờ hết hạn và hiển thị cho đến khi người dùng xóa tin nhắn khỏi chuỗi. Nếu trường hợp sử dụng cho phép, bạn có thể kết hợp các bước tải lên và gửi như nêu bên dưới để tránh vấn đề TTL này.

API Tải lên file đính kèm cho phép bạn tải lên tài sản có thể gửi trong tin nhắn sau đó. Nhờ vậy, bạn không phải tải lên nhiều lần các file thường dùng. API này hỗ trợ lưu tài sản từ URL và từ hệ thống file cục bộ của bạn.

Bạn cũng có thể dùng Send API để gửi đồng thời tin nhắn có file đính kèm và lưu file đính kèm đó để sử dụng sau. Để biết thêm thông tin, hãy xem phần Tải lên và gửi bên dưới.

Tải file đính kèm lên

Để tải file đính kèm lên, hãy gửi yêu cầu POST đến điểm cuối /Your-page-id/message_attachments, kèm theo message.attachmenttypepayload. Để có thể sử dụng tài sản này trong nhiều tin nhắn, hãy đặt payload.is_reusabletrue.

Yêu cầu mẫu cho trường hợp tải lên từ URL

Được định dạng để dễ đọc. Thay thế các giá trị in đậm, in nghiêng như page_access_token bằng các giá trị của bạn.

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
               }
             }
           }
         }'

Yêu cầu mẫu cho trường hợp tải lên từ file

Được định dạng để dễ đọc. Thay thế các giá trị in đậm, in nghiêng như page_access_token bằng các giá trị của bạn.

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}"

Khi thành công, ứng dụng của bạn sẽ nhận được một đối tượng JSON có attachment_id được đặt là ID của file đính kèm mà bạn sẽ dùng trong tin nhắn.

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

Gửi tin nhắn có chứa tài sản đã tải lên

Để gửi tin nhắn có chứa tài sản mà bạn đã tải lên trước đó với message.attachment.payload.is_reusable được đặt là true, hãy gửi yêu cầu POST đến điểm cuối /Your-page-id/messages kèm theo recipient.id cùng đối tượng message.attachmenttypepayload.attachment_id.

Yêu cầu mẫu cho trường hợp tải lên từ file

Được định dạng để dễ đọc. Thay thế các giá trị in đậm, in nghiêng như page_access_token bằng các giá trị của bạn.

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}"

Khi thành công, ứng dụng của bạn sẽ nhận được một đối tượng JSON có success được đặt là true.

{"success": "true"}

Tải lên và gửi

Ngoài ra, bạn có thể tải lên và gửi file phương tiện trong một yêu cầu API duy nhất.

CHÚ Ý:Không đặt is_public=true trong phần tải dữ liệu cho trường hợp này. File đính kèm trong chuỗi tin nhắn của người dùng luôn ở chế độ riêng tư.

Yêu cầu mẫu cho trường hợp tải lên từ URL

Được định dạng để dễ đọc. Thay thế các giá trị in đậm, in nghiêng như page_access_token bằng các giá trị của bạn.

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}"

Khi thành công, ứng dụng của bạn sẽ nhận được một đối tượng JSON có success được đặt là true.

{"success": "true"}

Thuộc tính

Đối với file đính kèm từ URL, hãy cung cấp các thuộc tính sau trong phần nội dung của yêu cầu dưới dạng đối tượng JSON. Đối với file đính kèm từ file, hãy gửi thuộc tính dưới dạng dữ liệu mẫu.

message

Description of the message to be sent.
Property Type Description

message.attachment

Object

An object describing attachments to the message.

message.attachment

Thuộc tính Loại Mô tả

type

Chuỗi

Loại file đính kèm. Phải thuộc một trong các loại sau:

  • hình ảnh
  • video
  • âm thanh
  • file

payload

Đối tượng

Đối tượng payload mô tả file đính kèm.

message.attachment.payload

Thuộc tính Loại Mô tả

url

Chuỗi

Không bắt buộc. URL của file sẽ tải lên. Kích thước file tối đa là 8MB đối với hình ảnh và 25MB đối với mọi loại file khác (sau khi mã hóa). Thời gian chờ được đặt là 75 giây đối với video và 10 giây đối với mọi loại file khác.

is_reusable

Boolean

Không bắt buộc, mặc định là false.Không đặt là true nếu bạn tải lên và gửi trong một lệnh gọi API.

Chỉ đặt là true khi bạn tải lên và gửi trong các bước riêng. ID file đính kèm sẽ hết hạn sau 90 ngày. Hãy tải lại file phương tiện của bạn lên để lấy ID file đính kèm mới sau 90 ngày.

Mặc dù file đính kèm có thể tái sử dụng sẽ hết hạn sau 90 ngày và không thể gửi lại, nhưng file đính kèm trong chuỗi tin nhắn sẽ không bao giờ hết hạn và hiển thị cho đến khi người dùng xóa tin nhắn khỏi chuỗi.

Mã lỗi

Mã lỗiMã phụThông báo

100

2018074

ID có thể không hợp lệ hoặc bạn không sở hữu file đính kèm.

100

2018008

Không thể tìm nạp file từ url. Kiểm tra để đảm bảo rằng URL hợp lệ, cùng với chứng chỉ SSL hợp lệ, kích thước file hợp lệ và máy chủ phản hồi đủ nhanh để không bị hết thời gian chờ.

100

2018294

Quá trình tải video lên đã hết thời gian chờ hoặc video bị hỏng. Lưu ý rằng nếu bạn không thể tìm nạp video trong vòng 75 giây, quá trình tìm nạp sẽ hết thời gian chờ

100

2018047

Không thể tải file đính kèm lên. Cách phổ biến để kích hoạt lỗi này là loại file phương tiện đã cung cấp không khớp với loại file được cung cấp trong URL