In questa pagina: Scopri come passare raccolte semplici e di oggetti in parametri di azione personalizzati in modo che vengano compilati in modo dinamico in fase di esecuzione.
Puoi trasmettere una raccolta nei parametri delle azioni personalizzate che viene compilata dinamicamente in fase di esecuzione.
Sono supportati due tipi di raccolte:
-
Raccolte semplici
Utilizzare raccolte semplici per elenchi di valori di base, ad esempio stringhe, numeri o booleani. Queste proprietà sono utili solo se devi trasmettere un elenco di elementi senza proprietà aggiuntive.
Ad esempio, un elenco di tipi di dispositivi:
code language-json { "deviceTypes": [ "android", "ios" ] } -
Raccolte oggetti
Utilizzare gli insiemi di oggetti quando ogni elemento include più campi o proprietà. In genere vengono utilizzati per trasmettere dati strutturati, ad esempio dettagli di prodotto, record di eventi o attributi di elementi.
Ad esempio:
code language-json { "products":[ { "id":"productA", "name":"A", "price":20.1 }, { "id":"productB", "name":"B", "price":10.0 }, { "id":"productC", "name":"C", "price":5.99 } ] }
Procedura generale general-procedure
In questa sezione viene utilizzato il seguente esempio di payload JSON. Si tratta di un array di oggetti con un campo che è un insieme semplice.
{
"ctxt": {
"products": [
{
"id": "productA",
"name": "A",
"price": 20.1,
"color":"blue",
"locations": [
"Paris",
"London"
]
},
{
"id": "productB",
"name": "B",
"price": 10.99
}
]
}
}
products è un array di due oggetti. Devi avere almeno un oggetto.
-
Crea l’azione personalizzata. Ulteriori informazioni sono disponibili in questa pagina.
-
Nella sezione Parametri azione, incolla l’esempio JSON. La struttura visualizzata è statica: quando si incolla il payload, tutti i campi sono definiti come costanti.
-
Se necessario, regola i tipi di campo. Per gli insiemi sono supportati i tipi di campo seguenti: listString, listInteger, listDecimal, listBoolean, listDateTime, listDateTimeOnly, listDateOnly, listObject
note NOTE Il tipo di campo viene dedotto automaticamente in base all’esempio di payload. -
Se si desidera passare gli oggetti in modo dinamico, è necessario impostarli come variabili. In questo esempio
productsè stato impostato come variabile. Tutti i campi oggetto inclusi nell’oggetto vengono impostati automaticamente su variabili.note NOTE Il primo oggetto dell’esempio di payload viene utilizzato per definire i campi. -
Per ogni campo, definisci l’etichetta che verrà visualizzata nell’area di lavoro del percorso.
{width="70%"}
-
Crea il percorso e aggiungi l’azione personalizzata creata. Ulteriori informazioni sono disponibili in questa pagina.
-
Nella sezione Parametri azione, definisci il parametro dell’array (
productsnel nostro esempio) utilizzando l’editor di espressioni avanzate.
-
Per ciascuno dei seguenti campi oggetto, digita il nome del campo corrispondente dallo schema XDM di origine. Se i nomi sono identici, non è necessario. Nel nostro esempio, è sufficiente definire
product ide “color”. {width="50%"}
Per il campo array, puoi anche utilizzare l’editor di espressioni avanzate per eseguire la manipolazione dei dati. Nell’esempio seguente vengono utilizzate le funzioni filter e intersect:
Limitazioni limitations
Sebbene le raccolte nelle azioni personalizzate forniscano flessibilità per il passaggio dei dati dinamici, esistono alcuni vincoli strutturali di cui tenere conto:
-
Supporto per array nidificati nelle azioni personalizzate
Adobe Journey Optimizer supporta array nidificati di oggetti nei payload di risposta dell’azione personalizzata ma questo supporto è limitato nei payload di richiesta.
Nei payload delle richieste, gli array nidificati sono supportati solo se contengono un numero fisso di elementi, come definito nella configurazione dell’azione personalizzata. Ad esempio, se un array nidificato include sempre esattamente tre elementi, può essere configurato come costante. Quando il numero di elementi deve essere dinamico, solo gli array non nidificati (array al livello inferiore) possono essere definiti come variabili.
Esempio:
-
L’esempio seguente illustra un caso d’uso non supportato.
In questo esempio, l’array prodotti include un array nidificato (
locations) con un numero dinamico di elementi, che non è supportato nei payload delle richieste.code language-json { "products": [ { "id": "productA", "name": "A", "price": 20, "locations": [ { "name": "Paris" }, { "name": "London" } ] } ] } -
Esempio supportato, con elementi fissi definiti come costanti.
In questo caso, le posizioni nidificate vengono sostituite da campi fissi (
location1,location2), consentendo al payload di rimanere valido all’interno della configurazione supportata.code language-json { "products": [ { "id": "productA", "name": "A", "price": 20, "location1": { "name": "Paris" }, "location2": { "name": "London" } } ] }
-
-
Test delle raccolte: per testare le raccolte utilizzando la modalità di test, è necessario utilizzare la modalità di visualizzazione del codice. La modalità di visualizzazione del codice non è supportata per gli eventi di business, pertanto in questo caso è possibile inviare solo una raccolta contenente un singolo elemento.
Casi particolari examples
Per tipi e array di array eterogenei, l’array è definito con il tipo listAny. È possibile mappare solo singoli elementi, ma non è possibile modificare la matrice in variabile.
Esempio di tipo eterogeneo:
{
"data_mixed-types": [
"test",
"test2",
null,
0
]
}
Esempio di array:
{
"data_multiple-arrays": [
[
"test",
"test1",
"test2"
]
]
}
Risorse aggiuntive
Consulta le sezioni seguenti per ulteriori informazioni sulla configurazione, l’utilizzo e la risoluzione dei problemi delle azioni personalizzate:
- Introduzione alle azioni personalizzate: scopri cos’è un’azione personalizzata e come ti aiuta a connetterti ai sistemi di terze parti
- Configura le azioni personalizzate - Scopri come creare e configurare un’azione personalizzata
- Usa azioni personalizzate - Scopri come utilizzare le azioni personalizzate nei tuoi percorsi
- Risoluzione dei problemi relativi alle azioni personalizzate - Scopri come risolvere i problemi relativi a un’azione personalizzata
- Eseguire iterazioni sui dati contestuali: scopri come utilizzare gli array nelle espressioni di Percorso e iterare le risposte alle azioni personalizzate, i dati evento e le ricerche di set di dati nella personalizzazione dei messaggi.
This section contains structured knowledge intended to support interpretation, retrieval, and question answering related to this topic.
For complete understanding, this information should be combined with the documentation on this page. Neither source is intended to stand alone; the page describes the feature, while this section provides additional context that helps disambiguate terminology, intent, applicability, and constraints.
- TL;DR: This page explains how to pass simple and object collections dynamically into custom action parameters in Journey Optimizer, including supported field types, the configuration procedure, and known limitations around nested arrays.
Intents:
- Configure a custom action to accept a collection (simple or object) as a dynamic parameter
- Define array parameters as variables in the advanced expression editor when building a journey
- Apply filter and intersect functions to manipulate array data in the expression editor
- Understand and work within the nested array limitations for custom action request payloads
- Test collection parameters using code view mode in journey test mode
Glossary:
- Simple collection: A list of basic scalar values (strings, numbers, booleans) passed as a custom action parameter (product-specific)
- Object collection: A list of structured objects, each with multiple fields, passed as a custom action parameter (product-specific)
- listObject: The field type used in custom action configuration to represent an array of objects (product-specific)
- listAny: The field type used for heterogeneous arrays or arrays of arrays where items have mixed types (product-specific)
- Variable (vs. Constant): In action parameter configuration, a field set to “variable” is populated dynamically at runtime from the journey context, while a “constant” is a fixed value set at configuration time (product-specific)
Guardrails:
- Nested arrays in request payloads are only supported when they contain a fixed number of items (defined as constants); dynamic nested arrays are not supported
- Code view mode is required to test collections in test mode; code view is not supported for business events, so only single-element collections can be sent in that case
- At least one object must be present in the payload example used to define collection fields
- The first object of the payload example defines the fields for the entire collection
Terminology:
- Canonical name: Collection — Acronym: none — variants: array, list, dynamic collection
- Synonyms: “simple collection” = “list of scalar values” ; “object collection” = “array of objects”
- Do not confuse: “listAny” ≠ “listObject” (listAny handles heterogeneous or nested arrays; listObject handles uniform arrays of structured objects)
FAQ:
- Q: What is the difference between a simple collection and an object collection? — A simple collection contains basic scalar values (strings, numbers, booleans), while an object collection contains structured objects each with multiple named fields.
- Q: How do I make a collection parameter dynamic at runtime? — In the custom action’s Action parameters section, set the array field to “variable”; all object fields within it are then automatically set to variables.
- Q: Are nested arrays supported in custom action request payloads? — Only partially. Nested arrays with a fixed, known number of items can be defined as constants. Nested arrays with a dynamic number of items are not supported in request payloads.
- Q: How do I test a collection in journey test mode? — Use code view mode in the test interface. Note that business events do not support code view, so only single-element collections can be tested in that context.
- Q: What field types are supported for collections? — listString, listInteger, listDecimal, listBoolean, listDateTime, listDateTimeOnly, listDateOnly, and listObject are all supported.