Skip to content
Last updated

Whatsapp Business Messaging Export Integration

WhatsApp Business Platformは、中規模から大規模の企業が大規模に顧客と接続できるようにします。数分で顧客とのWhatsApp会話を開始し、ケア通知や購入更新を送信し、パーソナライズされたサービスを提供し、顧客が好むチャネルでサポートを提供できます。

このコネクタは、MetaのCloud APIを使用して、Treasure DataユーザーがTDから直接WhatsAppメッセージを開始できるようにします。この統合は、アクティベーションで使用して、フリーテキストまたは事前定義されたテンプレートでWhatsAppユーザーにメッセージを送信できます。

前提条件

  • Treasure Data™の基本知識。
  • Meta Business Manager、WhatsApp Managerの基本知識。

要件と制限事項

  • システム管理者ユーザーからのアクセストークンが必要です。期限切れのないトークンを生成することをお勧めします。
  • 事前定義されたテンプレートでのメッセージ送信はサポートされています。ただし、アクティベーションはテキストベースのテンプレートに限定する必要があります。

Treasure Data Integration の静的 IP アドレス

セキュリティポリシーで IP ホワイトリストが必要な場合は、接続を成功させるために Treasure Data の IP アドレスを許可リストに追加する必要があります。

リージョンごとに整理された静的 IP アドレスの完全なリストは、次のリンクにあります: https://api-docs.treasuredata.com/en/overview/ip-addresses-integrations-result-workers/

TDコンソールを使用した接続の作成

Treasure Dataでは、クエリを実行する前にデータ接続を作成して設定する必要があります。データ接続の一部として、統合にアクセスするためのAuthenticationを提供します。

アクセストークンの取得

アクセストークンを取得するには、Metaのこのブログ投稿に従ってください。永続的なアクセストークンをお勧めします。

Authenticationの作成

最初のステップは、資格情報のセットを使用して新しいAuthenticationを作成することです。

  1. Integrations Hubを選択します。

  2. Catalogを選択します。

  1. CatalogでIntegrationを検索します

  1. アイコンにマウスをホバーし、Create Authenticationを選択します。

  2. Credentialsタブが選択されていることを確認し、Integrationの資格情報を入力します。

  3. Continueを選択します。

  4. Authenticationの名前を入力し、Doneを選択します。

クエリの定義

  1. Data Workbench > Queriesに移動します。
  2. New Queryを選択します。
  3. 電話番号のリストを取得するクエリを入力します。サンプルクエリを参照してください。
  4. クエリを実行して、期待される結果を検証します。

Result Exportターゲットの指定とアクティベーションの設定

  • フリーテキストメッセージの送信

サンプルクエリ

SELECT phone_number FROM users

フリーテキストメッセージを使用してアクティベーションを設定するには、以下の設定に従ってください。このユースケースでは、クエリ結果のすべての有効な電話番号に同じWhatsAppメッセージがトリガーされることが期待されます。

フィールド必須説明

Send By

以下のいずれかを選択:

  • Phone Number ID: このIDはMeta Developer App Dashboardから確認できます。
  • Display Phone Number: WhatsApp ManagerからのWhatsApp Businessアカウントの番号。このオプションを選択した場合、Phone Number IDを取得するためにWhatsApp Business Account IDが必要です。

開発者以外のユーザーにとっては、Business Account IDと一緒にDisplay Phone Numberを使用する方が簡単です。これらはWhatsApp Manager > Phone numbersから確認できます。

Phone Number IDSend By = Phone Number IDの場合送信者として機能する電話番号のID。
Phone NumberSend By = Display Phone Numberの場合WhatsApp Manager > Phone numbersに表示される電話番号。
Account IDSend By = Display Phone Numberの場合電話番号を所有するアカウントID。
Send Mode以下のいずれかを選択: - Template - Text Message。このユースケースでは、Text Messageを選択します。
Text ContentSend Mode = Text Messageの場合メッセージのテキスト内容。最大4096文字。
Preview URLSend Mode = Text Messageの場合送信されるメッセージでURLプレビューを有効にします。

事前定義されたテンプレートメッセージの送信

サンプルクエリ

SELECT
  buyer_phone AS phone_number,
  'Order Confirmation' AS header,
  id AS order_id,
  tracking_number AS track_id,
  CURRENT_DATE AS today_var
