Webhooksを利用すると、特定のオブジェクトに加えられる変更に関するHTTP通知をリアルタイムで受け取ることができます。例えば、ユーザーからメッセージが届いたときや、メッセージテンプレートのステータスが変更されたときに通知を受け取ることができます。こうした通知により、実際に起きているかどうか曖昧なオブジェクトへの変更をAPIでクエリする必要がなくなり、レート制限に達することを防止できます。
このドキュメントでは、Webhooksの概要を紹介します。この内容は、WhatsApp Business管理API、WhatsApp BusinessプラットフォームクラウドAPI、WhatsApp BusinessプラットフォームオンプレミスAPIに適用されます。
APIには複数のオブジェクトタイプがあります。そのため、Webhookを構成する際には必ず、最初にオブジェクトタイプを選択します。オブジェクトごとに使えるフィールドが異なるので、次にそのオブジェクトタイプの特定のフィールドをサブスクリプション登録します。サブスクリプション登録しているいずれかのオブジェクトフィールドで値に変更が加えられた場合は、必ず通知が届きます。
通知はHTTP POSTリクエストとして届き、その中に変更について説明しているJSONペイロードが含まれています。
次の表では、Webhooksから受け取ることができる情報を概説しています。
API | オブジェクト |
---|---|
クラウドAPI |
|
オンプレミスAPI |
|
WhatsApp Business管理API |
|
以下は、ユーザーからテキストメッセージが届いたときに送られるWebhooks通知を表す例です。
クラウドAPIでは、オブジェクトは常にwhatsapp_business_account
になりますが、field
は送信されている情報のタイプを表すものになります。
{ "object": "whatsapp_business_account", "entry": [{ "id": "WHATSAPP_BUSINESS_ACCOUNT_ID", "changes": [{ "value": { "messaging_product": "whatsapp", "metadata": { "display_phone_number": PHONE_NUMBER, "phone_number_id": PHONE_NUMBER_ID }, "contacts": [{ "profile": { "name": "NAME" }, "wa_id": PHONE_NUMBER }], "messages": [{ "from": PHONE_NUMBER, "id": "wamid.ID", "timestamp": TIMESTAMP, "text": { "body": "MESSAGE_BODY" }, "type": "text" }] }, "field": "messages" }] }] }
オンプレミスAPIでは、MetaではなくクライアントがWebhookを送信しているので、オブジェクトはcontacts
とmessages
、errors
、またはstatuses
とpricing
になります。
{ "contacts": [{ "profile": { "name": "NAME" }, "wa_id": "WHATSAPP_BUSINESS_ACCOUNT_ID" }], "messages":[{ "from": "PHONE_NUMBER", "id": "wamid.ID", "timestamp": "TIMESTAMP", "text": { "body": "MESSAGE_BODY" }, "type": "text" }] }
すべてのWebhooksはHTTPSを使用して送信されるので、ご使用のサーバーはHTTPSリクエストを受信して処理できなければなりません。また、有効なTLS/SSL証明書もインストールされている必要があります。自己署名証明書はサポートされていません。
特定のAPI用のWebhooksの詳細については、以下をご覧ください。