Этот документ обновлен.
Перевод (Русский) еще не готов.
Последнее обновление (английский): 15 дек 2023 г.

Справка по Attachment Upload API

Attachment Upload API позволяет загружать объекты, которые позднее можно отправлять в сообщениях. Благодаря этому вам не нужно загружать часто используемые файлы несколько раз. Этот API поддерживает сохранение объектов из URL и из локальной файловой системы.

Кроме того, можно использовать Send API, чтобы одновременно отправлять сообщение с вложением и сохранять вложения для использования в будущем. Дополнительную информацию см. в статье Справка по Send API.

Загрузка вложения

Чтобы загрузить вложение, отправьте к конечной точке /Your-page-id/message_attachment запрос POST с объектом message.attachment и свойствами type и payload. Чтобы этот объект можно было использовать в нескольких сообщениях, задайте для свойства payload.is_reusable значение true.

Пример запроса для загрузки по URL

Для удобства чтения применено форматирование. Замените выделенный жирным шрифтом и курсивом текст, например page_access_token, собственными значениями.

curl -X POST "https://graph.facebook.com/v19.0/Your-page-id/message_attachment" \
     -H "Content-Type: application/json" \
     -d '{
           "access_token":"Your_page_access_token",
           "message":{
             "attachment":{
               "type":"image", 
               "payload":{
                 "url":"https.your-url.com/image.jp",
                 "is_reusable": true
               }
             }
           }
         }'

Пример запроса для загрузки из файла

Для удобства чтения применено форматирование. Замените выделенный жирным шрифтом и курсивом текст, например page_access_token, собственными значениями.

curl -X POST "https://graph.facebook.com/v19.0/Your-page-id/message_attachment" \
     -H "Content-Type: application/json" \
     -d '{
           "access_token":"Your_page_access_token",
           "message":{
             "attachment":{
               "type":"image"
             }
           },
           "filedata":"@/path-to-your-file/image.png";"type":"image/png"
         }'

В случае успеха приложение получит объект 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 "https://graph.facebook.com/v19.0/Your-page-id/messages" \
     -H "Content-Type: application/json" \
     -d '{
           "access_token":"Your_page_access_token",
           "message":{
             "attachment":{
               "type":"image",
               "payload":{
                 "attachment_id":"Your-attachment-ID"
               }
             }
           }
         }'

В случае успеха приложение получит объект JSON, в котором для параметра success установлено значение true.

{"success": "true"}

Свойства

Для вложений из URL предоставьте свойства follow в основном тексте запроса в качестве объекта 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

Строка

Тип вложения. Это может быть один из следующих типов:

  • image;
  • video;
  • audio;
  • file.

payload

Объект

Объект payload, который описывает вложение.

message.attachment.payload

Свойство Тип Описание

url

Строка

Необязательный параметр. URL файла для загрузки. Максимальный размер файла составляет 8 Мбайт для изображений и 25 Мбайт для всех остальных типов файлов (после кодирования). Таймаут установлен как 75 секунд для видеофайлов и 10 секунд для всех остальных типов файлов.

is_reusable

Логическое значение

Необязательный параметр. Укажите true, чтобы сохраненный объект можно было отправлять другим получателям сообщений. Значение по умолчанию — false.

Коды ошибок

Код ошибкиПодкодСообщение

100

2018074

Возможно, неверный ID или вы не являетесь владельцем вложения.

100

2018008

Не удалось получить файл из URL. Убедитесь, что используется верный URL с действительным сертификатом SSL, файл не превышает установленное значение, а сервер отвечает достаточно быстро во избежание превышения таймаутов.

100

2018294

Превышено установленное время загрузки видеофайла или видеофайл поврежден. Обратите внимание, что если видеофайл не был получен в течение 75 секунд, установленное время будет превышено.

100

2018047

Не удалось загрузить вложение. Частой причиной этой ошибки является то, что предоставленный тип медиаобъекта не соответствует типу файла, указанному в URL.