カート統合
Roktとのカート統合
Roktの配置カート変更を購読する
取引中のカート統合は、顧客がRoktのアップセル機会を選択するたびに、フロントエンドに通知し、顧客のカートにその変更を反映させることを可能にします。これは、顧客がRokt側で選択したアイテムに変更を加えるたびにトリガーされる配置のV2_CART_ITEM_UPDATEDメッセージをリッスンすることで実現されます。
このメッセージに購読するには、Selection.onメソッドを使用して、選択された配置からのメッセージをリッスンすることができます。これらのメッセージのペイロードは、UpdateCartItemPlacementMessageBodyで説明されています。
さらに、顧客にオファーの選択をより適切にカスタマイズするために、属性を渡して追加情報を提供できます。一部の場合、カタログプロバイダーによっては、Roktがカタログアイテムを取得するために追加の情報が必要です。
// (...) Roktスクリプトを読み込み、Integration Launcherインスタンスを作成
const selection = await launcher.selectPlacements({
attributes: {
// Roktがカタログアイテムを取得するために必要な属性
eventId: "eventId",
venueName: "venueName",
// その他の追加属性
email: "email",
},
});
selection.on("V2_CART_ITEM_UPDATED").subscribe((event) => {
// ここにカートの変更を反映させるためのコードを提供する必要があります
clientCart.updateCart(event.body.cartItem, event.body.oldCartItem);
});
Rokt側にカートの更新を反映させる
あなたのカートの変更をRokt側に反映させる必要がある場合、Placementにメッセージを送信することでそれを行うことができます。ご便利のために、Selection.sendメソッドを使用して、選択された各Placementにメッセージを送信できます。影響を受けるRoktのPlacementは、適切にリスンしてアクションを実行します。このメッセージのペイロードは、UpdateCartItemPartnerMessageBodyに記載されています。
設定が許可していない場合、特定の変更は実行されないことにご注意ください。たとえば、強制的なアップセルに最小数量が1である場合、Placementがパートナーからその選択を削除するメッセージを受信すると、Placementはそれを実行しません。
ただし、Placementからパートナーに必ずメッセージが返され、ループが閉じられ、RoktのPlacementカートの状態がパートナーと共有され、両方のカートが一致していることが確認されます(上のセクションを参照してください)。
const selection = await launcher.selectPlacements({
attributes: {
// Roktがカタログアイテムを取得するために必要な属性
},
});
selection.send("V2_UPDATE_CART_ITEM", payload);
配置空き状況の確認
この拡張機能は、バックエンドがRoktに呼び出しを行って、利用可能な配置があるかどうかを確認することを含みます。次に、アップセルページを表示するかスキップするかを決定できます。このシナリオでは、ページはバックエンドで既に生成されている可能性が高く、初回の呼び出しで顧客とトランザクションデータをRoktに含めています。その呼び出しが既にセッションIDを生成している可能性があるため、RoktのJavaScript APIでは、Rokt.createLauncherメソッドにセッションIDを含める必要があります。そうすることで、両方の相互作用が識別とパフォーマンスの理由でペアリングされます。
// (...) Roktスクリプトの読み込み
const launcher = await Rokt.createLauncher({
accountId: "rokt-account-id",
sessionId: "uniqueSessionId", // Roktバックエンドによって生成されたセッションID
});
// (...) 統合ロジックの残り