ข้อควรระวัง: ID ของไฟล์แนบจะหมดอายุหลังผ่านไป 90 วัน หลังจากที่ ID ของไฟล์แนบหมดอายุ คุณจะต้องอัพโหลดสื่อของคุณอีกครั้งเพื่อรับ ID ของไฟล์แนบใหม่
แม้ว่าไฟล์แนบที่นำมาใช้ซ้ำได้จะหมดอายุหลังจากผ่านไป 90 วันและไม่สามารถส่งอีกครั้งได้ แต่ไฟล์แนบในเธรดข้อความจะไม่มีวันหมดอายุและจะมองเห็นได้จนกว่าผู้ใช้จะลบข้อความออกจากเธรด หากเป็นไปได้ในกรณีการใช้งานของคุณ คุณสามารถรวมขั้นตอนอัพโหลดและส่งเข้าด้วยกันตามที่อธิบายไว้ด้านล่างเพื่อหลีกเลี่ยงปัญหา TTL นี้
API การอัพโหลดไฟล์แนบช่วยให้คุณสามารถอัพโหลดองค์ประกอบต่างๆ ที่คุณสามารถส่งไปกับข้อความในภายหลังได้ ซึ่งช่วยให้คุณไม่จำเป็นต้องอัพโหลดไฟล์ที่ใช้บ่อยหลายๆ ครั้ง API นี้รองรับการบันทึกองค์ประกอบต่างๆ จาก URL และจากระบบไฟล์ในเครื่องของคุณ
นอกจากนี้ คุณสามารถใช้ API การส่งเพื่อส่งข้อความพร้อมไฟล์แนบและบันทึกไฟล์แนบไว้ใช้ในภายหลังไปพร้อมๆ กันได้ โปรดดูข้อมูลเพิ่มเติมในส่วนอัพโหลดและส่งที่ด้านล่าง
หากต้องการอัพโหลดไฟล์แนบ ให้ส่งคำขอ POST
ไปยังตำแหน่งข้อมูล /
Your-page-id
/message_attachments
พร้อมด้วย message.attachment
ที่มี type
และ payload
ตั้งค่า payload.is_reusable
เป็น true
เพื่อให้สามารถใช้องค์ประกอบในหลายข้อความ
มีการจัดรูปแบบเพื่อให้อ่านได้ง่าย แทนที่ค่าที่เป็นตัวหนาและตัวเอียง เช่น 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
ในเพย์โหลดสำหรับกรณีนี้ ไฟล์แนบในเธรดข้อความของผู้ใช้จะเป็นแบบส่วนตัวเสมอ
มีการจัดรูปแบบเพื่อให้อ่านได้ง่าย แทนที่ค่าที่เป็นตัวหนาและตัวเอียง เช่น 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
Property | Type | Description |
---|---|---|
| Object | An object describing attachments to the message. |
message.attachment
คุณสมบัติ | ประเภท | คำอธิบาย |
---|---|---|
| สตริง | ประเภทของไฟล์แนบ ต้องมีค่าอย่างใดอย่างหนึ่งต่อไปนี้
|
| อ็อบเจ็กต์ | อ็อบเจ็กต์ |
message.attachment.payload
คุณสมบัติ | ประเภท | คำอธิบาย |
---|---|---|
| สตริง | ระบุหรือไม่ก็ได้ URL ของไฟล์ที่จะอัพโหลด ขนาดสูงสุดของไฟล์รูปภาพอยู่ที่ 8 MB ส่วนไฟล์ประเภทอื่นทั้งหมดจะอยู่ที่ 25 MB (หลังเข้ารหัส) การหมดเวลาของวิดีโอจะอยู่ที่ 75 วินาที ส่วนไฟล์ประเภทอื่นทั้งหมดจะอยู่ที่ 10 วินาที |
| บูลีน | ไม่บังคับ ค่าเริ่มต้นจะตั้งไว้เป็น falseห้ามตั้งค่าเป็น ให้ตั้งค่าเป็น true เมื่อคุณอัพโหลดและส่งแยกกันคนละขั้นตอนเท่านั้น ID ของไฟล์แนบจะหมดอายุหลังผ่านไป 90 วัน ให้อัพโหลดสื่ออีกครั้งเพื่อรับ ID ของไฟล์แนบใหม่หลังจากผ่านไป 90 วัน แม้ว่าไฟล์แนบที่นำมาใช้ซ้ำได้จะหมดอายุหลังจากผ่านไป 90 วันและไม่สามารถส่งอีกครั้งได้ แต่ไฟล์แนบในเธรดข้อความจะไม่มีวันหมดอายุและจะมองเห็นได้จนกว่าผู้ใช้จะลบข้อความออกจากเธรด |
รหัสข้อผิดพลาด | โค้ดย่อย | ข้อความ |
---|---|---|
100 | 2018074 | ID อาจไม่ถูกต้องหรือคุณไม่ได้เป็นเจ้าของไฟล์แนบนั้น |
100 | 2018008 | ดึงข้อมูลไฟล์จาก URL ไม่สำเร็จ ตรวจสอบว่า URL ถูกต้อง โดยมีใบรับรอง SSL ที่ใช้งานได้, ขนาดไฟล์ถูกต้อง และเซิร์ฟเวอร์ตอบสนองได้เร็วพอเพื่อไม่ให้หมดเวลา |
100 | 2018294 | การอัพโหลดวิดีโอหมดเวลาหรือวิดีโอเสีย โปรดทราบว่าหากระบบไม่สามารถดึงข้อมูลวิดีโอได้ภายใน 75 วินาที ก็จะหมดเวลา |
100 | 2018047 | อัพโหลดไฟล์แนบไม่สำเร็จ สาเหตุทั่วไปที่ทำให้เกิดข้อผิดพลาดนี้คือประเภทสื่อที่ให้มานั้นไม่ตรงกับประเภทไฟล์ที่ให้ไว้ใน URL |