주의: 첨부 파일 ID는 90일 후에 만료됩니다. 첨부 파일 ID가 만료되면 미디어를 다시 업로드하여 새로운 첨부 파일 ID를 얻어야 합니다.
재사용 가능한 첨부 파일은 90일 후에 만료되어 다시 전송할 수 없지만, 메시지 스레드 내의 첨부 파일은 만료되지 않고 사용자가 스레드에서 메시지를 삭제할 때까지 표시됩니다. 사용 사례에서 허용하는 경우, 아래에 언급된 대로 업로드 및 보내기 단계를 결합하여 이 TTL 문제를 방지할 수 있습니다.
첨부 파일 업로드 API를 사용하면 자산을 업로드하여 나중에 이를 메시지에서 전송하도록 할 수 있습니다. 그러면 자주 사용하는 파일을 여러 번 업로드하지 않아도 됩니다. 이 API는 URL과 로컬 파일 시스템의 자산을 저장하도록 지원합니다.
Send API를 사용하여 첨부 파일과 함께 메시지를 동시에 전송하고 나중에 사용하기 위해 첨부 파일을 저장할 수도 있습니다. 자세한 내용은 아래의 업로드 및 보내기 섹션을 참조하세요.
첨부 파일을 업로드하려면 /
Your-page-id
/message_attachments
엔드포인트로 POST
요청을 보내세요. 이때 type
과 payload
를 포함한 message.attachment
를 포함합니다. 여러 메시지에서 자산을 사용하려면 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}"
요청에 성공하면 앱이 attachment_id
가 메시지에서 사용할 첨부 파일의 ID로 설정된 JSON 개체를 받습니다.
{"attachment_id": "Your-attachment-ID"}
이전에 업로드한 자산을 포함하여 메시지를 보내려면 message.attachment.payload.is_reusable
을 true
로 설정하여 자산을 업로드하고, /
Your-page-id
/messages
엔드포인트로 POST
요청을 보냅니다. 이때 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}"
요청에 성공하면 앱이 success
가 true
로 설정된 JSON 개체를 받게 됩니다.
{"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}"
요청에 성공하면 앱이 success
가 true
로 설정된 JSON 개체를 받게 됩니다.
{"success": "true"}
URL의 첨부 파일에 대해서는 요청 본문에 다음 속성을 JSON 개체로 제공합니다. 파일의 첨부 파일에 대해서는 속성을 양식 데이터로 전송합니다.
message
Property | Type | Description |
---|---|---|
| Object | An object describing attachments to the message. |
message.attachment
속성 | 유형 | 설명 |
---|---|---|
| 문자열 | 첨부 파일의 유형. 다음 중 하나여야 합니다.
|
| 개체 | 첨부 파일을 설명하는 |
message.attachment.payload
속성 | 유형 | 설명 |
---|---|---|
| 문자열 | 선택 사항. 업로드할 파일의 URL. 최대 파일 크기는 이미지의 경우 8MB이고 그 외의 다른 파일 유형의 경우 25MB입니다(인코딩 후). 시간 초과는 동영상의 경우 75초로 설정되고 그 외의 다른 파일 유형의 경우 10초로 설정됩니다. |
| 부울 | 선택 사항. false가 기본값으로 지정됩니다. 하나의 API 호출에서 업로드 및 보내기를 하는 경우 별도의 단계로 업로드하고 보내는 경우에만 true로 설정하세요. 첨부 파일 ID는 90일 후에 만료됩니다. 90일 후에 미디어를 다시 업로드하여 새로운 첨부 파일 ID를 얻습니다. 재사용 가능한 첨부 파일은 90일 후에 만료되어 다시 전송할 수 없지만, 메시지 스레드 내의 첨부 파일은 만료되지 않고 사용자가 스레드에서 메시지를 삭제할 때까지 표시됩니다. |
오류 코드 | 하위 코드 | 메시지 |
---|---|---|
100 | 2018074 | 잘못된 ID이거나 첨부 파일의 소유자가 아닐 수 있습니다. |
100 | 2018008 | URL에서 파일을 가져오지 못했습니다. URL과 SSL 인증서 및 파일 크기가 유효하고 서버가 시간 초과를 방지할 수 있을 만큼 빠르게 응답하는지 확인하세요. |
100 | 2018294 | 동영상 업로드 시간이 초과되었거나 동영상이 손상되었습니다. 동영상을 75초 내에 가져올 수 없으면 시간이 초과됩니다. |
100 | 2018047 | 첨부 파일 업로드에 실패했습니다. 일반적으로 이 오류는 제공된 미디어 유형이 URL에 제공된 파일 유형과 일치하지 않을 때 트리거됩니다. |