画面フローを使用して入力データを動的 WhatsApp フローに渡す
この画面フローでは、顧客データを収集して安全に変数に渡すことができます。これらの変数は、Apex ベースのフォームメッセージングコンポーネントで作成される動的な WhatsApp フローの入力として使用できます。パーソナライズされたコンテンツをメッセージに追加するには、Apex ベースのフォームメッセージングコンポーネントで、この入力データへの動的参照を追加します。たとえば、獣医の予定をスケジュールするために、画面フローで動物の種別や問題などの特定の詳細を収集し、この情報を Apex ベースのフォームメッセージングコンポーネントに動的に渡します。
必要なエディション
| サポートされているエディションを表示する。 | |
この記事の適用対象:
|
拡張 WhatsApp チャネル、統合 WhatsApp |
この記事の適用対象外:
|
拡張アプリケーション内チャット、拡張 Web チャット、標準および拡張 Facebook Messenger、標準および拡張 SMS、拡張 Apple Messages for Business、拡張 LINE、Bring Your Own チャネル |
| 必要なユーザー権限 | |
|---|---|
| メッセージングコンポーネントを作成する | 「アプリケーションのカスタマイズ」および「設定・定義を参照する」 または システム管理者 |
| メッセージングでメッセージを送受信する | メッセージングエージェント |
Apex ベースのフォームメッセージングコンポーネントを作成する場合、デフォルトで次の標準入力パラメータを使用できます。
| パラメーター | 説明 |
|---|---|
FormData |
フローに渡される入力データを保存します。データはキーと値のペアの JSON 文字列として保存されます。このデータを参照するには、データモデルでデータの構造を定義する必要があります。データモデルの構造は JSON の構造と一致する必要があります。このデータには、Apex または画面フローを使用してアクセスできます。 |
FormEntryScreenId |
入力画面の ID を保存します。この ID は、メッセージングエンドユーザーが最初に表示する画面です。 |
これらのデフォルトパラメータは、[Component Details (コンポーネントの詳細)] セクションの [Parameters (パラメータ)] タブにあります。
これらのパラメーターと画面フローを使用して入力データを渡す方法を理解するために、例を見てみましょう。
-
Apex ベースのフォームメッセージングコンポーネントのフロー形式を開きます。
-
フロー形式で、[データの管理] をクリックして、FormData パラメーターから渡されるすべての入力データのデータモデルを定義します。
たとえば、FormData パラメーターには次の入力データが保存されます。
{“FirstName”:“Albert”,“LastName”:“Costa”,“isStudent”:“true”} -
データモデルにフィールドを追加するには、[フィールドを追加] をクリックしてそのプロパティを設定します。
このステップは、FormData パラメーターの項目ごとに実行します。構造を作成するには、項目のオブジェクトデータ型を選択し、ネストされた項目を追加します。

- データモデルの定義が完了したら、保存します。
-
フロー形式で、[データの管理] をクリックして、FormData パラメーターから渡されるすべての入力データのデータモデルを定義します。
-
フロープロパティのデータモデル項目の値を使用するには、動的参照を追加します。
-
フロー形式を開き、動的参照を使用するプロパティを見つけます。
たとえば、本文画面要素の [テキストコンテンツ] 項目の動的参照を追加できます。
- [種別] フィールドで、[動的参照] を選択します。
-
[参照項目を選択] で、データモデル項目を選択します。

動的参照では、データモデル項目または画面で定義された入力項目からデータを取得できます。
-
キャンバスで、動的参照をプレビューします。

