Overzicht van stappen

Stel dat een gebruiker een URL invoert in een browser die een aanvraag naar uw webserver verzendt. Bij het voldoen aan dat verzoek:

  1. De server leest de bezoeker en doelcookies uit de aanvraag.

  2. De server roept de getOffers van de Target SDK, met vermelding van de bezoeker en doelcookies, indien beschikbaar.

  3. Wanneer de getOffers aanroep is uitgevoerd, waarden voor targetCookie en visitorState worden gebruikt.

    1. Een cookie wordt ingesteld op de reactie met waarden die zijn genomen van targetCookie. Dit doet u met de opdracht Set-Cookie responsheader, die de browser opgeeft het doelcookie te blijven gebruiken.
    2. Er wordt een HTML-reactie voorbereid die wordt geïnitialiseerd VisitorAPI.js en passeert visitorState van de doelrespons.
  4. De HTML-reactie wordt in de browser geladen…

    1. VisitorAPI.js is opgenomen in de koptekst van het document.
    2. Bezoeker-API is geïnitialiseerd met visitorState van de getOffers SDK-reactie. Hierdoor wordt het bezoekerscookie ingesteld in de browser, zodat deze op volgende aanvragen naar de server wordt verzonden.

Voorbeeldcode

Het volgende codevoorbeeld voert elk van de hierboven geschetste stappen uit. Elke stap wordt in de code weergegeven als een inlineopmerking naast de implementatie.

Node.js

Dit voorbeeld is afhankelijk van express, een Node.js-webframework.

const fs = require("fs");
const express = require("express");
const cookieParser = require("cookie-parser");
const Handlebars = require("handlebars");
const TargetClient = require("@adobe/target-nodejs-sdk");

const CONFIG = {
  client: "acmeclient",
  organizationId: "1234567890@AdobeOrg",
  timeout: 10000,
  logger: console,
};
const targetClient = TargetClient.create(CONFIG);
const TEMPLATE = fs.readFileSync(`${__dirname}/index.handlebars`).toString();
const handlebarsTemplate = Handlebars.compile(TEMPLATE);

Handlebars.registerHelper("toJSON", function (object) {
  return new Handlebars.SafeString(JSON.stringify(object, null, 4));
});

const app = express();
app.use(cookieParser());
app.use(express.static(__dirname + "/public"));

app.get("/", async (req, res) => {
  // The server reads the visitor and target cookies from the request.
  const visitorCookie =
    req.cookies[
      encodeURIComponent(
        TargetClient.getVisitorCookieName(CONFIG.organizationId)
      )
    ];
  const targetCookie = req.cookies[TargetClient.TargetCookieName];
  const address = { url: req.headers.host + req.originalUrl };

  const targetRequest = {
    execute: {
      mboxes: [
        { name: "homepage", index: 1, address },
        { name: "SummerShoesOffer", index: 2, address },
        { name: "SummerDressOffer", index: 3, address }
      ],
    },
  };

  res.set({
    "Content-Type": "text/html",
    Expires: new Date().toUTCString(),
  });

  try {
    // The server makes a call to the `getOffers` method of the Target SDK specifying the visitor and target cookies if available.
    const targetResponse = await targetClient.getOffers({
      request: targetRequest,
      visitorCookie,
      targetCookie,
    });

    // When the `getOffers` call is fulfilled, values for `targetCookie` and `visitorState` from the response are used.
    // A cookie is set on the response with values taken from `targetCookie`.  This is done using the `Set-Cookie` response header which tells the browser to persist the target cookie.
    res.cookie(
      targetResponse.targetCookie.name,
      targetResponse.targetCookie.value,
      { maxAge: targetResponse.targetCookie.maxAge * 1000 }
    );

    // An HTML response is prepared that initializes VisitorAPI.js and passes in `visitorState` from the target response.
    const html = handlebarsTemplate({
      organizationId: CONFIG.organizationId,
      targetResponse,
    });

    res.status(200).send(html);
  } catch (error) {
    console.error("Target:", error);
    res.status(500).send(error);
  }
});

app.listen(3000, function () {
  console.log("Listening on port 3000 and watching!");
});
<!doctype html>
<html>
<head>
  <meta charset="UTF-8">
  <title>ECID (Visitor API) Integration Sample</title>

  <!-- VisitorAPI.js is included in the document header. -->
  <script src="VisitorAPI.js"></script>
  <script>
    // VisitorAPI is initialized with visitorState from the `getOffers` SDK response. This will cause the visitor cookie to be set in the browser so it will be sent to the server on subsequent requests.
    Visitor.getInstance("{{organizationId}}", {serverState: {{toJSON targetResponse.visitorState}} });
  </script>
</head>
<body>
  <h1>response</h1>
  <pre>{{toJSON targetResponse}}</pre>
</body>
</html>