FROM orders

フリーテキストメッセージを使用してアクティベーションを設定するには、以下の設定に従ってください。このユースケースでは、クエリ結果のすべての有効な電話番号に同じWhatsAppメッセージがトリガーされることが期待されます。

フィールド必須説明
Send By以下のいずれかを選択:
  • Phone Number ID: このIDはMeta Developer App Dashboardから確認できます。
  • Display Phone Number: WhatsApp ManagerからのWhatsApp Businessアカウントの番号。このオプションを選択した場合、Phone Number IDを取得するためにWhatsApp Business Account IDが必要です。

開発者以外のユーザーにとっては、Business Account IDと一緒にDisplay Phone Numberを使用する方が簡単です。これらはWhatsApp Manager > Phone numbersから確認できます。

Phone Number IDSend By = Phone Number IDの場合送信者として機能する電話番号のID。
Phone NumberSend By = Display Phone Numberの場合WhatsApp Manager > Phone numbersに表示される電話番号。
Account IDSend By = Display Phone Numberの場合電話番号を所有するアカウントID。
Send Mode以下のいずれかを選択: - Template - Text Message。このユースケースでは、Templateを選択します。
Template NameYesテンプレートの名前。WhatsApp Manager > Manage templateでテンプレートを検索します。
Header variableYesクエリ結果の列名またはエイリアスをヘッダーの変数にマッピングします。WhatsAppでサポートされる変数は最大1つのみです。

クエリからヘッダー変数が見つからない場合、またはテンプレートのヘッダーに変数が定義されていない場合、エラーが発生します。

Body variablesYesクエリ結果の列名またはエイリアスのリストをボディの変数にマッピングします。 ボディ変数がクエリから見つからない場合、またはテンプレートで定義された変数の総数と一致しない場合、エラーが発生します。Treasure DataとWhatsApp間のマッピングは、名前ではなく順序を使用して行われます。
Language codeYes適切な言語コードを選択します。これはターゲットテンプレートの検索条件です。

(オプション) Query Export ジョブをスケジュールする

Scheduled Jobs と Result Export を使用して、指定したターゲット宛先に出力結果を定期的に書き込むことができます。

Treasure Data のスケジューラー機能は、高可用性を実現するために定期的なクエリ実行をサポートしています。

2 つの仕様が競合するスケジュール仕様を提供する場合、より頻繁に実行するよう要求する仕様が優先され、もう一方のスケジュール仕様は無視されます。

例えば、cron スケジュールが '0 0 1 * 1' の場合、「月の日」の仕様と「週の曜日」が矛盾します。前者の仕様は毎月 1 日の午前 0 時 (00:00) に実行することを要求し、後者の仕様は毎週月曜日の午前 0 時 (00:00) に実行することを要求するためです。後者の仕様が優先されます。

TD Console を使用してジョブをスケジュールする

  1. Data Workbench > Queries に移動します

  2. 新しいクエリを作成するか、既存のクエリを選択します。

  3. Schedule の横にある None を選択します。

  4. ドロップダウンで、次のスケジュールオプションのいずれかを選択します:

    ドロップダウン値説明
    Custom cron...Custom cron... の詳細を参照してください。
    @daily (midnight)指定されたタイムゾーンで 1 日 1 回午前 0 時 (00:00 am) に実行します。
    @hourly (:00)毎時 00 分に実行します。
    Noneスケジュールなし。

Custom cron... の詳細

Cron 値説明
0 * * * *1 時間に 1 回実行します。
0 0 * * *1 日 1 回午前 0 時に実行します。
0 0 1 * *毎月 1 日の午前 0 時に 1 回実行します。
""スケジュールされた実行時刻のないジョブを作成します。
 *    *    *    *    *
 -    -    -    -    -
 |    |    |    |    |
 |    |    |    |    +----- day of week (0 - 6) (Sunday=0)
 |    |    |    +---------- month (1 - 12)
 |    |    +--------------- day of month (1 - 31)
 |    +-------------------- hour (0 - 23)
 +------------------------- min (0 - 59)

次の名前付きエントリを使用できます:

  • Day of Week: sun, mon, tue, wed, thu, fri, sat.
  • Month: jan, feb, mar, apr, may, jun, jul, aug, sep, oct, nov, dec.

