根据documentation,在 facebook messenger(Send) API 上发送附件有三种方式。
似乎不支持将附件作为 Base64 编码数据发送,最接近的方法是将 base64 编码数据转换为服务器上的文件,然后使用(来自文件的附件)从服务器上传facebook 提供的选项。
发送附件
Messenger 平台允许您将资产附加到消息中,包括音频、视频、图像和文件。最大附件大小为 25 MB。图像的最大分辨率为 85 兆像素。可以通过三种方式将资产附加到消息:
- 网址
- 文件
- attachment_id
附件类型
附件类型
Messenger 平台支持以下附件类型,在消息的 attachment.type 属性中指定:
- 音频
- 视频
- 图片
- 文件
- 模板。有关此类型的详细信息,请参阅模板
1。从 URL 附加
要从 URL 发送附件,请向发送 API 提交 POST 请求,并在请求正文中设置 message.attachment。附件对象包括资产类型(图像、音频、视频或文件),以及包含资产 url 的有效负载:
curl -X POST -H "Content-Type: application/json" -d '{
"recipient":{
"id":"1254459154682919"
},
"message":{
"attachment":{
"type":"image",
"payload":{
"url":"http://www.messenger-rocks.com/image.jpg",
"is_reusable":true
}
}
}
}' "https://graph.facebook.com/v8.0/me/messages?access_token=<PAGE_ACCESS_TOKEN>"
2。从文件附加
要从文件发送附件,请向发送 API 提交一个 POST 请求,其中包含作为表单数据的消息详细信息,并包含以下字段:
收件人:标识消息收件人的 JSON 对象。
message:描述消息的 JSON 对象。包括资产类型和有效负载。有效负载要么为空,要么设置 is_reusable 属性。
filedata:资产在文件系统上的位置和 MIME 类型。
curl \
-F 'recipient={"id":"<PSID>"}' \
-F 'message={"attachment":{"type":"<ASSET_TYPE>", "payload":{"is_reusable":true}}}' \
-F 'filedata=@/tmp/shirt.png;type=image/png' \
"https://graph.facebook.com/v8.0/me/messages?access_token=<PAGE_ACCESS_TOKEN>"
3。附加保存的资产
Messenger 平台支持通过发送 API 和附件上传 API 保存资产。这允许您重复使用资产,而不是每次需要时都上传它们。有关保存资产的信息,请参阅保存资产。
要将已保存的资产附加到消息,请在消息请求的 payload.attachment_id 属性中指定资产的 attachment_id:
curl -X POST -H "Content-Type: application/json" -d '{
"recipient":{
"id":"1254459154682919"
},
"message":{
"attachment":{
"type":"image",
"payload":{
"attachment_id": "1745504518999123"
}
}
}
}' "https://graph.facebook.com/v8.0/me/messages?access_token=<PAGE_ACCESS_TOKEN>"