意思決定管理によるオファーの作成および表示
Experience Platform Mobile SDK を使用して、モバイルアプリでJourney Optimizer Decision Management からのオファーを表示する方法を説明します。
Journey Optimizerの意思決定管理は、すべてのタッチポイントをまたいで、適切なタイミングで最高のオファーとエクスペリエンスを顧客に提供するのに役立ちます。 設計を終えたら、パーソナライズされたオファーを使用してオーディエンスをターゲットに設定します。
意思決定管理では、マーケティングオファーの一元化されたライブラリと、Adobe Experience Platformで作成されるリッチなリアルタイムプロファイルにルールと制約を適用する意思決定エンジンにより、パーソナライゼーションを簡単にします。 その結果、顧客に適切なオファーを適切なタイミングで送信できます。 詳しくは 意思決定管理についてを参照してください。
前提条件
- SDK がインストールおよび設定された状態で、アプリケーションが正常に構築および実行されました。
- Adobe Experience Platform用にアプリを設定します。
- Journey Optimizerへのアクセス – 説明に従ってオファーと意思決定を管理する適切な権限を持つ意思決定管理 こちら
学習目標
このレッスンでは、次の操作を行います
- 意思決定管理のEdge設定を更新します。
- Journey Optimizer - Decisioning 拡張機能を使用してタグプロパティを更新します。
- 提案イベントを取り込むには、スキーマを更新します。
- Assurance の設定を検証します。
- Journey Optimizer - Decision Management のオファーに基づいて、オファーの決定を作成します。
- アプリを更新して、Optimizer 拡張機能を登録します。
- アプリに意思決定管理のオファーを実装。
セットアップ
データストリーム設定を更新
モバイルアプリから Platform Edge Networkに送信されたデータがJourney Optimizer - Decision Management に転送されるようにするには、データストリームを更新します。
-
データ収集 UI で「データストリーム」を選択し、データストリームを選択します(例:Luma Mobile App)。
-
「{ その他 編集 を選択します。
-
データストリーム/ /Adobe Experience Platform 画面で、Offer decisioningー、Edge セグメント化、Adobe Journey Optimizer が選択されていることを確認します。 Target レッスンを行う場合は、「Personalizationの宛先」も選択します。 詳しくは、Adobe Experience Platform 設定を参照してください。
-
データストリーム設定を保存するには、「保存」を選択します。
Journey Optimizer - Decisioning タグ拡張機能のインストール
-
タグ に移動し、モバイルタグプロパティを見つけてプロパティを開きます。
-
拡張機能 を選択します。
-
カタログ を選択します。
-
Adobe Journey Optimizer - Decisioning 拡張機能を検索します。
-
拡張機能をインストールします。 拡張機能では、追加の設定は必要ありません。
スキーマを更新
- データ収集インターフェイスに移動し、左パネルから スキーマ を選択します。
- 上部のバーから 参照 を選択します。
- スキーマを選択して開きます。
- スキーマエディターで、「フィールドグループ」の横にある「 追加 を選択します。
- フィールドグループを追加 ダイアログの
proposition
を検索し、エクスペリエンスイベント – 提案インタラクション と フィールドグループを追加 を選択します。 このフィールドグループは、オファーに関連するエクスペリエンスイベントデータを収集します。具体的には、提示されるオファーや、収集、決定、その他のパラメーターの一部です(このレッスンの後半を参照)。 しかし、また、オファーには何が起こっていますか? 表示、インタラクション、解除などです。
- 「保存」を選択して、スキーマに対する変更を保存します。
Assurance での設定の検証
Assurance で設定を検証するには:
- Assurance UI に移動します。
- 左側のパネルで 設定 を選択し、{6 の下の 設定を検証 の横にある「追加 を選択します。
- 「保存」を選択します。
- 左パネルで 設定を検証 を選択します。 アプリケーションでのデータストリーム設定と SDK 設定の両方が検証されます。
プレースメントを作成
実際にオファーを作成する前に、モバイルアプリでこれらのオファーを配置する方法と場所を定義する必要があります。 意思決定管理では、この用途に合わせたプレースメントを定義し、JSON ペイロードをサポートするモバイルチャネル用のプレースメントを定義します。
-
Journey Optimizer UI の左パネルで、「 から「コンポーネント コンポーネント を選択します。
-
上部バーの「プレースメント」を選択します。
-
名前が モバイル JSON、モバイル が チャネルタイプ、JSON が コンテンツタイプ のプレースメントが表示されない場合は、プレースメントを作成する必要があります。 それ以外の場合は、引き続き オファーを作成します。
モバイル JSON プレースメントを作成するには:
-
「 プレースメントを作成」を選択します。
- 「詳細」セクションで、「名前」に「
Mobile JSON
」と入力し、「チャネルタイプ」から「モバイル」を選択し、「コンテンツタイプ」から「JSON」を選択します。 - 「保存」を選択して、プレースメントを保存します。
- 「詳細」セクションで、「名前」に「
オファーの作成
-
Journey Optimizer UI の左パネルで、「意思決定管理」から「 オファー を選択します。
-
オファー 画面で、「参照 を選択して、オファーのリストを表示します。
-
オファーを作成 を選択します。
-
新しいオファー ダイアログで、「パーソナライズされたオファー」を選択し、「次へ をクリックし す。
-
新しいパーソナライズされたオファーを作成 の 詳細 手順で、次の操作を行います。
-
オファーの 名前 (例:
Luma - Juno Jacket
)を入力し、開始日時 および 終了日時 を入力します。 これらの日付以外では、オファーは Offer Decisioning エンジンによって選択されません。 -
「次へ」を選択します。
-
-
新しいパーソナライズされたオファーを作成 の 表示域を追加 手順で、以下を行います。
-
チャネル リストから ![ モバイル] モバイル を選択し、プレースメント リストから モバイル JSON を選択します。
-
コンテンツ に カスタム を選択します。
-
コンテンツを追加 を選択します。 パーソナライゼーションを追加 ダイアログで、次の手順を実行します。
-
モード セレクターが使用可能な場合は、そのセレクターが JSON に設定されていることを確認します。
-
次の JSON を入力します。
code language-json { "title": "Juno Jacket", "text": "On colder-than-comfortable mornings, you'll love warming up in the Juno All-Ways Performance Jacket, designed to compete with wind and chill. Built-in Cocona™ technology aids evaporation, while a special zip placket and stand-up collar keep your neck protected.", "image": "https://luma.enablementadobe.com/content/dam/luma/en/products/women/tops/jackets/wj06-purple_main.jpg" }
-
「保存」を選択します。
-
-
「次へ」を選択します。
-
-
新しいパーソナライズされたオファーを作成 の 制約を追加 手順で、以下を行います。
-
優先度 を
10
に設定します。 -
キャッピングを含める をオフに切り替えます。
-
「次へ」を選択します。
-
-
新しいパーソナライズされたオファーを作成 の レビュー 手順で、次の操作を行います。
- オファーを確認し、「終了」を選択します。
- オファーを保存 ダイアログで、「保存して承認」を選択します。
-
手順 3~8 を繰り返し、異なる名前とコンテンツを持つさらに 4 つのオファーを作成します。 開始日時や優先度などのその他の設定値はすべて、最初に作成したオファーに似ています。 重複するオファーをすばやく作成して編集できます。
-
Journey Optimizerの UI で、左側のレールから オファー を選択したあと、上部のバーから「オファー」を選択します。
-
作成したオファーの行を選択します。
-
右側のペインで その他のアクション を選択し、コンテキストメニューから 複製 を選択します。
次の表を使用して、他の 4 つのオファーを定義します。
table 0-row-2 1-row-2 2-row-2 3-row-2 4-row-2 layout-fixed オファー名 JSON 形式のオファーコンテンツ Luma – 水ボトルを肯定 { "title": "Affirm Water Bottle", "text": "You'll stay hydrated with ease with the Affirm Water Bottle by your side or in hand. Measurements on the outside help you keep track of how much you're drinking, while the screw-top lid prevents spills. A metal carabiner clip allows you to attach it to the outside of a backpack or bag for easy access.", "image": "https://luma.enablementadobe.com/content/dam/luma/en/products/gear/fitness-equipment/ug06-lb-0.jpg" }
Luma - Desiree フィットネス Tee { "title": "Desiree Fitness Tee", "text": "When you're too far to turn back, thank yourself for choosing the Desiree Fitness Tee. Its ultra-lightweight, ultra-breathable fabric wicks sweat away from your body and helps keeps you cool for the distance.", "image": "https://luma.enablementadobe.com/content/dam/luma/en/products/women/tops/tees/ws05-yellow_main.jpg" }
Luma - Adrienne Trek ジャケット { "title": "Adrienne Trek Jacket", "text": "You're ready for a cross-country jog or a coffee on the patio in the Adrienne Trek Jacket. Its style is unique with stand collar and drawstrings, and it fits like a jacket should.", "image": "https://luma.enablementadobe.com/content/dam/luma/en/products/women/tops/jackets/wj08-gray_main.jpg" }
Luma - Aero デイリーフィットネス Tee { "title": "Aero Daily Fitness Tee", "text": "Need an everyday action tee that helps keep you dry? The Aero Daily Fitness Tee is made of 100% polyester wicking knit that funnels moisture away from your skin. Don't be fooled by its classic style; this tee hides premium performance technology beneath its unassuming look.", "image": "https://luma.enablementadobe.com/content/dam/luma/en/products/men/tops/tees/ms01-black_main.jpg" }
-
-
最後の手順として、フォールバックオファーを作成する必要があります。これは、顧客が他のオファーの対象でない場合に顧客に送信されるオファーです。
-
オファーを作成 を選択します。
-
新規オファー ダイアログで、「パーソナライズされたオファー」を選択し、「次へ」を選択します。
-
新しいフォールバックオファーを作成 の 詳細 手順で、オファーの 名前 (例:
Luma - Fallback Offer
)を入力し、「次へ」を選択します。 -
新しいフォールバックオファーを作成 の 表示域を追加 手順で、以下を行います。
-
チャネル リストから ![ モバイル] モバイル を選択し、プレースメント リストから モバイル JSON を選択します。
-
コンテンツ に カスタム を選択します。
-
コンテンツを追加 を選択します。
-
パーソナライゼーションを追加 ダイアログで、次の JSON を入力して「保存」を選択します。
code language-json { "title": "Luma", "text": "Your store for sports wear and equipment.", "image": "https://luma.enablementadobe.com/content/dam/luma/en/logos/Luma_Logo.png" }
-
「次へ」を選択します。
-
-
-
新しいフォールバックを作成 オファーの レビュー 手順で、次の操作を行います。
- オファーを確認し、「終了」を選択します。
- オファーを保存 ダイアログで、「保存して承認」を選択します。
これで、次のオファーリストが表示されます。
コレクションの作成
モバイルアプリユーザーにオファーを提示するには、作成した 1 つ以上のオファーで構成されるオファーコレクションを定義する必要があります。
-
Journey Optimizer UI の左パネルで「オファー」をクリックします。
-
上部バーの「コレクション」を選択します。
-
「 作成」を選択します。
-
新規コレクション ダイアログで、コレクションの 名前 を入力(例:
Luma - Mobile App Collection
)し、「静的コレクションを作成」を選択して 次へ をクリックします。 -
Luma - Mobile App Collection で、コレクションに含めるオファーを選択します。 このチュートリアルでは、作成した 5 つのオファーを選択します。 検索フィールドを使用して、Luma などを入力するなどしてリストを簡単にフィルタリングできます。
-
「保存」を選択します。
決定の作成
最後の手順は、1 つ以上の決定範囲とフォールバックオファーを組み合わせた決定を定義することです。
決定範囲は、特定のプレースメント(メール内のHTML、モバイルアプリ内の JSON など)と 1 つ以上の評価条件の組み合わせです。
評価基準は以下の組合せである:
- オファーコレクション
- 実施要件ルール:例えば、は、特定のオーディエンスに対してのみ使用できるオファーです。
- ランキング方法:複数のオファーを選択できる場合、ランク付けにどの方法を使用するか(オファーの優先度、式の使用、AI モデルなど)。
プレースメント、ルール、ランキング、オファー、表示域、コレクション、決定などの相互関係をより深く理解するには、 オファーを作成および管理するための主な手順を参照してください。 このレッスンでは、Journey Optimizer - Decision Management 内で柔軟に意思決定を定義することよりも、意思決定の出力を使用することに重点を置いています。
-
Journey Optimizer UI の左パネルで「オファー」をクリックします。
-
上部バーの「決定」を選択します。
-
「 決定を作成」を選択します。
-
新しいオファー決定を作成 の 詳細 手順で、以下を行います。
- 決定の 名前 を入力します(例:
Luma - Mobile App Decision
)。開始日時 および 終了日時 と入力します。 - 「次へ」を選択します。
- 決定の 名前 を入力します(例:
-
新しいオファーの決定を作成 の 決定範囲を追加 手順で、以下を行います。
-
プレースメント リストから「モバイル JSON」を選択します。
-
評価条件 タイルで、「 追加」を選択します。
-
オファーコレクションを追加 ダイアログで、オファーコレクションを選択します。 例:Luma - Mobile App Collection。
-
「追加」を選択します。
-
-
実施要件 に対して なし が選択され、ランキングメソッド として オファーの優先度 が選択されていることを確認します。
-
「次へ」を選択します。
。
-
-
新しいオファー決定を作成 の フォールバックオファーを追加 手順で、以下を行います。
- フォールバックオファー(Luma - Fallback offer など)を選択します。
- 「次へ」を選択します。
-
新規オファー決定を作成 の 概要 手順で、以下を行います。
- 「完了」を選択します。
- オファーの決定を保存 ダイアログで、「保存して有効化」を選択します。
- 「決定」タブには、決定のステータスが ライブ になります。
一連のオファーで構成されるオファー決定が、使用できるようになりました。 アプリで決定を使用するには、コードで決定範囲を参照する必要があります。
-
Journey Optimizer UI で、「オファー」を選択します。
-
上部バーの「決定」を選択します。
-
決定を選択します(例:Luma - Mobile App Decision)。
-
決定範囲 タイルで、「 コピー」を選択します。
-
コンテキストメニューから、「決定範囲」を選択します。
-
任意のテキストエディターを使用して、後で使用するために決定範囲を貼り付けることができます。 決定範囲の JSON 形式は次のとおりです。
code language-json { "xdm:activityId":"xcore:offer-activity:xxxxxxxxxxxxxxx", "xdm:placementId":"xcore:offer-placement:xxxxxxxxxxxxxxx" }
アプリへのオファーの実装
前のレッスンで説明したように、モバイルタグ拡張機能をインストールしても、設定のみが提供されます。 次に、Optimize SDK をインストールして登録する必要があります。 これらの手順が明確でない場合は、「SDK のインストール の節を参照しください。
-
Xcode で、AEP Optimize がパッケージの依存関係にあるパッケージのリストに追加されていることを確認します。 Swift パッケージマネージャーを参照してください。
-
Xcode プロジェクトナビゲーターで Luma/Luma/AppDelegate に移動します。
-
AEPOptimize
が読み込みのリストに含まれていることを確認します。code language-swift import AEPOptimize
-
Optimize.self
が、登録している拡張機能の配列の一部であることを確認します。code language-swift let extensions = [ AEPIdentity.Identity.self, Lifecycle.self, Signal.self, Edge.self, AEPEdgeIdentity.Identity.self, Consent.self, UserProfile.self, Places.self, Messaging.self, Optimize.self, Assurance.self ]
-
Xcode プロジェクトナビゲーターで Luma/Luma/Model/Data/決定 に移動します。 Journey Optimizer インターフェイスからコピーした決定範囲の詳細を使用して、
activityId
とplacementId
の値を更新します。 -
Xcode プロジェクトナビゲーターで Luma/Luma/Utils/MobileSDK に移動します。
func updatePropositionOD(ecid: String, activityId: String, placementId: String, itemCount: Int) async
関数を検索します。 次のコードを追加します。code language-swift // set up the XDM dictionary, define decision scope and call update proposition API Task { let ecid = ["ECID" : ["id" : ecid, "primary" : true] as [String : Any]] let identityMap = ["identityMap" : ecid] let xdmData = ["xdm" : identityMap] let decisionScope = DecisionScope(activityId: activityId, placementId: placementId, itemCount: UInt(itemCount)) Optimize.clearCachedPropositions() Optimize.updatePropositions(for: [decisionScope], withXdm: xdmData) }
この関数:
-
オファーを提示する必要があるプロファイルを識別する ECID を含む、XDM 辞書
xdmData
ールを設定します。 -
Journey Optimizer - Decision Management インターフェイスで定義した決定に基づくオブジェクトで、 決定を作成からコピーした決定範囲を使用して定義される
decisionScope
を定義します。 Luma アプリは、次の JSON 形式に基づいてスコープパラメーターを取得する設定ファイル(decisions.json
)を使用します。code language-swift "scopes": [ { "name": "name of the scope", "activityId": "xcore:offer-activity:xxxxxxxxxxxxxxx", "placementId": "xcore:offer-placement:xxxxxxxxxxxxxxx", "itemCount": 2 } ]
ただし、任意の種類の実装を使用して、最適化 API が適切なパラメーター(
activityId
、placementId
およびitemCount
)を取得し、実装に対して有効なDecisionScope
オブジェクトを構築できます。
参考までに、decisions.json
ファイルのその他のキー値は将来の使用を目的としており、現在このレッスンおよびチュートリアルの一部として使用されているものではありません。 -
は 2 つの API (
Optimize.clearCachePropositions
とOptimize.updatePropositions
)を呼び出します。 これらの関数は、キャッシュされた提案をすべてクリアし、このプロファイルの提案を更新します。
-
-
Xcode プロジェクトナビゲーターで、Luma/Luma/Views/Personalization/EdgeOffersView に移動します。
func onPropositionsUpdateOD(activityId: String, placementId: String, itemCount: Int) async
関数を見つけて、この関数のコードを調べます。 この関数の最も重要な部分は、Optimize.onPropositionsUpdate
API 呼び出しです。- (Journey Optimizer - Decision Management で定義した)決定範囲に基づいて、現在のプロファイルの提案を取得します。
- 提案からオファーを取得します。
- オファーのコンテンツを展開して、アプリで適切に表示できるようにします。
- トリガーは、オファーが表示されたことを知らせるイベントをEdge Networkに送り返す、オファーの
displayed()
のアクションです。
-
EdgeOffersView のまま、次のコードを
.onFirstAppear
修飾子に追加します。 このコードにより、オファーを更新するコールバックが 1 回だけ登録されるようになります。code language-swift // Invoke callback for offer updates Task { await self.onPropositionsUpdateOD(activityId: decision.activityId, placementId: decision.placementId, itemCount: decision.itemCount) }
-
EdgeOffersView のまま、次のコードを
.task
修飾子に追加します。 このコードは、ビューが更新されると、オファーを更新します。code language-swift // Clear and update offers await self.updatePropositionsOD(ecid: currentEcid, activityId: decision.activityId, placementId: decision.placementId, itemCount: decision.itemCount)
アプリを使用した検証
-
を使用して、シミュレータまたは Xcode の物理デバイスでアプリを再構築して実行します。
-
「Personalisation」タブに移動します。
-
Edge Personalisation を選択します。
-
上部までスクロールすると、DECISION LUMA - MOBILE APP DECISION タイルで定義したコレクションから 2 つのランダムオファーが表示されます。
{width="300"}
すべてのオファーに同じ優先度を指定し、決定のランキングが優先度に基づいているので、オファーはランダムです。
Assurance での実装の検証
Assurance でオファー実装を検証するには、次の手順に従います。
-
シミュレーターまたはデバイスを Assurance に接続するには、「 設定手順」セクションを確認してください。
-
左側のパネルで 設定 を選択し、{6 の下の レビューとシミュレーション の横にある「追加 を選択します。
-
「保存」を選択します。
-
左パネルで レビューとシミュレート を選択します。 データストリームの設定と、アプリケーションでの SDK の設定の両方が検証されます。
-
上部のバーで「リクエスト」を選択します。 オファー リクエストが表示されます。
-
「シミュレート」タブや「イベントリスト タブを調べて、さらに機能を追加したり、Journey Optimizer Decision Management の設定を確認したりできます。
次の手順
これで、Journey Optimizer - Decision Management 実装への機能追加を開始するためのすべてのツールが用意できました。 例:
- オファーに様々なパラメーター(優先度、キャッピングなど)を適用
- アプリでプロファイル属性(「プロファイル 🔗 を参照 を収集し、これらのプロファイル属性を使用してオーディエンスを構築します。 次に、これらのオーディエンスを決定の実施要件ルールの一部として使用します。
- 複数の決定範囲を組み合わせます。
次のトピック:A/B テストの実行