我尝试通过Send API在本地发送图片,但使用以下结构没有运气:
此上下文中的dataUrl是通过Canvas生成的base64编码数据URL。
const body = JSON.stringify({
recipient: { id },
message: {
attachment: {
type: 'image',
payload: {}
}
},
filedata: dataUrl
});
答案 0 :(得分:0)
按照documentation,有三种方法可以在facebook messenger(Send)API上发送附件。
似乎不支持将附件作为Base64编码的数据发送,完成此操作的最接近的方法是将base64编码的数据转换为服务器上的文件,然后使用(来自文件的附件)从服务器上载该文件。由Facebook提供的选项。
Messenger平台允许您将资产附加到消息,包括音频,视频,图像和文件。最大附件大小为25 MB。图像的最大分辨率为85兆像素。有三种方法可以将资产附加到消息中:
- URL
- 文件
- attachment_id
附件类型 Messenger平台支持以下附件类型,这些附件类型在邮件的attachment.type属性中指定:
- 音频
- 视频
- 图片
- 文件
- 模板。有关此类型的更多信息,请参见模板
要从URL发送附件,请将POST请求提交到Send API,并在请求正文中设置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>"
要从文件发送附件,请向Send 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>"
Messenger平台支持通过Send API和Attachment Upload API保存资产。这使您可以重用资产,而不是在每次需要时都上载它们。有关保存资产的信息,请参阅保存资产。 要将已保存的资产附加到消息,请在消息请求的有效负载.attachment_id属性中指定资产的附件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>"