-
フロー形式を開き、動的参照を使用するプロパティを見つけます。
-
データをメッセージングコンポーネントに渡すには、画面フローを作成します。
この画面フローでは、メッセージングセッションからデータを収集して、Apex ベースのフォームメッセージングコンポーネントで使用できます。このしくみを説明するために、サンプル画面フローを作成してみましょう。
-
画面フロー変数を定義します。
変数 値 sessionIdメッセージングセッションレコード ID を保存します。 initialDataApex ベースのフォームの入力データを保存します。この JSON 文字列の項目は、データモデルに追加した項目名と一致する必要があります。 initialScreenIdApex ベースのフォームの初期画面 ID を保存します。これは、メッセージングエンドユーザーが最初に表示する画面です。 meuNameメッセージングエンドユーザーの名前を保存します。 itemsこのコレクション変数には項目のリストが保存されます。 -
画面フローで、次の順序でアクションを追加します。Salesforce オブジェクトからデータを取得するには、[レコードを取得] アクションを追加します。値を画面変数に割り当てるには、[割り当て] アクションを追加します。
アクション 説明 getSession [レコードを取得] アクション セッション ID に基づいてメッセージングセッションを取得します。 そのメッセージングセッションから関連データを取得できます。この場合、[Id] 項目値と [MessagingEndUserId] 項目値を取得して保存します。 getMEU の [レコードを取得] アクション MessagingEndUserId に基づいてメッセージングユーザーレコードを取得します。 setMEUName Assignment アクション meuName変数をメッセージングユーザーレコードの [メッセージングユーザー名] 項目の値に設定します。getDynamicFlowItem Get Records action DynamicFlowItem オブジェクトからすべての DynamicFlowItem レコードを取得し、ID、ItemId__c、および itemTitle__c フィールドを itemsコレクション変数に保存します。GenerateJson Apex アクション 入力データを items変数とmeuName変数から JSON 形式に変換します。JSON オブジェクトの項目は、フローのデータモデルの項目に対応付けられます。このアクションは Apex クラスに基づいています。次の表の後の Apex クラスのサンプルを参照してください。setData Assignment アクション InitialData変数を生成された JSON アクションの値に設定します。このApexクラスは、構造化された入力データ(ユーザー名とSalesforceレコードのリスト)を1つのJSON文字列に変換します。次に、この JSON 文字列を使用して、入力データを Apex ベースのフォームメッセージングコンポーネントに渡します。
public class FlowJSONBuilder { // 1. Input parameters public class FlowInput { @InvocableVariable(label='User Name' required=true) public String meuName; // CHANGE: Use List<SObject> instead of List<DynamicFlowItems__c> to avoid compile error @InvocableVariable(label='Flow Items' required=true) public List<SObject> items; } // 2. Output parameters public class FlowOutput { @InvocableVariable(label='Generated JSON') public String jsonString; } // 3. Internal Wrapper classes public class JSONStructure { public String greeting; public List<ItemWrapper> items; } public class ItemWrapper { public String id; public String title; } // 4. Main Method @InvocableMethod(label='Generate Custom JSON' description='Builds the JSON string from Flow items') public static List<FlowOutput> generateJson(List<FlowInput> requests) { List<FlowOutput> outputs = new List<FlowOutput>(); for (FlowInput request : requests) { FlowOutput output = new FlowOutput(); JSONStructure jsonRoot = new JSONStructure(); jsonRoot.greeting = 'Hello ' + request.meuName + '!'; jsonRoot.items = new List<ItemWrapper>(); if (request.items != null) { // Loop through generic SObjects for (SObject genericRec : request.items) { // CAST the generic SObject to your specific Custom Object DynamicFlowItem__c rec = (DynamicFlowItem__c)genericRec; ItemWrapper item = new ItemWrapper(); item.id = rec.itemId__c; item.title = rec.itemTitle__c; jsonRoot.items.add(item); } } output.jsonString = JSON.serialize(jsonRoot); outputs.add(output); } return outputs; } } -
画面アクションを画面フローに追加し、[拡張メッセージ] コンポーネントを画面にドラッグします。

-
入力データを指定するには、次の拡張メッセージコンポーネントのプロパティを設定します。
プロパティ 値 メッセージングセッション ID [ sessionId] を選択します。これは、セッション ID が含まれる画面フロー変数です。メッセージングコンポーネント名 作成した Apex ベースのフォームメッセージングコンポーネントの名前を選択します。 Apex フォームデータ [ initialData] を選択します。これは、入力データが含まれる画面フロー変数です。Apex フォーム入力画面 ID [ initialScreenId] を選択します。これは、初期画面 ID が含まれる画面フロー変数です。実行時に、画面アクションは Apex ベースのフォームメッセージングコンポーネントを呼び出して、この入力データを渡します。
-
画面フローを保存して有効化します。

-
画面フロー変数を定義します。
-
サービス担当者が画面フローを実行できるようにするには、有効な画面フローをサービスコンソールページに組み込みます。
たとえば、フローコンポーネントをメッセージングセッションレコードページに追加します。

メッセージングセッション中に、ページから画面フローを起動するには、サービス担当者は [次へ] をクリックできます。
顧客との会話にフローのメッセージングコンポーネントを挿入するには、サービス担当者は [Insert Message (メッセージの挿入)] をクリックします。
![営業担当は、[メッセージを挿入] をクリックして顧客に送信できます。](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-service-support_channels-262-0-0-production-jajp/26de2115-d2a4-489c-97d0-b042b6cd787f/support_channels/images/messaging/messaging_dynamic_whatsapp_flow_insert_message_component_in_console.png)
その後、サービス担当者は顧客にメッセージを送信できます。



