1. REST APIを使用した統合

UUIDを使用したサイト訪問者の追跡

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

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

Sitecore Search APIに電話をかけるときは、サイト訪問者ごとにユニバーサル一意識別子(uuid)を作成して送信することをお勧めします。 uuidは、電子メールやメンバーシップIDなどの個人を特定できる情報(PII)を含まない一意のユーザー IDです。Sitecore Searchはuuidを使用して、複数のセッションにわたってリクエストを訪問者に結び付け、パーソナライズされた検索結果を提供し、正確な分析を生成できるようにします。

Sitecore Search、次の形式で7つの部分からなるUUIDを作成する必要があります。

<part1>-<part2>-<part3>-<part4>-<part5>-<part6>-<part7>

さまざまな部分は次のとおりです。

  • <part1> は定数であり、ドメインIDです。ドメイン名のドロップダウンでドメインIDをSearchで確認できます。たとえば、159271561です。

  • <part2><part5>を通すのは4部構成の文字列です。長さの要件はありません。シンプルさと下位互換性のために、ドメイン内のすべての訪問者でこれらを一定に保つことを強くお勧めします。この例としては、y-d-7-na-b-c-dがあります。

  • <part6> は、サイト訪問者を一意に識別するための20文字以上のランダムな英数字文字列です。たとえば、f5tdhddqwvywv7b9g2vyです。

  • <part7> は、UUIDが作成されたときのタイムスタンプ (ミリ秒単位) です。

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

たとえば、次のシナリオでuuidを作成して永続化するとします。

  • クッキーを使用します。

  • UUIDをCookieに保存します。

  • スクリプトで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('<Fill this with your Search domain ID>')

}

このサンプル コード スニペットは、Cookieに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 = ca[i
        ];
        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);
}
この記事を改善するための提案がある場合は、 お知らせください!