Especificaciones de plantilla para destinos creados con Destination SDK
Utilice la parte de especificación de plantilla de la configuración del servidor de destino para configurar cómo dar formato a las solicitudes HTTP enviadas al destino.
En una especificación de plantilla puede definir cómo transformar los campos de atributos de perfil entre el esquema XDM y el formato que admite su plataforma.
Las especificaciones de plantilla forman parte de la configuración del servidor de destino para destinos en tiempo real (flujo).
Para saber dónde encaja este componente en una integración creada con Destination SDK, consulte el diagrama en la documentación de opciones de configuración o consulte la guía sobre cómo usar Destination SDK para configurar un destino de flujo continuo.
Puede configurar las especificaciones de la plantilla para su destino a través del extremo /authoring/destination-servers. Consulte las siguientes páginas de referencia de la API para ver ejemplos detallados de llamadas de la API donde puede configurar los componentes que se muestran en esta página.
Tipos de integración admitidos supported-integration-types
Consulte la tabla siguiente para obtener detalles sobre qué tipos de integraciones admiten la funcionalidad descrita en esta página.
Configuración de una especificación de plantilla configure-template-spec
Adobe usa un lenguaje de creación de plantillas similar a Jinja para transformar los campos del esquema XDM en un formato compatible con el destino.
Para obtener más información sobre la transformación, visite los siguientes vínculos:
Consulte a continuación un ejemplo de una plantilla de solicitud HTTP, junto con descripciones de cada parámetro individual.
{
"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.valuePara obtener información sobre cómo escribir la plantilla, lea la sección sobre usar la creación de plantillas.
Para obtener más información acerca del escape de caracteres, consulte el estándar RFC JSON, sección siete.
Para ver un ejemplo de transformación simple, vea la transformación atributos de perfil.
contentTypeapplication/json.Conversión de una plantilla para admitir audiencias externas template-converter-tool
Las plantillas antiguas solo leen la pertenencia a audiencias del espacio de nombres ups. Actualice estas plantillas para que se reproduzcan en todas las áreas de nombres de segmentMembership, de modo que también se lea la pertenencia de audiencias externas.
Para obtener información sobre cómo configurar el destino para que admita audiencias externas, consulte Configurar la compatibilidad con audiencias externas.
Use la herramienta Conversor de plantillas para convertir automáticamente la plantilla existente. La herramienta reescribe una plantilla que sólo lee el espacio de nombres ups en una plantilla que se repite en todas las áreas de nombres de segmentMembership, incluidas las audiencias externas.
Descargar la herramienta Conversor de plantillas
La herramienta requiere Java Runtime Environment (JRE) 11 o posterior. Admite dos modos:
-
Modo de interfaz de línea de comandos (CLI): ejecute la herramienta desde un terminal y pase la plantilla existente como parámetro.
code language-shell java -jar templates-converter-cli.jar "your-existing-template-string"La herramienta imprime la plantilla convertida en el terminal.
-
Modo de interfaz de usuario: ejecute la herramienta con una interfaz gráfica. Este modo requiere JavaFX SDK, que se incluye en el archivo descargado.
code language-shell java --module-path="./javafx-sdk-17.0.7/lib" --add-modules=javafx.controls,javafx.fxml -jar templates-converter-ui.jar
Después de convertir la plantilla, pruébela con varios perfiles de muestra mediante la API de plantilla de procesamiento para confirmar que se sigue representando correctamente antes de agregarla a la configuración del servidor de destino.
Configuración de encabezados de solicitud headers
Además del cuerpo de la solicitud, puede agregar encabezados HTTP personalizados a las llamadas que Experience Platform realiza a su destino. Cada entrada de encabezado utiliza los mismos campos templatingStrategy y value que otros campos con plantilla en el servidor de destino.
"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 un encabezado personalizado.value.templatingStrategyPEBBLE_V1 cuando el valor del encabezado sea dinámico o utilice expresiones Pebble. Use NONE para valores estáticos.value.value{{customerData.integrationId}}, {{authData.clientId}} o {{ (authData.username + ':' + authData.password) | base64encode }}.Algunas API de socios requieren un encabezado personalizado que se rellena con un valor de las credenciales de autenticación que proporcionan los clientes, en lugar del encabezado estándar Authorization. El encabezado Amazon-Advertising-API-ClientId mostrado arriba es un ejemplo de este patrón, donde el valor del encabezado proviene directamente de un campo authData.
value es una cadena plana en lugar de un objeto con campos templatingStrategy y value. Para ver un ejemplo, consulte administración de metadatos de audiencia.Para los destinos que utilizan autenticación básica y que requieren un encabezado personalizado con codificación Base64, vea Personalizar el encabezado de autenticación básica.
Próximos pasos next-steps
Después de leer este artículo, debería comprender mejor qué es una especificación de plantilla y cómo puede configurarla.
Para obtener más información acerca de los demás componentes del servidor de destino, consulte los siguientes artículos: