Facebook Messenger 平台发送本地图片附件

Posted

技术标签:

【中文标题】Facebook Messenger 平台发送本地图片附件【英文标题】:Facebook Messenger Platform Send Local Image Attachment 【发布时间】:2016-11-16 19:43:23 【问题描述】:

我正在尝试通过 Send API 在本地发送图像,但使用以下结构没有任何运气:

此上下文中的dataUrl 是通过Canvas 生成的base64 编码数据URL。

const body = JSON.stringify(
   recipient:  id ,
   message: 
      attachment: 
         type: 'image',
         payload: 
      
   ,
   filedata: dataUrl
);

【问题讨论】:

您好,您解决了这个问题吗?我现在遇到同样的问题,无法解决。 【参考方案1】:

根据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>"

【讨论】:

以上是关于Facebook Messenger 平台发送本地图片附件的主要内容,如果未能解决你的问题,请参考以下文章

是否有事件或其他方式来处理用户在 Facebook Messenger 平台上向机器人发送的第一条消息?

安卓。通过 Facebook SDK 4.X 向 facebook messenger 发送文本

如何离线测试 Messenger Bots?本地网络挂钩

如何在按钮单击时将用户发送到 Facebook 页面(Facebook Messenger)

Facebook Messenger 聊天机器人显示“检查您的连接并重试”。

从我的移动网站使用 Facebook Messenger 发送 URL