/v1/contacts
contacts
ノードを使用して、メッセージ送信前にユーザーを検証することによりデータベース内のWhatsAppユーザーを管理し、IDハッシュでユーザーのIDを認証します。
contacts
ノードを使用して、次のことを実行できます。
status
がvalid
であることを確認する必要があります。 v2.39.1以降のバージョンでは、先にcontacts
ノードを使ってWhatsApp IDに変換しなくても、電話番号で直接messages
ノードを使えるようになりました。
v2.43以降のバージョンでは、contacts
ノードで電話番号のステータス情報が提供されなくなりました。利用者がWhatsAppを保持しているかどうかに関わらず、応答では常にvalid
のstatus
、およびwa_id
が返されます。
カスタマーに、WhatsAppでのビジネスとのコミュニケーションをオプトインするオプションを提示する必要があります。オプトインフローは各ビジネスが管理します。カスタマーがオプトインしたら、contacts
ノードを使用して、登録された番号を検証します。詳しくは、WhatsAppでオプトインを取得する方法をご覧ください。
事業者がこのエンドポイントを不正使用している場合、以下の措置が取られます。
メッセージの送信前に連絡先をチェックすることをおすすめします。ただし、カスタマーからの着信メッセージに返信するときは、提供されたwa_id
を指定してすぐに返信できるので、連絡先のチェックは不要です。結果はキャッシュされるので、追加費用は発生しません。
オプトインしたユーザーにメッセージを送る前に、POST
リクエストを/v1/contacts
エンドポイントに送り、WhatsAppアカウントのユーザー検証リクエストを作成します。呼び出しに、検証する電話番号のリストを含めます。
POST /v1/contacts { "blocking": "wait" | "no_wait", "contacts": [ "16315551000", "+1 631 555 1001", "6315551002", "+1 (631) 555-1004", "1-631-555-1005" ], "force_check": false | true }
リクエストした番号の現在のstatus
と、そのWhatsApp ID (wa_id
)が応答で返されます。
{ "contacts": [ { "wa_id": "16315551000", "input": "16315551000", "status": "valid" }, { "wa_id": "16315551001", "input": "+1 631 555 1001", "status": "processing" # Only applicable when request is non-blocking }, { "input": "6315551002", "status": "invalid" }, { "input": "+163155588", "status": "failed" } }
返されたstatus
がvalid
だった番号のWhatsApp IDを保存します。有効なユーザーはWhatsAppアカウントを持っているユーザーです。これらのWhatsApp IDを使用して、メッセージとお知らせを送信します。
この手順を定期的に繰り返して、有効なユーザーのリストを管理します。結果はWhatsApp BusinessオンプレミスAPIクライアントのデータベースに7日間キャッシュされます。
/v1/contacts
へのPOST
呼び出しでは、次のパラメーターがサポートされています。
名前 | 説明 |
---|---|
| 任意。 リクエストが応答を返す前に、処理が終わるのを待つかどうかを指定します。詳しくは、下記のブロッキングセクションをご覧ください。 可能な値: |
| 必須。 検証する電話番号の配列。 番号は、標準的な電話番号形式で指定できます。連絡先電話番号の推奨形式は、プラス記号( |
| 任意。 連絡先のキャッシュをチェックするかしないかを指定します。連絡先情報は普通、7日間キャッシュに入れられます。 可能な値: |
このノードには次のエッジが接続されています。
エッジ | 説明 |
---|---|
このエッジを使用して、ユーザーのIDを管理します。詳しくは、WhatsApp BusinessのID変更について理解するをご覧ください。 |
blocking
パラメーターには、no_wait
とwait
の2つのオプションがあります。blocking
パラメーターが呼び出しで指定されていない場合は、デフォルトのno_wait
になります。
blocking
パラメーターによって、リクエストが処理の完了を待機するか(同期)待機しないか(非同期)が決まります。
設定 | 説明 |
---|---|
| 電話番号の処理が非同期で行われます。 応答に、
|
| 番号の処理は同期的に行われます。サーバーとの同期後に、すべての連絡先の最終的なステータスがわかります。この設定にすると、クエリブロックはすべての番号がチェックされるまで待ってから結果を返します。これには時間がかかることがあります。 |
contacts
リクエストで使う電話番号は、ダイヤルできる形式であればどんな形式でも構いません。
電話番号の頭にプラス記号(+
)がない場合、自分のWhatsApp BusinessオンプレミスAPIクライアントが登録されている電話番号を使って国番号が判別されます。そのため、別の国番号に関連付けられている電話番号は失敗します。
推奨されるベストプラクティスは、常に電話番号に国番号を指定し、プレフィックスのプラス記号(+
)を付けることです。
+
の後の番号が無効な場合でも、国番号が使用される可能性があります。予測可能な動作を得るには、オンプレミスAPIを使用する前に電話番号を検証することをおすすめします。
例として、WhatsApp BusinessオンプレミスAPIクライアントがインドの電話番号(国番号は+91
)で登録されている場合は次のようになります。
電話番号 | 変換後の電話番号 |
---|---|
|
|
|
|
|
|
|
|
|
|
contacts
応答のペイロードには、リクエストで送信したものと同じ電話番号の配列と、input
、status
、wa_id
プロパティが含まれます。
名前 | 説明 |
---|---|
| リクエストの |
v2.41以下 | ユーザーのステータス 可能な値:
|
v2.43以上 | ユーザーのステータス 可能な値:
|
v2.41以下 | 他の呼び出しで使用できるWhatsAppユーザーID。 |
v2.43以上 | 返されるWhatsAppユーザーIDは有効な場合と無効な場合があります 値が有効になる保証がないため、以降の呼び出しではこの値の使用を控えてください。 |
processing
ステータスとともに、HTTPステータス200 OK
が返されます。
テンプレートメッセージがWhatsAppアカウントを持たない電話番号に送信されると、「ユーザーが無効である」ことを示すエラーコード 1013
付きのエラーメッセージを受け取ります。
応答にその他のエラーが含まれている場合は、エラーメッセージとステータスメッセージをご覧ください。
ブロックは、悪質行為者が有害な行為を続けるのを阻止するための防御機能とみなされる場合があります。連絡先をブロックするには、過去24時間以内にその連絡先から送信されたメッセージを受け取っている必要があります。
別のWhatsAppアカウントをブロックする理由を指定して、API呼び出しを/v1/contacts/{phone_number}/block
に送信します。
POST /v1/contacts/+16315551000/block { "reason": "Optional string(0;60). Freeform block reason. Will be used when another WhatsApp account is being blocked" }
成功した応答にはHTTPステータス200
があり、「エラー」オブジェクトはありません。
失敗した場合の応答は次のようになります。
{ "errors": [ { "code": 2048, "title": "Not engaged contact", "details": "Invalid Request. This contact hasn't engaged with you in the last 24 hrs." } ] }
/v1/contacts/{phone_number}/block
へのPOST呼び出しでは、次のパラメーターがサポートされています。
設定 | 説明 |
---|---|
| 任意。 自由形式のブロックの理由。別のWhatsAppアカウントがブロックされているときに使われます。60文字未満にする必要があります。 |
| 必須。 番号は、標準的な電話番号形式で指定できます。連絡先電話番号の推奨形式は、プラス記号(+)と国番号が指定されているものです。詳しくは、電話番号の形式をご覧ください。 |
この呼び出しで連絡先のブロックを解除します
API呼び出しを/v1/contacts/{phone_number}/unblock
に送信します
POST /v1/contacts/+16315551000/unblock
成功した応答にはHTTPステータス200
があり、「エラー」オブジェクトはありません。
失敗した場合の応答は次のようになります。
{ "errors": [ { "code": 1009, "title": "Parameter value is not valid", "details": "Provided WhatsApp ID is not valid. Please provide a valid WhatsApp ID or a phone number with a country code" } ] }
/v1/contacts/{phone_number}/unblock
へのPOST呼び出しでは、次のパラメーターがサポートされています。
設定 | 説明 |
---|---|
| 必須。 番号は、標準的な電話番号形式で指定できます。連絡先電話番号の推奨形式は、プラス記号(+)と国番号が指定されているものです。詳しくは、電話番号の形式をご覧ください。 |
ブロックした連絡先のリストを取得する方法は次のようになります。
API呼び出しを/v1/contacts/blocklist
に送信し、ブロックした連絡先のページ分割されたリストを受け取ります
GET /v1/contacts/blocklist?limit=10&offset=0
受け取る応答には、1ページ分のブロックリストと、ページ分割情報が含まれています
{ "contacts": [ { "wa_id": "16315551000@s.whatsapp.net" } ], "pagination": { "limit": 10, "offset": 0, "total": 1 } }
/v1/contacts/blocklist
へのGET呼び出しでは、次のパラメーターがサポートされています。
設定 | 説明 |
---|---|
| 任意。 有効な範囲: (0;200]。デフォルト: 100。 |
| 任意。 デフォルト: 0。 |
レポート機能は、悪質行為者の予防対策を構築するための重要なシグナルを提供します。連絡先を報告するには、過去24時間以内にその連絡先から送信されたメッセージを受け取っている必要があります。
別のWhatsAppアカウントをブロックしている場合はその理由を指定して、API呼び出しを/v1/contacts/{phone_number}/report
に送信します。
POST /v1/contacts/+16315551000/block { "reason": "Optional string(0;60). Freeform block reason. Will be used when another WhatsApp account is being blocked", "block": "true | false optional boolean with default of false", "message_id": "message-id. Optional reported message id" }
成功した応答にはHTTPステータス200
があり、「エラー」オブジェクトはありません。
失敗した場合の応答は次のようになります。
{ "errors": [ { "code": 2048, "title": "Not engaged contact", "details": "Invalid Request. This contact hasn't engaged with you in the last 24 hrs." } ] }
/v1/contacts/{phone_number}/report
へのPOST呼び出しでは、次のパラメーターがサポートされています。
設定 | 説明 |
---|---|
| 任意。 自由形式のブロックの理由。別のWhatsAppアカウントがブロックされているときに使われます。60文字未満にする必要があります。 |
| 任意。 デフォルトは 連絡先もブロックするか、報告のみを行うか。 |
| 任意。 報告対象のメッセージID。指定しない場合、直近5件のメッセージがWhatsAppに送信されます。 |
| 必須。 番号は、標準的な電話番号形式で指定できます。連絡先電話番号の推奨形式は、プラス記号(+)と国番号が指定されているものです。詳しくは、電話番号の形式をご覧ください。 |