各フィールド間には単一のスペースが必要です。各フィールドの値は、次のもので構成できます:

フィールド値 例の説明
各フィールドに対して上記で表示された制限内の単一の値。
フィールドに基づく制限がないことを示すワイルドカード '*''0 0 1 * *'毎月 1 日の午前 0 時 (00:00) に実行するようにスケジュールを設定します。
範囲 '2-5' フィールドの許可される値の範囲を示します。'0 0 1-10 * *'毎月 1 日から 10 日までの午前 0 時 (00:00) に実行するようにスケジュールを設定します。
カンマ区切りの値のリスト '2,3,4,5' フィールドの許可される値のリストを示します。0 0 1,11,21 * *'毎月 1 日、11 日、21 日の午前 0 時 (00:00) に実行するようにスケジュールを設定します。
周期性インジケータ '*/5' フィールドの有効な値の範囲に基づいて、 スケジュールが実行を許可される頻度を表現します。'30 */2 1 * *'毎月 1 日、00:30 から 2 時間ごとに実行するようにスケジュールを設定します。 '0 0 */5 * *' は、毎月 5 日から 5 日ごとに午前 0 時 (00:00) に実行するようにスケジュールを設定します。
'*' ワイルドカードを除く上記の いずれかのカンマ区切りリストもサポートされています '2,*/5,8-10''0 0 5,*/10,25 * *'毎月 5 日、10 日、20 日、25 日の午前 0 時 (00:00) に実行するようにスケジュールを設定します。
  1. (オプション) Delay execution を有効にすることで、クエリの開始時刻を遅延させることができます。

クエリを実行する

クエリに名前を付けて保存して実行するか、単にクエリを実行します。クエリが正常に完了すると、クエリ結果は指定された宛先に自動的にエクスポートされます。

設定エラーにより継続的に失敗するスケジュールジョブは、複数回通知された後、システム側で無効化される場合があります。

(オプション) Delay execution を有効にすることで、クエリの開始時刻を遅延させることができます。

Audience Studio で Segment をアクティベートする

Audience Studio で activation を作成することで、segment データをターゲットプラットフォームに送信することもできます。

  1. Audience Studio に移動します。
  2. parent segment を選択します。
  3. ターゲット segment を開き、右クリックして、Create Activation を選択します。
  4. Details パネルで、Activation 名を入力し、前述の Configuration Parameters のセクションに従って activation を設定します。
  5. Output Mapping パネルで activation 出力をカスタマイズします。

  • Attribute Columns
    • Export All Columns を選択すると、変更を加えずにすべての列をエクスポートできます。
    • + Add Columns を選択して、エクスポート用の特定の列を追加します。Output Column Name には、Source 列名と同じ名前があらかじめ入力されます。Output Column Name を更新できます。+ Add Columns を選択し続けて、activation 出力用の新しい列を追加します。
  • String Builder
    • + Add string を選択して、エクスポート用の文字列を作成します。次の値から選択します:
      • String: 任意の値を選択します。テキストを使用してカスタム値を作成します。
      • Timestamp: エクスポートの日時。
      • Segment Id: segment ID 番号。
      • Segment Name: segment 名。
      • Audience Id: parent segment 番号。
  1. Schedule を設定します。

  • スケジュールを定義する値を選択し、オプションでメール通知を含めます。
  1. Create を選択します。

batch journey の activation を作成する必要がある場合は、Creating a Batch Journey Activation を参照してください。

(オプション)Workflowでのエクスポート結果の設定

Treasure Workflow内では、この統合を使用してデータをエクスポートするように指定できます。

Send Byメソッドでは、TDは2つのタイプをサポートしています:

  • display_phone_number: WhatsApp Business Account IDと電話番号を入力する必要があります。
  • phone_number_id: Phone Number IDを入力する必要があります。

このコネクタは、以下の例を使用して実行するように設定できます:

out:  type: whats_app_business  access_token: your access token  send_by: display_phone_number or phone_number_id  account_id: your account id  phone_number: your whatsapp business phone number  phone_number_id: your phone number id # If the send_by is phone_number_id

