[Alpha]{class="badge informative"}

personalization (Server SDK)

このページでは、Server SDK sendEvent メソッドのpersonalizationについて説明します。 Web SDKについては、personalizationを参照してください。

sendEventのpersonalization オブジェクトは、提案​とも呼ばれるパーソナライズの決定を、Adobe Target、Adobe Journey Optimizer、およびOffer Decisioningからリクエストします。 サーバーSDKは、sendEventの結果に提案を返します。これにより、サーバーはそれらを使用したり、ブラウザーに渡したりできます。

const { propositions = [] } = await visitor.sendEvent({
  xdm: {
    eventType: "decisioning.propositionFetch",
    identityMap: {
      Email: [{ id: "visitor@example.com", primary: true }]
    }
  },
  personalization: {
    decisionScopes: ["hero-banner"],
    surfaces: ["web://example.com/home"]
  }
});

このオプションは、インスタンスにPersonalization コンポーネントが含まれている場合にのみ使用できます。このコンポーネントには、createInstanceがデフォルトで含まれています。

personalization.decisionScopes

decisionScopes プロパティは文字列の配列です。 各項目は、パーソナライズされたコンテンツが必要な場所、コンテキスト、またはプレースメントを特定します。 Adobe Targetでは、各意思決定範囲がmboxにマッピングされます。 Adobe Journey OptimizerとOffer Decisioningでは、各意思決定範囲が意思決定ベースの配置にマッピングされます。

personalization: {
  decisionScopes: ["hero-banner", "cart-offer"]
}

personalization.surfaces

surfaces プロパティは、​ サーフェス URI文字列の配列です。 各サーフェスは、web://example.com/homeやweb://example.com/home#heroなど、Adobe Journey Optimizer コードベースのエクスペリエンスを必要とするチャネル、ページ、またはコンポーネントを特定します。

personalization: {
  surfaces: ["web://example.com/home", "web://example.com/home#hero"]
}

Web SDKは、ブラウザーで現在のページのサーフェスを自動的にリクエストします。 サーバーには現在のページがないので、Server SDKはリストしたサーフェスのみをリクエストします。 同様に、SDKは、ページをレンダリングするときにWeb SDKが要求するページ全体の意思決定範囲を自動的にリクエストしません。

トップレベル decisionScopes top-level-decision-scopes

personalization オブジェクト外のsendEvent オプションの最上位レベルにあるdecisionScopes配列で決定範囲を渡すこともできます。 SDKは、両方の配列を組み合わせ、重複を削除します。

await visitor.sendEvent({
  xdm: {
    eventType: "decisioning.propositionFetch",
    identityMap: {
      Email: [{ id: "visitor@example.com", primary: true }]
    }
  },
  decisionScopes: ["hero-banner"]
});

結果の提案 result

パーソナライゼーションをリクエストする場合、sendEventの結果にはpropositions配列が含まれます。 各提案には、id、scope、scopeDetails、およびitemsの配列が含まれます。 各項目には、HTML、JSON、DOM アクションなど、その内容を説明するschemaがあります。

SDKは提案をレンダリングせず、提案が表示されたことを記録しません。 次のいずれかの方法で使用します。

  • ブラウザーでレンダリングします。 サーバーが返すページに提案を含め、それをWeb SDK applyPropositions コマンドに渡してレンダリングします。 次に、表示イベントで表示された提案を記録します。 ​ ハイブリッドパーソナライゼーション ​を参照してください。
  • サーバー上でそれらをレンダリングします。 各アイテムのコンテンツを利用して、反応を構築します。 次に、表示イベントを送信して、表示した提案を記録します。
await visitor.sendEvent({
  xdm: {
    eventType: "decisioning.propositionDisplay",
    identityMap: {
      Email: [{ id: "visitor@example.com", primary: true }]
    },
    _experience: {
      decisioning: {
        propositions: renderedPropositions.map(({ id, scope, scopeDetails }) => ({
          id,
          scope,
          scopeDetails
        })),
        propositionEventType: { display: 1 }
      }
    }
  }
});

サーバーに影響しないオプション no-effect

SDKでは、ブラウザー実装とコードを共有できるように、次のプロパティを受け入れますが、それらを無視します。

  • personalization.sendDisplayEvent
  • personalization.includeRenderedPropositions
  • personalization.defaultPersonalizationEnabled
  • personalization.decisionContext

SDKではコンテンツがレンダリングされないため、sendEventのrenderDecisions オプションも影響しません。

recommendation-more-help
experience-platform-help-collection