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

ВНИМАНИЕ! Срок действия 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.

Пример запроса для загрузки по 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, отправьте к конечной точке /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. Прикрепленные файлы в цепочках сообщений пользователя всегда конфиденциальны.

Пример запроса для загрузки по 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 предоставьте свойства 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

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

Необязательный параметр, значение по умолчанию: false. Если вы выполняете загрузку и отправку в одном вызове API, не задавайте значение true.

Задавайте значение true, только если вы выполняете загрузку и отправку по отдельности. Срок действия ID прикрепленных файлов составляет 90 дней. Через 90 дней загрузите медиафайл заново и получите новый ID.

Срок действия повторно используемых прикрепленных файлов составляет 90 дней, после чего их нельзя переслать, однако прикрепленные файлы в цепочках сообщений не имеют срока действия и остаются видимыми до тех пор, пока пользователь не удалит это сообщение из цепочки.

Коды ошибок

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

100

2018074

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

100

2018008

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

100

2018294

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

100

2018047

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