ADVERTENCIA: Los identificadores del adjunto caducan después de 90 días. Después de que un identificador del adjunto caduque, tendrás que volver a subir tus archivos multimedia para obtener un identificador nuevo.
Aunque los adjuntos que se pueden volver a usar caducan después de 90 días y no se pueden volver a enviar, los de las cadenas de mensajes no caducan y son visibles hasta que un usuario borra el mensaje de la cadena. Si existe la posibilidad en tu caso de uso, puedes combinar los pasos de subida y envío, como mencionamos a continuación, para evitar este problema de TTL.
La API de subida de archivos adjuntos te permite cargar activos que se pueden enviar en mensajes posteriores. De esta manera, no será necesario que cargues varias veces los archivos que se utilizan con frecuencia. La API admite que se guarden activos de la URL y del sistema de archivos local.
También puedes usar la API de envío para enviar de manera simultánea un mensaje con un archivo adjunto y guardarlo para utilizarlo más adelante. Para obtener más información, consulta la sección Subir y enviar, a continuación.
Para cargar un archivo adjunto, envía una solicitud POST
al punto de conexión /
Your-page-id
/message_attachment
con message.attachment
con type
y payload
. Para poder usar el recurso en varios mensajes, configura payload.is_reusable
en true
.
El formato se modificó para facilitar la lectura. Reemplaza los valores en negrita y cursiva, como page_access_token, por tus 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
}
}
}
}'
El formato se modificó para facilitar la lectura. Reemplaza los valores en negrita y cursiva, como page_access_token, por tus 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}"
Si la operación se completa con éxito, la app recibirá un objeto JSON con attachment_id
configurado en el identificador del archivo adjunto que se usará en los mensajes.
{"attachment_id": "Your-attachment-ID"}
Para enviar un mensaje con un recurso que subiste previamente, subido con message.attachment.payload.is_reusable
configurado en true
, envía una solicitud POST
al punto de conexión /
Your-page-id
/messages
con recipient.id
, y el objeto message.attachment
con type
y payload.attachment_id
.
El formato se modificó para facilitar la lectura. Reemplaza los valores en negrita y cursiva, como page_access_token, por tus 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}"
Si la operación se realiza con éxito, la app recibirá un objeto JSON con success
configurado para configurar en true
.
{"success": "true"}
También puedes subir archivos multimedia y enviarlos en una única solicitud de la API.
ADVERTENCIA: En este caso,no configures is_public=true
en la carga útil. Los adjuntos en la cadena de mensajes del usuario siempre son privados.
El formato se modificó para facilitar la lectura. Reemplaza los valores en negrita y cursiva, como page_access_token, por tus 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}"
Si la operación se realiza con éxito, la app recibirá un objeto JSON con success
configurado para configurar en true
.
{"success": "true"}
En el caso de archivos adjuntos de una URL, proporciona las propiedades del proceso en el cuerpo de la solicitud como objeto JSON. En el caso de los archivos adjuntos de un archivo, envía las propiedades como datos.
message
Property | Type | Description |
---|---|---|
| Object | An object describing attachments to the message. |
message.attachment
Propiedad | Tipo | Descripción |
---|---|---|
| Cadena | El tipo de adjunto. Debe ser alguno de los siguientes:
|
| Objeto | El objeto |
message.attachment.payload
Propiedad | Tipo | Descripción |
---|---|---|
| Cadena | Opcional. URL del archivo que se debe cargar. El tamaño máximo de archivo es 8 MB en el caso de las imágenes, y de 25 MB, para todos los demás tipos de archivos (después de la codificación). Los videos tienen un tiempo de espera de 75 segundos; los demás tipos de archivos, de 10 segundos. |
| Booleano | Opcional, el valor predeterminado es falso.No lo configures en Configúralo en verdadero solo cuando realices la subida y el envío en pasos separados. Los identificadores del adjunto caducan después de 90 días. Para obtener un nuevo identificador del adjunto, vuelve a subir tu contenido multimedia una vez pasados los 90 días. Aunque los adjuntos que se pueden volver a usar caducan después de 90 días y no se pueden volver a enviar, los de las cadenas de mensajes no caducan y son visibles hasta que un usuario borre el mensaje de la cadena. |
Código de error | Subcódigo | Mensaje |
---|---|---|
100 | 2018074 | Posible identificador no válido o no posees el archivo adjunto. |
100 | 2018008 | Error al obtener el archivo de la URL. Verifica que la URL sea válida, cuente con un certificado SSL y un tamaño de archivo válidos, y que el servidor responde lo suficientemente rápido para evitar exceder los tiempos de espera. |
100 | 2018294 | La carga del video excedió el tiempo de espera o está corrupto. Ten en cuenta, si no se obtiene el video dentro de 75 segundos, se excederá el tiempo de espera. |
100 | 2018047 | Error en la carga del archivo adjunto. Una forma común de activar este error es que el tipo de contenido multimedia proporcionado no coincida con el tiempo de archivo que se proporcionó en la URL. |