ข้อมูลอ้างอิงเกี่ยวกับ API การอัพโหลดไฟล์แนบ

ข้อควรระวัง: ID ของไฟล์แนบจะหมดอายุหลังผ่านไป 90 วัน หลังจากที่ ID ของไฟล์แนบหมดอายุ คุณจะต้องอัพโหลดสื่อของคุณอีกครั้งเพื่อรับ ID ของไฟล์แนบใหม่

แม้ว่าไฟล์แนบที่นำมาใช้ซ้ำได้จะหมดอายุหลังจากผ่านไป 90 วันและไม่สามารถส่งอีกครั้งได้ แต่ไฟล์แนบในเธรดข้อความจะไม่มีวันหมดอายุและจะมองเห็นได้จนกว่าผู้ใช้จะลบข้อความออกจากเธรด หากเป็นไปได้ในกรณีการใช้งานของคุณ คุณสามารถรวมขั้นตอนอัพโหลดและส่งเข้าด้วยกันตามที่อธิบายไว้ด้านล่างเพื่อหลีกเลี่ยงปัญหา TTL นี้

API การอัพโหลดไฟล์แนบช่วยให้คุณสามารถอัพโหลดองค์ประกอบต่างๆ ที่คุณสามารถส่งไปกับข้อความในภายหลังได้ ซึ่งช่วยให้คุณไม่จำเป็นต้องอัพโหลดไฟล์ที่ใช้บ่อยหลายๆ ครั้ง API นี้รองรับการบันทึกองค์ประกอบต่างๆ จาก URL และจากระบบไฟล์ในเครื่องของคุณ

นอกจากนี้ คุณสามารถใช้ API การส่งเพื่อส่งข้อความพร้อมไฟล์แนบและบันทึกไฟล์แนบไว้ใช้ในภายหลังไปพร้อมๆ กันได้ โปรดดูข้อมูลเพิ่มเติมในส่วนอัพโหลดและส่งที่ด้านล่าง

อัพโหลดไฟล์แนบ

หากต้องการอัพโหลดไฟล์แนบ ให้ส่งคำขอ POST ไปยังตำแหน่งข้อมูล /Your-page-id/message_attachments พร้อมด้วย message.attachment ที่มี type และ payload ตั้งค่า payload.is_reusable เป็น true เพื่อให้สามารถใช้องค์ประกอบในหลายข้อความ

ตัวอย่างคำขออัพโหลดจาก URL

มีการจัดรูปแบบเพื่อให้อ่านได้ง่าย แทนที่ค่าที่เป็นตัวหนาและตัวเอียง เช่น 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
               }
             }
           }
         }'

ตัวอย่างคำขออัพโหลดจากไฟล์

มีการจัดรูปแบบเพื่อให้อ่านได้ง่าย แทนที่ค่าที่เป็นตัวหนาและตัวเอียง เช่น 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 ซึ่งตั้งค่าเป็น ID ของไฟล์แนบที่จะใช้ในข้อความของคุณ

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

ส่งข้อความพร้อมองค์ประกอบที่อัพโหลด

หากต้องการส่งข้อความที่มีองค์ประกอบที่คุณอัพโหลดก่อนหน้านี้ ให้อัพโหลดโดยตั้งค่า message.attachment.payload.is_reusable เป็น true จากนั้นส่งคำขอ POST ไปยังตำแหน่งข้อมูล /Your-page-id/messages พร้อมด้วย recipient.id และอ็อบเจ็กต์ message.attachment พร้อมด้วย type และ payload.attachment_id

ตัวอย่างคำขออัพโหลดจากไฟล์

มีการจัดรูปแบบเพื่อให้อ่านได้ง่าย แทนที่ค่าที่เป็นตัวหนาและตัวเอียง เช่น 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 ในเพย์โหลดสำหรับกรณีนี้ ไฟล์แนบในเธรดข้อความของผู้ใช้จะเป็นแบบส่วนตัวเสมอ

ตัวอย่างคำขออัพโหลดจาก URL

มีการจัดรูปแบบเพื่อให้อ่านได้ง่าย แทนที่ค่าที่เป็นตัวหนาและตัวเอียง เช่น 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"}

คุณสมบัติ

ในกรณีของไฟล์แนบจาก URL ให้ระบุคุณสมบัติต่อไปนี้ในเนื้อความของคำขอในรูปแบบอ็อบเจ็กต์ 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

สตริง

ระบุหรือไม่ก็ได้ URL ของไฟล์ที่จะอัพโหลด ขนาดสูงสุดของไฟล์รูปภาพอยู่ที่ 8 MB ส่วนไฟล์ประเภทอื่นทั้งหมดจะอยู่ที่ 25 MB (หลังเข้ารหัส) การหมดเวลาของวิดีโอจะอยู่ที่ 75 วินาที ส่วนไฟล์ประเภทอื่นทั้งหมดจะอยู่ที่ 10 วินาที

is_reusable

บูลีน

ไม่บังคับ ค่าเริ่มต้นจะตั้งไว้เป็น falseห้ามตั้งค่าเป็น true หากคุณอัพโหลดและส่งในการเรียกใช้ API เดียวกัน

ให้ตั้งค่าเป็น true เมื่อคุณอัพโหลดและส่งแยกกันคนละขั้นตอนเท่านั้น ID ของไฟล์แนบจะหมดอายุหลังผ่านไป 90 วัน ให้อัพโหลดสื่ออีกครั้งเพื่อรับ ID ของไฟล์แนบใหม่หลังจากผ่านไป 90 วัน

แม้ว่าไฟล์แนบที่นำมาใช้ซ้ำได้จะหมดอายุหลังจากผ่านไป 90 วันและไม่สามารถส่งอีกครั้งได้ แต่ไฟล์แนบในเธรดข้อความจะไม่มีวันหมดอายุและจะมองเห็นได้จนกว่าผู้ใช้จะลบข้อความออกจากเธรด

รหัสข้อผิดพลาด

รหัสข้อผิดพลาดโค้ดย่อยข้อความ

100

2018074

ID อาจไม่ถูกต้องหรือคุณไม่ได้เป็นเจ้าของไฟล์แนบนั้น

100

2018008

ดึงข้อมูลไฟล์จาก URL ไม่สำเร็จ ตรวจสอบว่า URL ถูกต้อง โดยมีใบรับรอง SSL ที่ใช้งานได้, ขนาดไฟล์ถูกต้อง และเซิร์ฟเวอร์ตอบสนองได้เร็วพอเพื่อไม่ให้หมดเวลา

100

2018294

การอัพโหลดวิดีโอหมดเวลาหรือวิดีโอเสีย โปรดทราบว่าหากระบบไม่สามารถดึงข้อมูลวิดีโอได้ภายใน 75 วินาที ก็จะหมดเวลา

100

2018047

อัพโหลดไฟล์แนบไม่สำเร็จ สาเหตุทั่วไปที่ทำให้เกิดข้อผิดพลาดนี้คือประเภทสื่อที่ให้มานั้นไม่ตรงกับประเภทไฟล์ที่ให้ไว้ใน URL