メディア

/v1/media

メディアのアップロード、取得、削除を行うには、mediaノードを使用します。

エッジ

このノードには次のエッジが接続されています。

エッジ説明

/{media-id}

メディアを取得および削除するにはこのエッジを使います。

開始する前に

メディアメッセージが送信されると、メディアはWhatsAppサーバーに14日間保存されます。14日を過ぎてからユーザーがメディアのダウンロードをリクエストした場合、WhatsAppサーバーは、同じメディアファイルをWhatsApp Businessオンプレミスクライアントにリクエストします。メディアが削除されている場合、そのメディアを利用できないことがユーザーに通知されます。

配信と読み取りの受信通知のみに基づいてメディアがダウンロードされたと想定するのは危険です。一般的には、送信から30日経過したメディアは削除しても安全ですが、ビジネスに最適な戦略を取るようにしてください。

制約

  • メディアURLにリンクするのではなく、メディアをアップロードするプロセスを使う場合は、ファイルをメディアボリュームにアップロードする必要があります。アップロードが完了したら、メディアIDを使用してメッセージを送信できます。
  • アプリは、アップロードするメディアをサーバーに送信する前に加工します。mediaノードにアップロードできるメディアの最大ファイルサイズは100MBですが、下記の加工後のメディアサイズの表に示されているように、各種のメディアタイプに対して加工後の制限があります。
  • メディアストレージは事業者が処理する必要があります。メディアボリュームが一杯になると、それ以降のメッセージ送信は失敗します。
  • 次の操作はサポートされていません。
    • バイトストリームでメディアを送信する。
    • アニメーション化されたスタンプでメッセージを送信する。

アップロード

メディアをアップロードするには、/v1/mediaPOSTリクエストを送信します。オンプレミスリクエストの本文にはバイナリメディアデータが含まれていなくてはなりません。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

16MB

document

100MB

image

5MB

sticker

100KB

video

16MB

よくある質問

画像には、説明としてキャプションが追加されます。AndroidとiPhoneのどちらの画像も、キャプションテキストは実際の長さで表示されます。

ドキュメントの場合、キャプションはファイル名に置き換わります。これは、ユーザーのデバイスに説明テキストとして表示されることを意図しておらず、代わりにファイルの名前を示しています。iPhoneの場合は実際のテキストの長さで表示されますが、Androidはファイル名が短縮されて表示されます。これは、両方のデバイス上のWhatsAppにおける現在の実装の技術的な制限です。

メディアの削除のタイミングは各ビジネス次第です。

メディアをアップロードするとメディアIDを受け取りますが、これを使用してアップロードしたメディア要素を含むメッセージを送信することができます。メディアメッセージを送信すると、WhatsApp Business APIがメディアを暗号化してから WhatsAppサーバーにアップロードし、メディアはそこに14日間保持されます。その後、各ビジネスはメディアIDを指定してメディアを削除するか、後の使用のために保持するかを判断できます。メディアを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. 日付ヘッダー - 配信の合間の新しい日付

いいえ。現在のところ、CoreappとWebappの間でメディアボリュームを共有するには、AWS EFSを使用する必要があります。

最大ファイルアップロードサイズは64MBです。この制限はメッセージで送信される画像、ドキュメント、ビデオにも適用されます。