媒体

/v1/media

使用 media 节点上传、检索或删除媒体。

连线

以下连线会连接至此节点:

连线描述

/{media-id}

使用此连线检索和删除媒体。

准备工作

在您发送媒体消息后,该媒体会在 WhatsApp 服务器上存储 14 天。如果用户在 14 天后请求下载该媒体,WhatsApp 服务器会向 WhatsApp Business 本地客户端请求相同的媒体文件。如果该媒体已被移除,则系统会通知用户无法获取该媒体。

仅凭已发送和已读回执假定用户已下载媒体并非安全做法。通常,在 30 天后移除传出媒体比较保险,但您应该采用最适合您企业的策略。

限制

  • 如果您使用媒体上传流程而不是链接到媒体网址,则必须将文件上传至媒体。上传完成后,您可以使用媒体编号发送消息。
  • 应用程序会先处理已上传的媒体,之后再将其发送到服务器。上传至 media 节点的媒体文件大小上限为 100 MB,但下方处理后的媒体大小表格中还列出了各种媒体类型的处理后大小限制。
  • 媒体存储需由企业处理。如果媒体卷已满,则您将无法发送消息。
  • 不支持:
    • 通过字节流发送媒体。
    • 发送附带动画贴纸的消息。

上传

/v1/media 发送 POST 请求,以上传媒体。本地请求的正文必须包含二进制媒体数据,并且必须将 Content-Type 标头设置为待上传媒体的类型。请参阅支持的内容类型部分,了解支持的选项。

上传二进制数据的标准方法是在 POST HTTP 请求中发送二进制数据。例如,如果您想上传图像,则可以在负载中加入实际图像的字节,然后发出 POST 请求。或者,如果您希望 cURL 按照给定的二进制形式读取和使用给定文件,则可以使用 --data-binary

示例

上传媒体:

POST /v1/media
Content-Type: image/jpeg or other appropriate media type

your-binary-media-data

使用 cURL 上传媒体:

curl -X POST \
https://your-webapp-hostname:your-webapp-port/v1/media \
-H 'Authorization: Bearer your-auth-token' \ 
-H 'Content-Type: image/jpeg'  \ # or other appropriate media type
--data-binary @your-file-path

在这两种情况下,如果请求成功,响应都会返回 id 字段,您在检索媒体或向客户发送媒体消息时将需要用到该字段。

{
    "media": [
        {
            "id": "f043afd0-f0ae-4b9c-ab3d-696fb4c8cd68"
        }
    ]
}

如果收到错误消息,请参阅错误和状态消息以了解更多信息。

支持的内容类型

媒体 支持的内容类型

audio

audio/aacaudio/mp4audio/amraudio/mpeg
audio/ogg; codecs=opus


注意:对于 ogg/opus,WA 客户端仅支持单声道音频文件。

document

任何有效的 MIME 类型。

image

image/jpegimage/png


目前,我们不支持背景透明的图像。

sticker

image/webp

video

video/mp4video/3gpp


注意:

  • 仅支持 H.264 视频编解码器和 AAC 音频编解码器。
  • 支持包含单个音频流或不含音频流的视频。

处理后的媒体大小

这是经过压缩加密后所允许的媒体文件大小上限。

媒体类型 大小

audio

16 MB

document

100 MB

image

5 MB

sticker

100 KB

video

16 MB

常见问题

如果是图片,则您可将说明文字添加为图片描述。在 Android 和 iPhone 手机上,系统均可显示图片说明文字的完整文本。

如果是文档,则说明文字会取代文件名。系统不会在用户设备上将其显示为描述文本,而是会将其显示为文件名称。iPhone 手机会显示全部文本,而 Android 手机会截取文件名称,这是当前 WhatsApp 在这两种设备上的实现所受到的技术限制所致。

删除多媒体素材的时间由您决定。

上传多媒体素材后,您将收到一个多媒体素材编号,您可以使用此编号发送包含已上传多媒体素材元素的消息。发送多媒体素材消息后,WhatsApp Business API 会将多媒体素材解码并上传至 WhatsApp 服务器,该素材会在服务器中留存 14 天。此时,您可以决定是要提供多媒体素材编号以删除该素材,还是保留素材,以备日后使用。您可以根据贵公司的政策或用例自行决定多媒体素材的保留时间,我们的建议是保留 30 天。

我们并未针对出站或入站的多媒体素材设置清理机制。您可在文件系统中找到这些多媒体素材文件,然后将其手动删除。

如要寻找多媒体素材的挂载点,则可运行 Docker 命令。

请求

docker volume inspect whatsappMedia

响应

[
    {
        "Driver": "local",
        "Labels": {},
        "Mountpoint": "/var/lib/docker/volumes/whatsappMedia/_data",
        "Name": "whatsappMedia",
        "Options": {},
        "Scope": "local"
    }
]

然后,您可在已接收的 Mountpoint 文件路径中运行 ls 命令,以查看全部入站多媒体素材文件:

ls /var/lib/docker/volumes/whatsappMedia/_data/

如要设置 AWS,您可将多媒体素材卷挂载到主机上的 /mnt/wa/media 路径中。

以相册的形式从 WhatsApp Business API 中发送图片时,您需要至少连续发送 4 张图片。如果在接收图片时,用户的对话视图正处于活动状态,则在下次访问时才可使用相册视图。

如果符合以下任何条件,则无法创建相册:

  1. 图片包含说明文字
  2. 存在未读分隔符 - 用户查看了部分图片,但并未查看剩余图片
  3. 日期标头不一致 - 存在跨天的消息传送

没有,目前我们必须使用 AWS EFS 才能在核心应用和网页应用之间共享媒体卷。

上传文件大小不能超过 64 MB,也就是说,此限制同样适用于随消息一起发送的任何图片、文档或视频。