[Alpha]{class="badge informative"}

Servizi della piattaforma

Il Server SDK condivide la propria logica di base con il Web SDK. Qualsiasi elemento che dipende dall’ambiente, ad esempio l’invio di richieste di rete, la lettura di cookie o l’archiviazione di dati, viene sottoposto a un set di servizi Platform. SDK include servizi predefiniti che utilizzano solo API standard Web, in modo che funzionino in qualsiasi runtime che soddisfi i requisiti. Puoi sostituirli con una tua implementazione.

La maggior parte delle implementazioni non deve sostituire alcun servizio. Il motivo più comune per sostituirne uno è quello di fornire un servizio cookie, in modo che un visitatore mantenga la stessa identità e lo stesso consenso in tutte le richieste.

Dove passare i servizi where

È possibile trasmettere i servizi in due posizioni:

  • createInstance (o createCustomInstance): passa un oggetto con una proprietà platformServices. I servizi si applicano all’istanza di livello superiore. Gli handle creati da forRequest riutilizzano anche i servizi network, runtime, legacy e globals, ma non i servizi cookie e storage, perché contengono i dati dei visitatori.
  • forRequest: passa i servizi direttamente nell’oggetto forRequest, accanto a request. Questi servizi si applicano solo a tale handle e hanno la priorità rispetto ai servizi passati a createInstance.
import { createInstance } from "@adobe/alloy-node";

// Applies to the top-level instance. Handles reuse network, runtime, legacy, and globals.
const alloy = createInstance({
  platformServices: {
    runtime: myRuntimeService
  }
});

await alloy.configure({
  datastreamId: "ebebf826-a01f-4458-8cec-ef61de241c93",
  orgId: "ADB3LETTERSANDNUMBERS@AdobeOrg",
  edgeCredentials: {
    clientId: process.env.ADOBE_CLIENT_ID,
    clientSecret: process.env.ADOBE_CLIENT_SECRET,
    scopes: process.env.ADOBE_SCOPES.split(",")
  }
});

// Applies only to this handle
const visitor = alloy.forRequest({
  request: req,
  cookie: myCookieServiceForThisVisitor,
  storage: myStorageServiceForThisVisitor
});

Le interfacce per ogni servizio sono definite in packages/core/src/services/types.ts nell’archivio adobe/alloy su GitHub. Quando sostituisci un servizio, l’implementazione deve fornire tutti i metodi possibili nell’interfaccia.

Servizi disponibili services

Servizio
Comportamento predefinito
Ambito quando passato a createInstance
cookie
Memorizza i cookie.
Solo istanza di primo livello
storage
Memorizza i dati in memoria.
Solo istanza di primo livello
network
Invia richieste con la funzione fetch globale e inoltra le intestazioni del visitatore.
Istanza di primo livello e ogni handle
runtime
Utilizza le funzioni globali setTimeout, clearTimeout, atob, btoa, TextEncoder, TextDecoder e Date.now.
Istanza di primo livello e ogni handle
legacy
Non fa niente. In un browser, questo servizio si connette alla libreria precedente del servizio ID visitatori, che non esiste su un server.
Istanza di primo livello e ogni handle
globals
Restituisce valori vuoti. In un browser, questo servizio legge i dettagli della pagina, ad esempio l’URL della pagina.
Istanza di primo livello e ogni handle

SDK memorizza l’identità di ogni visitatore (ECID) e le preferenze di consenso nei cookie. In un server legge e scrive tali cookie tramite il servizio cookie. Il servizio cookie deve fornire i seguenti metodi:

Metodo
Descrizione
get(name)
Restituisce il valore del cookie denominato o undefined se non esiste.
getAll()
Restituisce un oggetto che contiene ogni nome e valore di cookie.
set(name, value, options)
Crea o aggiorna un cookie.
remove(name, options)
Elimina un cookie.
withConverter(converter)
Restituisce un servizio cookie che codifica e decodifica i valori con il convertitore specificato.

Il servizio cookie predefinito mantiene i cookie solo in memoria:

  • Su un handle forRequest senza un servizio cookie, l’archivio inizia vuoto per ogni richiesta, quindi il visitatore ottiene un nuovo ECID su ogni richiesta.
  • Nell’istanza di livello principale, un archivio dura per la durata del processo ed è condiviso da ogni chiamata effettuata in tale istanza.

SDK non include un servizio cookie che legge l’intestazione della richiesta Cookie del visitatore e scrive Set-Cookie intestazioni di risposta. Per mantenere l’identità e il consenso di un visitatore in tutte le richieste, devi fornire la tua implementazione e trasmetterne una nuova a forRequest per ogni richiesta.

Servizio di archiviazione storage

SDK utilizza il servizio storage per ricordare alcuni valori, ad esempio se il debug è attivato con setDebug, che ha già inviato le preferenze di consenso setConsent, e l’ID client utilizzato da Adobe Experience Platform Assurance per convalidare le richieste. Il servizio di archiviazione predefinito mantiene i dati in memoria.

Ogni handle forRequest ottiene un nuovo servizio di archiviazione vuoto, a meno che non ne venga passato uno. Se usi Assurance e vuoi che l’ID client Assurance di un visitatore resti lo stesso in tutte le richieste, passa un servizio storage per quel visitatore a forRequest.

Servizio di rete network

Il servizio di rete predefinito invia richieste con la funzione globale fetch. Quando si passa un request a forRequest, vengono aggiunte anche le intestazioni del visitatore a ogni richiesta. Vedi Intestazioni contestuali e inoltrate.

Per sostituire il servizio di rete, passare una funzione che riceve il logger di SDK e restituisce un servizio di rete, invece di passare l’oggetto servizio stesso:

const alloy = createInstance({
  platformServices: {
    network: (logger) => myNetworkService
  }
});
IMPORTANT
Se sostituisci il servizio di rete, SDK non inoltra più le intestazioni del visitatore da request che passi a forRequest. Il servizio di rete è responsabile di tutte le intestazioni che invia.
SDK chiama il metodo sendFetchRequest(url, body, headers) del servizio con un oggetto headers che contiene le intestazioni Authorization, x-api-key e x-gw-ims-org-id per le richieste autenticate. Invia sempre queste intestazioni. In caso contrario, Edge Network rifiuta sendEvent richieste.
recommendation-more-help
experience-platform-help-collection