Referência da API de Carregamento de Anexos

AVISO: os IDs de anexo expiram após 90 dias. Depois que o ID de anexo expirar, será necessário recarregar a mídia para obter um novo.

Embora os anexos reutilizáveis expirem após 90 dias e não possam ser reenviados, os anexos nas conversas nunca expiram e ficam visíveis até que o usuário exclua a mensagem. Se o caso de uso permitir, será possível combinar as etapas de carregamento e envio conforme mencionado abaixo para evitar o problema de TTL.

A API de Carregamento de Anexos permite carregar ativos que podem ser enviados em mensagens em outro momento. Ela ajuda a evitar o carregamento desnecessário e frequente de arquivos muito utilizados. Essa API oferece suporte para salvar ativos a partir de uma URL ou um sistema de arquivos local.

Também é possível usar a Send API para enviar uma mensagem com um anexo e simultaneamente salvá-lo para uso posterior. Para ver mais informações, consulte a seção Carregar e enviar abaixo.

Carregar um anexo

Para carregar um anexo, envie uma solicitação POST ao ponto de extremidade /Your-page-id/message_attachment com message.attachment incluindo type e payload. Se quiser usar o ativo em várias mensagens, defina payload.is_reusable como true.

Exemplo de solicitação para carregar de uma URL

Texto formatado para facilitar a leitura. Substitua os valores em negrito e itálico (como page_access_token) pelos seus valores.

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
               }
             }
           }
         }'

Exemplo de solicitação para carregar de um arquivo

Texto formatado para facilitar a leitura. Substitua os valores em negrito e itálico (como page_access_token) pelos seus valores.

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}"

Caso a solicitação seja bem-sucedida, o app receberá um objeto JSON com attachment_id definido como o ID do anexo a ser usado nas suas mensagens.

{"attachment_id": "Your-attachment-ID"}

Enviar uma mensagem com um ativo carregado

Para enviar uma mensagem com um ativo que já foi carregado, carregue-o com message.attachment.payload.is_reusable definido como true, envie uma solicitação POST ao ponto de extremidade /Your-page-id/messages com recipient.id, além do objeto message.attachment com type e payload.attachment_id.

Exemplo de solicitação para carregar de um arquivo

Texto formatado para facilitar a leitura. Substitua os valores em negrito e itálico (como page_access_token) pelos seus valores.

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}"

Caso seja bem-sucedida, o app receberá um objeto JSON com success definido como true.

{"success": "true"}

Carregar e enviar

Também é possível carregar e enviar a mídia em uma solicitação única de API.

AVISO:não defina is_public=true na carga nesse caso. Os anexos na conversa com usuário são sempre privados.

Exemplo de solicitação para carregar de uma URL

Texto formatado para facilitar a leitura. Substitua os valores em negrito e itálico (como page_access_token) pelos seus valores.

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}"

Caso seja bem-sucedida, o app receberá um objeto JSON com success definido como true.

{"success": "true"}

Propriedades

Para anexos com origem em URLs, forneça as propriedades a seguir no corpo da solicitação como um objeto JSON. Para anexos com origem em arquivos, envie as propriedades como dados de formulário.

message

Description of the message to be sent.
Property Type Description

message.attachment

Object

An object describing attachments to the message.

message.attachment

Propriedade Tipo Descrição

type

String

O tipo do anexo. Deve ser um destes:

  • image
  • video
  • audio
  • file

payload

Objeto

O objeto payload que descreve o anexo.

message.attachment.payload

Propriedade Tipo Descrição

url

String

Opcional. A URL do arquivo a ser carregado. O tamanho máximo de arquivo é 8 MB para imagens e 25 MB para outros tipos de arquivo (após codificação). Estabelecemos o tempo-limite de 75 segundos para vídeos e 10 segundos para outros tipos de arquivo.

is_reusable

Booleano

Opcional, definido como false por padrão. Se você carregar e enviar uma chamada de API, não defina como true.

Defina como true somente ao carregar e enviar em etapas separadas. Os IDs de anexo expiram após 90 dias. Após 90 dias, carregue novamente a mídia para obter um novo ID de anexo.

Embora os anexos reutilizáveis expirem após 90 dias e não possam ser reenviados, os anexos nas conversas nunca expiram e ficam visíveis até que o usuário exclua a mensagem.

Códigos de erro

Código de erroSubcódigoMensagem

100

2018074

O ID pode ser inválido ou o anexo não é sua propriedade.

100

2018008

Erro ao obter o arquivo da URL. Verifique se a URL está funcionando e tem um certificado SSL válido, se o tamanho do arquivo é compatível e se o servidor está respondendo com rapidez para evitar o tempo-limite.

100

2018294

O carregamento do vídeo atingiu o tempo-limite ou o vídeo está corrompido. Caso não seja obtido em até 75 segundos, ele atingirá o tempo-limite.

100

2018047

Erro ao carregar o anexo. Isso acontece quando o tipo de mídia não corresponde ao tipo de arquivo fornecido na URL.