Engage SDKパッケージ(サーバーセットクッキー)を使ってNext.jsアプリを統合する
このページの翻訳はAIによって自動的に行われました。可能な限り正確な翻訳を心掛けていますが、原文と異なる表現や解釈が含まれる場合があります。正確で公式な情報については、必ず英語の原文をご参照ください。
!注もし組織にJSS Next.jsやJSS AngularアプリケーションがSitecoreAIに接続されている場合は、Sitecore Cloud SDKを使ってSitecoreAIサイトにSitecore CDP関連機能を実装してください。また、Cloud SDKとEngage SDKの比較も参照してください。
このトピックでは、Engage SDKパッケージを使ってNext.jsアプリを統合する方法を説明します。このウォークスルーでは サーバーセットクッキーを使用します。 srcフォルダを使用していると仮定しますが、必ずしも使う必要はありません。
このウォークスルーでは、以下の方法を説明します:
!注始める前に
統合用のNext.jsアプリを用意しましょう。このウォークスルーはNext.jsバージョン12、13、14.2.5でテストされており、Pages RouterとApp Routerの両方で行われました。
サーバー側で@sitecore/Engageをインストールして初期化してください
アプリを統合する最初のステップは、ウェブサーバーに @sitecore/engageパッケージをインストールし、初期化することです。このステップでは、サーバーからクッキーを設定し、クライアントに送信します。
サーバー側でパッケージをインストールし、初期化するには:
-
ターミナルでNext.jsアプリのルートフォルダを開きます。
-
以下のコマンドを実行してEngage SDKをインストールしてください:
npm install @sitecore/engage
-
コードエディターでNext.jsアプリのルートフォルダを開きます。
-
srcフォルダ内に「middleware.js」というファイルを作成します。
-
middleware.jsに以下のコードを貼り付けます:
import { NextResponse } from 'next/server'; import { initServer } from '@sitecore/engage';
export async function middleware(request) { const response = NextResponse.next();
try { const engageSettings = { clientKey: "<client_key_PLACEHOLDER>", targetURL: "<stream_api_target_endpoint_PLACEHOLDER>", pointOfSale: "<point_of_sale_PLACEHOLDER>", cookieDomain: "<cookie_domain_PLACEHOLDER>", cookieExpiryDays: 365, forceServerCookieMode: true };
const engageServer = initServer(engageSettings); await engageServer.handleCookie(request, response); } catch (error) { console.error(error); }
return response; };
プレースホルダーの値は、Sitecore CDPインスタンスの必要な詳細に置き換えてください。
!重要クッキー同意本番環境では、サイト訪問者が同意を得た場合のみEngage SDKを読み込み、クッキーを設定してください。サイト訪問者がクッキーを受け入れているかどうかを確認する コード例 も参照してください。
!重要**コンテンツセキュリティポリシー(CSP)**Engage SDKスクリプトが読み込まれるようにするために、コンテンツ セキュリティポリシー(CSP)に以下の内容を追加する必要があるかもしれません:
-
Stream APIのターゲットエンドポイント。
-
ウェブパーソナライゼーションを実行していて、環境がAP地域、EU地域、または米国地域であれば:
https://d35vb5cccm4xzp.cloudfront.net
- ウェブパーソナライゼーションを使い、環境が JP地域であれば:
この脚本:
- サーバー上のミドルウェア機能で initServer() 関数を使ってEngage SDKを初期化します。
- engageSettingsオブジェクトのSitecore CDPインスタンスやクッキー設定の詳細を集め、そのオブジェクトをEngageServer.handleEngageCookie()関数に渡します。
- サーバーからクッキーを設定します。
-
クライアント側で @sitecore/engageを初期化してください
ウェブサーバーで @sitecore/engageパッケージをインストールし初期化した後、クライアント側でパッケージを初期化します。このステップでは、サーバーからクッキーを受け取り、それをウェブブラウザに保存します。
クライアント側でパッケージを初期化するには:
-
ルーターの種類によります:
-
Pages Routerを使う場合は、pagesフォルダのindex.jsファイルで、ReactからuseEffectをインポートし、@sitecore/engageからinitしてください:
import { useEffect } from "react"; import { init } from "@sitecore/engage";
-
App Routerを使う場合は、appフォルダのpage.jsファイルで、ReactからuseEffect、@sitecore/engageからinitしてください。また、ファイルの上部、すべてのインポートの上に"use client"指示を追加してください:
"use client"; import { useEffect } from "react"; import { init } from "@sitecore/engage";
-
-
Home()関数の上に、engageSettingsというオブジェクトを作成します。
const engageSettings = { clientKey: "<client_key_PLACEHOLDER>", targetURL: "<stream_api_target_endpoint_PLACEHOLDER>", pointOfSale: "<point_of_sale_PLACEHOLDER>", forceServerCookieMode: true, includeUTMParameters: true, webPersonalization: true /* boolean or object. See Settings object for all options. Set to `false` if you don't have Personalize. */ };
プレースホルダーの値は、Sitecore CDPインスタンスの必要な詳細に置き換えてください。
-
Home()関数で空の非同期関数loadEngage()を作成し、Effect HookでloadEngage()を呼び出します。Effect Hookを使うべきです。なぜなら、Engage APIを読み込む前にwindowオブジェクトが存在する必要があるからです。次の手順では、loadEngage()内のコードを更新してEngage APIを読み込み、VIEWイベントの送信を開始します。
export default function Home() { const loadEngage = async () => { // Load Engage API // Send VIEW events };
useEffect(() => { loadEngage(); }, );
return (<></>) };
初めてのVIEWイベントをSend
次に、loadEngage() 関数内のコードを更新して、データの収集と送Sitecore CDPを始めます。VIEWイベントはウェブページが読み込まれるたびにトリガーされるため、VIEWイベントを送信します。
VIEWイベントを送信するには:
-
loadEngage()関数では、Engage APIをengageSettingsinit()関数に渡してEngageを読み込みます。init()関数は非同期なので、返される値を待つ必要があります。
const loadEngage = async () => { // Load Engage API const engage = await init(engageSettings);
// Send VIEW events };
本番環境では、init() 関数を一度呼び出し、その後React ContextやReduxなどの州管理ソリューションを使ってアプリ全体で共有します。
-
loadEngage()関数で、Eng APIを読み込んだ後、engage.pageView()関数を呼び出してVIEWイベントデータを送ります:
const loadEngage = async () => { // Load Engage API const engage = await init(engageSettings);
// Send VIEW events engage.pageView({ channel: "<channel_PLACEHOLDER>", currency: "<currency_PLACEHOLDER>" }); };
プレースホルダーの値は 、あなたの組織固有のイベント詳細に置き換えてください。
-
loadEngage()関数のengage.pageView()関数の下に、テストおよびデバッグ目的のみで、ブラウザIDをコンソールにログします:
const loadEngage = async () => { // Load Engage API // ...
// Send VIEW events // ...
// For testing and debugging purposes only console.log("Copy-paste the following line into Sitecore CDP > Guests > Search field:"); console.log(engage.getBrowserId()); };
次の手順でブラウザIDを使ってSitecore CDP内のVIEWイベントを見つけます。
-
端末でnpm run devを入力してNext.jsアプリを起動します。ウェブページが読み込まれると、VIEWイベントがトリガーされ、イベントデータが送信されます。
Sitecore CDPがあなたのVIEWイベントをキャプチャしたか確認してください
VIEWイベントを送信した後、Sitecore CDPにログインしてイベントを見つけます。
Sitecore CDPがあなたのVIEWイベントをキャプチャしたことを確認するために:
-
ウェブブラウザのコンソールで、次のようなテキストを見つけてください:
a38b230c-11eb-4cf9-8d5d-274e9f344925
-
テキストをコピーしてください。
-
Sitecore CDPで **ゲストをクリックし、**検索ドロップダウンで ブラウザIDを選択し、コピーしたテキストを検索欄に貼り付けます。
匿名のゲストが展示している。

このゲストは、さっきあなたがアプリを読み込んでいたことです。次に、このゲストに関連付けられたVIEWイベントを見つけます。
-
ゲストをクリックしてください。ゲストプロフィールが表示されます。
-
ゲストプロフィールページでイベント ビューアーをクリックします。このゲストに関連するイベントのリストが表示されます。リストにはVIEWイベントが含まれています。これは前回の手順でトリガーされたイベントです。
今後のステップ
現在、あなたのアプリをSitecore CDPと無事に統合しました。アプリからイベントを送信し、Sitecore CDPがリアルタイムでユーザーデータをキャプチャしていることを確認しました。
次に、次のことができます:
- Send他の行動データ、例えば IDENTITYイベント や カスタムイベントなど。
- ユーザーがサイト上の商品やショッピングカートとやり取りする際に取引データをSendします。
- もし経験があれば、 Sitecore Personalizeを体験したり実験をしたりすることができます。