You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

能否通过Meta Cloud API直接发送二进制缓冲区形式的WhatsApp图片消息?

关于Meta Cloud API发送WhatsApp图片消息的二进制缓冲区使用问题

Meta Cloud API(即WhatsApp Business Platform)不支持直接通过二进制缓冲区发送图片消息,必须遵循官方规定的两步流程:先将图片上传至Meta的媒体存储系统,获取媒体ID后,再通过该ID发送图片消息。

你之前使用的商业解决方案提供商(BSP)支持直接传二进制,是因为他们在后台帮你完成了上传媒体、获取ID的封装步骤,而Meta官方API要求开发者自行完成这个流程。

正确实现步骤

  1. 上传二进制图片到Meta媒体端点
    将图片缓冲区上传到Meta的/media接口,获取返回的媒体ID。
  2. 使用媒体ID发送图片消息
    构造消息请求时,通过媒体ID引用已上传的图片,而非直接传递二进制数据。

代码示例

上传媒体的代码(Node.js)

const axios = require('axios');
const FormData = require('form-data');

async function uploadMedia(imageBuffer, phoneNumberId, accessToken) {
  const formData = new FormData();
  formData.append('messaging_product', 'whatsapp');
  // 传入二进制缓冲区
  formData.append('file', imageBuffer, { filename: 'image.png', contentType: 'image/png' });
  formData.append('type', 'image/png');

  const response = await axios.post(
    `https://graph.facebook.com/v18.0/${phoneNumberId}/media`,
    formData,
    {
      headers: {
        ...formData.getHeaders(),
        Authorization: `Bearer ${accessToken}`
      }
    }
  );

  // 返回媒体ID
  return response.data.id;
}

发送图片消息的代码

async function sendImageMessage(mediaId, recipientPhone, phoneNumberId, accessToken) {
  await axios.post(
    `https://graph.facebook.com/v18.0/${phoneNumberId}/messages`,
    {
      messaging_product: 'whatsapp',
      recipient_type: 'individual',
      to: recipientPhone,
      type: 'image',
      image: { id: mediaId }
    },
    {
      headers: {
        'Content-Type': 'application/json',
        Authorization: `Bearer ${accessToken}`
      }
    }
  );
}

注意事项

  • 上传的媒体会在Meta的存储中保留30天,若需长期使用需自行存储并重新上传。
  • 确保请求携带的phoneNumberId和accessToken具备发送消息、上传媒体的权限。

内容的提问来源于stack exchange,提问作者Alexandre Scrocaro Junior

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.27 14:18:10