ВНИМАНИЕ! Срок действия ID прикрепленных файлов составляет 90 дней. Когда срок действия ID прикрепленного файла истечет, его нужно будет загрузить заново и получить новый ID.
Срок действия повторно используемых прикрепленных файлов составляет 90 дней, после чего их нельзя переслать, однако прикрепленные файлы в цепочках сообщений не имеют срока действия и остаются видимыми до тех пор, пока пользователь не удалит это сообщение из цепочки. Если это предусмотрено вариантом использования, вы можете объединить этапы загрузки и отправки, как показано ниже, чтобы избежать проблем с временем жизни.
Attachment Upload API позволяет загружать объекты, которые позднее можно отправлять в сообщениях. Благодаря этому вам не нужно загружать часто используемые файлы несколько раз. Этот API поддерживает сохранение объектов из URL и из локальной файловой системы.
Кроме того, можно использовать Send 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
, отправьте к конечной точке /
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}"
В случае успеха приложение получит объект 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 предоставьте свойства follow в основном тексте запроса в качестве объекта JSON. Для вложений из файла отправьте свойства как данные формы.
message
Property | Type | Description |
---|---|---|
| Object | An object describing attachments to the message. |
message.attachment
Свойство | Тип | Описание |
---|---|---|
| Строка | Тип вложения. Это может быть один из следующих типов:
|
| Объект | Объект |
message.attachment.payload
Свойство | Тип | Описание |
---|---|---|
| Строка | Необязательный параметр. URL файла для загрузки. Максимальный размер файла составляет 8 Мбайт для изображений и 25 Мбайт для всех остальных типов файлов (после кодирования). Таймаут установлен как 75 секунд для видеофайлов и 10 секунд для всех остальных типов файлов. |
| Логическое значение | Необязательный параметр, значение по умолчанию: false. Если вы выполняете загрузку и отправку в одном вызове API, не задавайте значение Задавайте значение true, только если вы выполняете загрузку и отправку по отдельности. Срок действия ID прикрепленных файлов составляет 90 дней. Через 90 дней загрузите медиафайл заново и получите новый ID. Срок действия повторно используемых прикрепленных файлов составляет 90 дней, после чего их нельзя переслать, однако прикрепленные файлы в цепочках сообщений не имеют срока действия и остаются видимыми до тех пор, пока пользователь не удалит это сообщение из цепочки. |
Код ошибки | Подкод | Сообщение |
---|---|---|
100 | 2018074 | Возможно, неверный ID или вы не являетесь владельцем вложения. |
100 | 2018008 | Не удалось получить файл из URL. Убедитесь, что используется верный URL с действительным сертификатом SSL, файл не превышает установленное значение, а сервер отвечает достаточно быстро во избежание превышения таймаутов. |
100 | 2018294 | Превышено установленное время загрузки видеофайла или видеофайл поврежден. Обратите внимание, что если видеофайл не был получен в течение 75 секунд, установленное время будет превышено. |
100 | 2018047 | Не удалось загрузить вложение. Частой причиной этой ошибки является то, что предоставленный тип медиаобъекта не соответствует типу файла, указанному в URL. |