Send Modeメソッドでは、TDは2つのタイプをサポートしています:

  • text_message: 他のユーザーにテキストメッセージを送信します。
  • template: 設定できるテンプレートメッセージを他のユーザーに送信します。

このコネクタは、以下の例を使用して実行するように設定できます:

out:
  type: whats_app_business
  access_token: your_access_token
  send_by: display_phone_number or phone_number_id
  account_id: your_account_id
  phone_number: your_whatsapp_business_phone_number  phone_number_id: your phone number id
# If the send_by is phone_number_id  send_mode: text_message or template  text_content: your text message  preview_url: true
out:
  type: whats_app_business
  access_token: your access token
  send_by: display_phone_number or phone_number_id
  account_id: your account id
  send_mode: template
  phone_number: your whatsapp business phone number
  template_name: your template
  header_variable: your header variable in the above template
  body_variables: your body variables in the above template
  language_code: en # default : en

(オプション)CLIを使用したExport Integration

CLI(Toolbelt)を使用してWhatsApp Businessに結果をエクスポートすることもできます。

サーバーへのエクスポート情報を、td queryコマンドの--resultオプションとして指定する必要があります。td queryコマンドについては、この記事を参照してください。

オプションの形式はJSONで、一般的な構造は以下の通りです。

Template Modeの場合

{
  "accessToken": "__SAVED__",
  "sendBy": "phone_number_id",
  "phoneNumberId": "phone_number_Id",
  "sendMode": "template",
  "templateName": "your_template",
  "headerVariable": "your_header_variable",
  "bodyVariables": "your_body_variables",
  "languageCode": "en_US"
}

Text Message Modeの場合

{
  "accessToken": "__SAVED__",
  "sendBy": "phone_number_id",
  "phoneNumberId": "phone_number_Id",
  "sendMode": "textMessage",
  "textContent": "Your_text_content",
  "previewUrl": true,
  "languageCode": "en_US"
}

パラメータ

名前説明デフォルト値必須
typeエクスポート先のサービス名を記述します。whats_app_businessN/AYes
access_tokenWhatsapp Business APIアクセストークンWhatsapp Business APIアクセストークンN/AYes
send_byPhone Number IDまたはDisplay Phone NumberをサポートPhone Number IDまたはDisplay Phone NumberPhone Number IDYes
account_idWhatsapp Business Account IDWhatsapp Business Account IDN/Asend_byがDisplay Phone Numberの場合Yes
phone_numberWhatsapp Business Phone NumberWhatsapp Business Phone NumberN/Asend_byがDisplay Phone Numberの場合Yes
phone_number_idWhatsapp Business Phone Number IDWhatsapp Business Phone Number IDN/Asend_byがPhone Number IDの場合Yes
send_modeメッセージ送信モード、templateまたはtext messageをサポートメッセージ送信モード、templateまたはtext messageをサポートtext messageYes
text_contentメッセージのテキスト内容メッセージのテキスト内容N/Asend_modeがtext messageの場合Yes
preview_urlメッセージのプレビューURLメッセージのプレビューURLN/Asend_modeがtext messageの場合Yes
template_nameテンプレート名テンプレート名N/Asend_modeがtemplateの場合Yes
header_variableテンプレートのヘッダー変数テンプレートのヘッダー変数N/ANo
body_variablesボディ変数のリスト、カンマ区切りボディ変数のリスト、カンマ区切りN/ANo
language_codeメッセージの言語コードメッセージの言語コードussend_modeがtemplateの場合Yes

使用例

$ td query -d hiep_whatsapp -w \
"select first_name,last_name,phone_number,action_source,order_id from user_actions" -T presto \
--result '{ "type": "whats_app_business","access_token": "xxxxx","send_by": "phone_number_id","send_mode": "text_message",    "phone_number_id": "yyyyyy","text_content": "Virtual reality (VR) technology has been evolving rapidly,transforming how we interact with digital environments and expanding possibilities across various sectors. From its early conceptualization to the sophisticated systems available today,VR has taken a path marked by both significant achievements and formidable challenges. https://en.wikipedia.org/wiki/Virtual_reality"}'

参考資料

  • API Overview: https://developers.facebook.com/docs/whatsapp/cloud-api
  • OAuth 2.0: https://developers.facebook.com/blog/post/2022/12/05/auth-tokens/