Specifiche del modello per le destinazioni create con Destination SDK
Utilizza la parte specifica del modello della configurazione del server di destinazione per configurare la modalità di formattazione delle richieste HTTP inviate alla destinazione.
In una specifica del modello è possibile definire come trasformare i campi degli attributi del profilo tra lo schema XDM e il formato supportato dalla piattaforma.
Le specifiche del modello fanno parte della configurazione del server di destinazione per le destinazioni in tempo reale (streaming).
Per capire dove questo componente si inserisce in un’integrazione creata con Destination SDK, consulta il diagramma nella documentazione delle opzioni di configurazione oppure consulta la guida su come utilizzare Destination SDK per configurare una destinazione di streaming.
È possibile configurare le specifiche del modello per la destinazione tramite l’endpoint /authoring/destination-servers. Consulta le seguenti pagine di riferimento API per esempi dettagliati di chiamate API, in cui puoi configurare i componenti mostrati in questa pagina.
Tipi di integrazione supportati supported-integration-types
Consulta la tabella seguente per informazioni dettagliate sui tipi di integrazioni che supportano le funzionalità descritte in questa pagina.
Configurare una specifica di modello configure-template-spec
Adobe utilizza un linguaggio per modelli simile a Jinja per trasformare i campi dallo schema XDM in un formato supportato dalla tua destinazione.
Per ulteriori informazioni sulla trasformazione, consulta i collegamenti seguenti:
Di seguito è riportato un esempio di modello di richiesta HTTP con la descrizione di ogni singolo parametro.
{
"httpTemplate":{
"httpMethod":"POST",
"requestBody":{
"templatingStrategy":"PEBBLE_V1",
"value":"{ \"attributes\": [ {% for ns in [\"external_id\", \"yourdestination_id\"] %} {% if input.profile.identityMap[ns] is not empty and first_namespace_encountered %} , {% endif %} {% set first_namespace_encountered = true %} {% for identity in input.profile.identityMap[ns]%} { \"{{ ns }}\": \"{{ identity.id }}\" {% if hasSegments(input.profile.segmentMembership) %} , \"AEPSegments\": { \"add\": [ {% for namespace in input.profile.segmentMembership %} {% for segment in input.profile.segmentMembership[namespace.key] %} {% if (segment.value.status == \"realized\" or segment.value.status == \"existing\") and destination.namespaceSegmentAliases[namespace.key][segment.key] is defined %} {% if added_segment_found %} , {% endif %} {% set added_segment_found = true %} \"{{ destination.namespaceSegmentAliases[namespace.key][segment.key] }}\" {% endif %} {% endfor %} {% endfor %} ], \"remove\": [ {% for namespace in input.profile.segmentMembership %} {% for segment in input.profile.segmentMembership[namespace.key] %} {% if segment.value.status == \"exited\" and destination.namespaceSegmentAliases[namespace.key][segment.key] is defined %} {% if removed_segment_found %} , {% endif %} {% set removed_segment_found = true %} \"{{ destination.namespaceSegmentAliases[namespace.key][segment.key] }}\" {% endif %} {% endfor %} {% endfor %} ] } {% set removed_segment_found = false %} {% set added_segment_found = false %} {% endif %} {% if input.profile.attributes is not empty %} , {% endif %} {% for attribute in input.profile.attributes %} \"{{ attribute.key }}\": {% if attribute.value is empty %} null {% else %} \"{{ attribute.value.value }}\" {% endif %} {% if not loop.last%} , {% endif %} {% endfor %} } {% if not loop.last %} , {% endif %} {% endfor %} {% endfor %} ] }"
},
"contentType":"application/json"
}
}
httpMethodGET, PUT, POST, DELETE, PATCH.templatingStrategyPEBBLE_V1.valuePer informazioni su come scrivere il modello, leggere la sezione su utilizzo del modello.
Per ulteriori informazioni sull’escape di caratteri, vedere lo standard JSON RFC, sezione sette.
Per un esempio di semplice trasformazione, vedere la trasformazione attributi di profilo.
contentTypeapplication/json.Convertire un modello per supportare pubblici esterni template-converter-tool
I modelli meno recenti leggono solo l’appartenenza al pubblico dallo spazio dei nomi ups. Aggiornare questi modelli per eseguire l’iterazione su ogni spazio dei nomi in segmentMembership, in modo che leggano anche l’appartenenza per tipi di pubblico esterni.
Per informazioni su come configurare la destinazione per il supporto di tipi di pubblico esterni, vedere Configurare il supporto per tipi di pubblico esterni.
Utilizza lo strumento Convertitore modelli per convertire automaticamente il modello esistente. Lo strumento riscrive un modello che legge solo lo spazio dei nomi ups in un modello che esegue iterazioni su tutti gli spazi dei nomi in segmentMembership, inclusi i tipi di pubblico esterni.
Download dello strumento di conversione dei modelli
Lo strumento richiede Java Runtime Environment (JRE) 11 o versione successiva. Supporta due modalità:
-
Modalità CLI (Command Line Interface): eseguire lo strumento da un terminale e passare il modello esistente come parametro.
code language-shell java -jar templates-converter-cli.jar "your-existing-template-string"Lo strumento stampa la maschera convertita sul terminale.
-
Modalità interfaccia utente: eseguire lo strumento con un’interfaccia grafica. Questa modalità richiede JavaFX SDK, incluso nell’archivio scaricato.
code language-shell java --module-path="./javafx-sdk-17.0.7/lib" --add-modules=javafx.controls,javafx.fxml -jar templates-converter-ui.jar
Dopo aver convertito il modello, eseguirne il test su più profili di esempio utilizzando l’API del modello di rendering per confermare che il rendering sia ancora corretto prima di aggiungerlo alla configurazione del server di destinazione.
Configurare le intestazioni di richiesta headers
Oltre al corpo della richiesta, puoi aggiungere intestazioni HTTP personalizzate alle chiamate effettuate da Experience Platform alla destinazione. Ogni voce di intestazione utilizza gli stessi campi templatingStrategy e value degli altri campi con modello nel server di destinazione.
"httpTemplate": {
"httpMethod": "POST",
"headers": [
{
"header": "Authorization",
"value": {
"templatingStrategy": "PEBBLE_V1",
"value": "Basic {{ (authData.username + ':' + authData.password) | base64encode }}"
}
},
{
"header": "x-integration",
"value": {
"templatingStrategy": "PEBBLE_V1",
"value": "{{customerData.integrationId}}"
}
},
{
"header": "Amazon-Advertising-API-ClientId",
"value": {
"templatingStrategy": "PEBBLE_V1",
"value": "{{authData.clientId}}"
}
},
{
"header": "Accept",
"value": {
"templatingStrategy": "NONE",
"value": "application/json"
}
}
]
}
headerAuthorization, Content-Type o intestazione personalizzata.value.templatingStrategyPEBBLE_V1 quando il valore dell’intestazione è dinamico o utilizza espressioni Pebble. Utilizza NONE per i valori statici.value.value{{customerData.integrationId}}, {{authData.clientId}} o {{ (authData.username + ':' + authData.password) | base64encode }}.Alcune API partner richiedono un’intestazione personalizzata compilata con un valore delle credenziali di autenticazione fornite dai clienti, anziché l’intestazione standard Authorization. L’intestazione Amazon-Advertising-API-ClientId mostrata sopra è un esempio di questo pattern, in cui il valore dell’intestazione proviene direttamente da un campo authData.
value è una stringa semplice invece di un oggetto con templatingStrategy e value campi. Ad esempio, consulta Gestione metadati pubblico.Per le destinazioni che utilizzano l’autenticazione di base e che richiedono un’intestazione con codifica Base64 personalizzata, vedere Personalizzare l’intestazione dell’autenticazione di base.
Passaggi successivi next-steps
Dopo aver letto questo articolo, dovresti conoscere meglio cos’è una specifica di modello e come configurarla.
Per ulteriori informazioni sugli altri componenti del server di destinazione, consulta i seguenti articoli: