1. REST APIを用いた統合

UUIDを使ってサイト訪問者を追跡する

日本語翻訳に関する免責事項

このページの翻訳はAIによって自動的に行われました。可能な限り正確な翻訳を心掛けていますが、原文と異なる表現や解釈が含まれる場合があります。正確で公式な情報については、必ず英語の原文をご参照ください。

Sitecore Search APIに連絡する際は、各サイト訪問者ごとにユニバーサルユニーク識別子(uuid)を作成して送信することをお勧めします。 uuidは、メールアドレスや会員名IDなどの個人識別情報(PII)を含まない、固有のユーザー IDです。Sitecore Searchはuuidを使って複数のセッションにまたがるリクエストを訪問者に紐付け、パーソナライズされた検索結果を提供し、正確な分析を生成しています。

Sitecore Search、ハイフンで区切られた7部構成のUUIDを作成する必要があります。形式は以下の通りです。

------

各部品は以下の通りです:

  • これは定数、つまりドメインIDです。ドメイン名のドロップダウンリストで、SearchでドメインIDを確認できます。例えば、 159271561。
  • は4部構成の弦です。長さの要件はありません。シンプルさと後方互換性のために、ドメイン内のすべての訪問者でこれらを一定に保つことを強くお勧めします。例としてはy-d-7-nやa-b-c-dがあります。
  • はサイト訪問者を一意に識別するための少なくとも20文字のランダムな英数字文字列です。例えば、 f5tdhddqwvywv7b9g2vy。
  • はUUID作成時のタイムスタンプ(ミリ秒単位)です。例えば、 1664852644904。

以下はサンプルuuid: 159271561-a-b-c-d-f5tdhddqwvywv7b9g2vy-1664852644904

!注カスタムUUIDが上記の形式に従わない場合は、カスタムのフリーフォームIDがSearchリクエストでcontext.user.uuidではなく、context.user.user_idで渡されることを確認してください。

例えば、以下のシナリオでuuidを作成して永続化したい場合です。

  • クッキーを使っています。
  • UUIDをクッキーに保存したいのです。
  • スクリプト内でSearchドメインIDを使ってUUIDを生成します。

このサンプルコードのスニペットはUUIDの生成方法を示しています:

const generateUUID = (domainId) => { const uuidx = 'xx-xx-4x-1p-'; // pattern of prefix to user id uuid = uuidx.replace(/x /g, () => digit2string((Math.random() * 36) | 0)); for (let i = 0; i < 5; i++) { uuid += ('0000' + ((Math.random() * 1679615) | 0).toString(36)).slice(-4); } let value = domainId; value += '-' + uid + '-' + Date.now(); return value; }

const getDomainId = () => { let uuid = getCookie('uuid'); if (uuid) { return uuid; } return generateUUID('')

}

このサンプルコードのスニペットは、クッキー内でUUIDを永続化する方法を示しています:

/** * @description: Sets a cookie on the browser. Refer to https://www.w3schools.com/js/js\_cookies.asp * @param {string} cname: Cookie name * @param {string} cvalue: Cookie value * @param {number} exdays: Expiry date in days */ function setCookie(cname, cvalue, exdays) { const d = new Date(); d.setTime(d.getTime() + (exdays*24*60*60*1000)); let expires = "expires="+ d.toUTCString(); document.cookie = cname + "=" + cvalue + ";" + expires + ";path=/"; } /** * @description: Gets a cookie already in browser. Returns empty if not exists. * Refer to https://www.w3schools.com/js/js\_cookies.asp * @param cname * @returns {string} */ function getCookie(cname) { let name = cname + "="; let decodedCookie = decodeURIComponent(document.cookie); let ca = decodedCookie.split(';'); for(let i = 0; i <ca.length; i++) { let c = cai ; while (c.charAt(0) === ' ') { c = c.substring(1); } if (c.indexOf(name) === 0) { return c.substring(name.length, c.length); } } return undefined; } /** * @description: Converts a digit to the string that belongs to. * @param {number} i: Number to convert * @returns {string} */ function digit2string(i) { // 0-9 -> 0-9; 10-35 > a-z; 36-61 -> A-Z return String.fromCharCode(i < 10 ? i + 48 : i < 36 ? i + 87 : i + 29); }

この記事を改善するための提案がある場合は、 お知らせください!