このドキュメントでは、ビジネス電話番号をオンプレミスAPIからクラウドAPIに移行する方法について説明します。
API間でのビジネス電話番号の移行は、WhatsAppビジネスアカウント(WABA)間での電話番号の移行とは異なることに注意してください。
クラウドAPIからオンプレミスAPIに移行する方法については、クラウドAPIからオンプレミスAPIへの移行をご覧ください。
移行処理には、ビジネス電話番号についてのメタデータを生成してから、クラウドAPIでの使用のためにそのデータを使って番号を登録することが関係します。それにより、その番号はオンプレミスAPIから登録解除されます。1つの番号は、1つのAPIにしか登録できないからです。
移行しても次のものには影響しません。
しかし、移行をサポートするには、このドキュメントに記載されている移行手順を実行する前に、API間の違いに注意し、それに対処するための適切な措置を取る必要があります。
顧客データがオンボーディングされている状態でクラウドAPIとビジネス管理APIを使うことができ、さらにクラウドAPIとビジネス管理APIのWebhookに対応できるMetaビジネスアプリが必要です。さらにアプリは、認証済みのMetaビジネスアカウントに関連付けられているか、またはそれによって要求されているものでなければなりません。
Metaビジネスアプリがない場合、またはアプリはあるもののWhatsApp製品をアプリに設定していない場合は、クラウドAPIのスタートガイドにある手順を完了してください。これらのステップを完了すると、クラウドAPIとビジネス管理APIをテストするために必要なアセットがすべて生成されます。
該当Metaアプリについて、アプリレビューを実施し、whatsapp_business_messagingアクセス許可とwhatsapp_business_managementアクセス許可の承認を得る(アドバンスアクセスを得る)必要があります。
アプリがAPI間の相違点をすべて処理できることを確認したら、まず低ボリュームのビジネス電話番号のいずれかを移行して、クラウドAPIで提供予定の機能がすべて適切に動作することを検証するようおすすめします。すべて正しく機能することを確認してから、追加の番号を移行するようにしてください。
また、移行作業は、オンプレミスAPIデプロイへのトラフィックが少ない時間帯に実行するようにおすすめします。
オンプレミスAPIの以下の機能は、クラウドAPIでサポートされていないか、または処理方法が異なります。移行処理を始める前に、それらの違いをアプリで処理できることを確認しておいてください。
クラウドAPIとビジネス管理APIのWebhookのペイロード構造体は、オンプレミスAPIのペイロード構造体とは異なります。クラウドAPIとビジネス管理APIをそれぞれ専用に処理できる新しいWebhookエンドポイントを作成することをおすすめします。
ペイロードの違いについて、またアプリダッシュボードを使ってアプリに対するWebhookを設定する方法について詳しくは、以下のドキュメントをご覧ください。
ビジネス電話番号をクラウドAPIに移行したら、[WhatsAppビジネスアカウント] > [サブスクリプション登録対象アプリ]エンドポイントを使って、Metaアプリを、そのビジネス番号に関連するWABAのWebhookに登録する必要があることに注意してください。
curl -X POST 'https://graph.facebook.com/v17.0/<WABA_ID>/subscribed_apps' \ -H 'Authorization: Bearer EAAJB...'
クラウドAPIへの移行が完了すると、ビジネス電話番号のオンプレミスAPI Webhooksの配信が終了し、クラウドAPI Webhooks配信が開始されます。
クラウドAPIでメッセージを送信する際に、オンプレミスAPIにアップロードされるメディアのメディアIDを使うことはできません。したがって、クラウドAPIを使ってメディアをアップロードし直すことによって新しいメディアIDを生成するか、またはメディアが公開サーバー上でホスティングされている場合はメディアURLを使う必要があります。メディアメッセージとメディアベースのメッセージテンプレートをご覧ください。
メッセージの整合性を確保するため、オンプレミスAPIで許可されているメディアホスティングドメインの一部が、クラウドAPIでは許可されないことに注意してください。メディア用にホスティングサービスを使う場合は、移行の前にフリーフォームメッセージやテンプレートメッセージでメディアURLをテストすることをおすすめします。エラーのためにホストがブロックされていると思われる場合は、サポート担当にご連絡ください。
クラウドAPIとビジネス管理APIのエラーコードは、オンプレミスAPIのエラーコードとは異なります。以下のドキュメントをご覧ください。
オンプレミスでは、messages.type
をvoice
に設定することによりWebhookの中のプッシュツートーク(PTT)メッセージが識別されます。しかし、クラウドAPIの場合、PTTメッセージは、messages.audio.voice
をtrue
に設定することによって識別されます。
クラウドAPIでは、スタンプパックがサポートされていません。
移行の最終ステップを実行すると、すぐに(クラウドAPI用に番号を登録するため)ダウンタイムが始まります。それはほんの数秒間のはずです。その間、WhatsAppユーザーからその番号に送信されるメッセージは、痕跡を残さずに削除されることになります。
ダウンタイムによる影響を最小限に抑えるため、該当番号のアクティビティ量が低いタイミングに移行作業を実施するようスケジュールすることをおすすめします。
オンプレミスビジネス電話番号に複数のシャードが実行されているマルチコネクトがある場合、その番号はクラウドAPIでは自動的に高スループットにアップグレードされます。
公式ビジネスアカウント(OBA)のステータスがあるビジネスの電話番号を移行する場合、番号の登録時(ステップ3)にそのメタデータ(ステップ2で生成)を含めると、そのステータスは保持されます。このデータを省略すると、その電話番号はOBAステータスを失います。
移行に関して質問がある場合や、サポートが必要な場合は、以下のようにダイレクトサポートチケットを送信してください。
ビジネス電話番号のPINが分かっている場合は、このステップをスキップできます。
ステップ3を実行する際にビジネス電話番号のPINが必要になるため、PINが分からない場合は、まずそのビジネス電話番号に対する2段階認証を無効にする必要があります。そのビジネス電話番号の所有者でない場合は、それを無効にするよう所有者に依頼してください。
ビジネス電話番号についてのメタデータを生成するには、バックアップと復元APIを使います。
POST /v1/settings/backup { "password": "<PASSWORD>" }
<PASSWORD>
は、任意の文字列にすることができます。この値は、メタデータをエンコードするために使われます。次のステップで必要になるため、値を把握しておいてください。
{ "settings": { "data": "<METADATA>" }, "meta": { "api_status": "<API_STATUS>", "version": "<API_VERSION>" } }
該当するビジネス電話番号とその設定について記述するdata
プロパティに割り当てられているエンコード済み文字列がAPIから返されます。この値は次のステップで必要になるため、メモしておいてください。
<METADATA>
— これは、該当のビジネス電話番号とその設定について記述するエンコード済み文字列です。この値は次のステップで必要になるため、メモしておいてください。<API_STATUS>
— オンプレミスAPIデプロイのステータス。<API_VERSION>
—実行するオンプレミスAPIのバージョン番号。curl 'https://localhost:9090/v1/settings/backup' \ -H 'Content-Type: application/json' \ -H 'Authorization: Bearer EAAJB...' \ -d ' { "password": "tacocat" }'
{ "settings": { "data": "V0FCS..." }, "meta": { "api_status": "stable", "version": "2.49.3" } }
クラウドAPIの[WhatsAppビジネス電話番号] > [登録]エンドポイントを使って、クラウドAPIで使用するために番号を登録します。
前のステップで得られたエンコード済みビジネス電話番号メタデータ値とパスワードを含めます。このデータがなくても番号を登録できますが、含めない場合、ビジネス電話番号のプロフィールデータが失われてしまいます。これは、公式ビジネスアカウントとしてのWhatsAppビジネスアカウントのステータスに影響を与えることがあります。
POST /<BUSINESS_PHONE_NUMBER_ID>/register
{ "messaging_product": "whatsapp", "pin": "<NEW_OR_EXISTING_PIN>", "backup": { "password": "<PASSWORD>", "data": "<METADATA>" } }
<NEW_OR_EXISTING_PIN
> — ビジネス電話番号の既存PINまたは今回設定するPIN。<PASSWORD
> — 前のステップでビジネス電話番号のメタデータを生成するために使ったパスワード。<METADATA
> — 前のステップで生成された、ビジネス電話番号とその設定について記述するエンコード済み文字列。{ "success": <SUCCESS> }
APIからの応答では、登録が成功した場合はsuccess
がtrue
に、エラーが発生した場合はfalse
に設定されます。
curl 'https://graph.facebook.com/v19.0
/110200345501442/register' \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer EAAJB...' \
-d '
{
"messaging_product": "whatsapp",
"pin": "134568",
"backup": {
"password": "tacocat",
"data": "V0FCS..."
}
}'
{ "success": true }
ビジネス電話番号のhealth_status
フィールドをリクエストし、それをクラウドAPIのメッセージングに使うことができることを確認します。メッセージ機能の正常性ステータスをご覧ください。