文档已更新。
中文(简体) 译文尚未完成。
英语更新时间:2023年10月8日

附件上传 API 参考文档

使用附件上传 API,可以上传以后可通过消息发送的资产。这样,可避免多次上传常用文件。此 API 支持从网址和本地文件系统中保存资产。

此外,还可使用 Send API 同时发送带附件的消息和保存附件,以供日后使用。如需了解更多信息,请参阅 Send API 参考文档

上传附件

如要上传附件,请向 /Your-page-id/message_attachment 端点发送 POST 请求,并在请求中加入包含 typepayloadmessage.attachment。如要在多条消息中使用此资产,请将 payload.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", 
               "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,而且该参数已设为要在消息中使用的附件的编号。

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

发送包含已上传资产的消息

如要发送包含之前已上传的资产(上传时将 message.attachment.payload.is_reusable 设为 true)的消息,请向 /Your-page-id/messages 端点发送 POST 请求,并在请求中加入 recipient.id 以及包含 typepayload.attachment_idmessage.attachment 对象。

上传来自文件的附件的请求示例

为方便阅读,示例格式已经过调整。将粗体斜体值(如 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"}

属性

对于网址中的附件,请在请求正文中提供以下属性作为 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

字符串

附件的类型。必须是以下其中一种类型:

  • 图片
  • 视频
  • 音频
  • 文件

payload

对象

payload 对象,用于描述附件。

message.attachment.payload

属性 类型 描述

url

字符串

可选。要上传文件的网址。图片的文件大小不得超过 8MB,其他所有文件类型(编码后)的文件大小不得超过 25MB。视频的超时设置为 75 秒,其他所有文件类型的超时设置为 10 秒。

is_reusable

布尔值

可选。如果设置为 true,可将已保存的资产发送给其他消息收信人。默认值为 false

错误代码

错误代码子代码消息

100

2018074

编号可能无效,或者此附件不归您个人所有。

100

2018008

从网址获取文件失败。请检查网址是否有效,SSL 证书是否有效,文件大小是否有效,以及服务器的响应速度是否很快,足以避免超时。

100

2018294

视频上传超时或视频已损坏。请注意,如果在 75 秒内无法获取视频,则会超时

100

2018047

上传附件失败。通常,触发此错误的原因是提供的素材类型与网址中所提供文件的类型不一致