このトピックでは、Meta が提供する公式登録ツールを使用して WhatsApp Business Account(WABA)を登録する方法について説明します。埋め込みサインアップを利用することで、登録時間を大幅に短縮できます。埋め込みサインアップは、すべてのステップを 1 つのワークフローに統合することで登録プロセスを簡素化し、登録時間を数日から数分に短縮します。
前提条件
埋め込みサインアップを行う前に、以下の前提条件が満たされていることを確認してください。
Alibaba Cloud アカウントが作成され、企業の実名登録が完了していること。こちら をクリックして Alibaba Cloud にサインアップし、こちら をクリックして企業を認証します。
Chat App Message Service がアクティブ化されていること。詳細については、「はじめに」をご参照ください。
WhatsApp Tech Provider であること。Tech Provider になるには、Facebook のドキュメント Become a Tech Provider を参照してください。
手順
Facebook は、埋め込みサインアッププロセスの新しいバージョン(バージョン 2)のロールアウトを開始しました。 extras オブジェクト(オプション)内の version パラメーターを使用して、エンドユーザーに表示される埋め込みインターフェイス(プロセス)のバージョンを制御できます。
バージョン 1 は、初期の埋め込みサインアッププロセス用です。バージョン 2 は、新しい埋め込みサインアッププロセス用です。バージョンが指定されていない場合、エンドユーザーには新しい埋め込みサインアッププロセス(バージョン 2)が表示されます。詳細については、Facebook のドキュメント Embedded Signup を参照してください。
バージョンが指定されていない場合、またはバージョン 2 が指定されている場合(バージョンが指定されていない場合のデフォルト)、WABA を直接バインドできます。詳細については、「WABA を Chat App Message Service にバインドする」をご参照ください。
Facebook は最終的にバージョン 1 のサポートを終了することにご注意ください。詳細については、Facebook のドキュメント Implementation を参照してください。
埋め込みサインアップを実装する
Tech Provider は、Facebook JS SDK を使用して埋め込み操作を実行できます。
サンプルコード
const onRegisterButtonClick = ()=>{
// const { appId , configId } = this.state;
// SDK を初期化します。
window.fbq &&
window.fbq("trackCustom", "WhatsAppOnboardingStart", {
appId: <APP_ID>,
feature: "whatsapp_embedded_signup"
});
// SDK コールバック関数を設定します。
const sessionInfoListener = event => {
if (event.origin !== "https://www.facebook.com") return;
try {
const eventData = JSON.parse(event.data);
console.log("[sessionInfoListener] イベントデータ", eventData, event.data);
if (eventData.type === "WA_EMBEDDED_SIGNUP") {
if (
eventData.event === "FINISH" ||
eventData.event === "FINISH_ONLY_WABA"
) {
const { waba_id } = eventData.data;
console.log(
"[sessionInfoListener] waba_id",
waba_id
);
// TODO: Chat App Message Service が提供する ChatappBindWaba API 操作を呼び出します。// この操作が呼び出されると、custSpaceId パラメーターの値が返されます。
}
}
} catch {
console.log("JSON 以外のレスポンス", event.data);
}
};
// メッセージイベントをリッスンします。
window.addEventListener("message", sessionInfoListener);
// SDK を呼び出します。
window.FB.login(
response => {
// accessToken パラメーターの値を取得するために、Chat App Message Service が提供する ChatappEmbedSignUp 操作を呼び出す必要はありません。(ChatappEmbedSignUp 操作は廃止されました。)
if (response.authResponse) {
const accessToken = response?.authResponse?.accessToken;
} else {
console.log("ユーザーがログインをキャンセルしたか、完全に承認しませんでした。");
}
},
{
config_id: '<CONFIG_ID>',
// Meta から取得した configId。
response_type: "code",
// response_type パラメーターを code に設定します。
override_default_response_type: true,
// override_default_response_type パラメーターを true に設定します。
extras: {
feature: "whatsapp_embedded_signup",
// featureType:"only_waba_sharing",
// only_waba_sharing パラメーターは、埋め込みサインアップの実装に電話番号が不要であることを指定します。(AddChatappPhoneNumber 操作は、電話番号を追加するために Chat App Message Service によって提供されます。)
// 埋め込みサインアップ中に電話番号を入力する必要がある場合は、featureType パラメーターを only_waba_sharing に設定しないでください。
version: 2,
sessionInfoVersion: 3,
// version パラメーターと sessionInfoVersion パラメーターを 3 に設定します。
setup: {
solutionID" '<SOLUTION_ID>' // ここにソリューション ID を追加します
},
}
}
);
}
// ボタンの例
<button onclick="launchWhatsAppSignup()">Facebook でログイン</button>;
埋め込みサインアップの実装方法の詳細については、Facebook のドキュメント Implementation を参照してください。
例
JSON 形式の正常なレスポンスの例
{
"RequestId": "744c4b5c79c9432497a075bdfca3***",
"Code": "OK",
"Message": "null",
"AppId": "23h***",
"ConfigId":"3548941223****"
}
WABA を Chat App Message Service にバインドする
Facebook JS SDK を介して埋め込みサインアップを完了すると、メッセージイベントリスナー内で wabaId を取得できます。この wabaId を ChatappBindWaba API 操作に渡すと、プラットフォームは Alibaba Cloud PID に関連付け、一意の識別子である custSpaceId を返します。このパラメーターは、後続の API 操作で参照として必要になります。
API リファレンス
例
JSON 形式の正常なレスポンスの例
{
"RequestId": "90E63D28-E31D-1EB2-8939-A948664****",
"Code": "OK",
"Message": "null",
"Data": {
"CustSpaceId": "C0202939293****",
"WabaId": "29398*****"
}
}
WABA のビジネスプロファイルを確認する
QueryWabaBusinessInfo 操作を呼び出すことで、WABA のビジネスプロファイルを確認できます。
API リファレンス
例
JSON 形式の正常なレスポンスの例
{
"RequestId": "90E63D28-E31D-1EB2-8939-A948664****",
"Code": "OK",
"Message": "null",
"Data": {
"BusinessId": "19288282****",
"BusinessName": "Alibaba****",
"VerificationStatus": "verified",
"Vertical": "Retail"
}
}