Destination SDK으로 만든 대상의 템플릿 사양
대상 서버 구성의 템플릿 사양 부분을 사용하여 대상으로 전송된 HTTP 요청의 형식을 지정하는 방법을 구성합니다.
템플릿 사양에서 XDM 스키마와 플랫폼이 지원하는 형식 간에 프로필 속성 필드를 변환하는 방법을 정의할 수 있습니다.
템플릿 사양은 실시간(스트리밍) 대상에 대한 대상 서버 구성의 일부입니다.
이 구성 요소가 Destination SDK으로 만든 통합에 어디에 맞는지 이해하려면 구성 옵션 설명서에서 다이어그램을 참조하거나 Destination SDK을 사용하여 스트리밍 대상을 구성하는 방법에 대한 안내서를 참조하십시오.
/authoring/destination-servers 끝점을 통해 대상에 대한 템플릿 사양을 구성할 수 있습니다. 이 페이지에 표시된 구성 요소를 구성할 수 있는 자세한 API 호출 예는 다음 API 참조 페이지를 참조하십시오.
지원되는 통합 유형 supported-integration-types
이 페이지에 설명된 기능을 지원하는 통합 유형에 대한 자세한 내용은 아래 표를 참조하십시오.
템플릿 사양 구성 configure-template-spec
Adobe은 Jinja와(과) 유사한 템플릿 언어를 사용하여 XDM 스키마의 필드를 대상에서 지원하는 형식으로 변환합니다.
변환에 대한 자세한 내용은 아래 링크를 참조하십시오.
각 개별 매개 변수에 대한 설명과 함께 HTTP 요청 템플릿의 아래를 참조하십시오.
{
"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 사용.value템플릿 작성 방법에 대한 자세한 내용은 템플릿 사용의 섹션을 참조하십시오.
문자 이스케이프에 대한 자세한 내용은 RFC JSON 표준, 섹션 7을 참조하십시오.
간단한 변환의 예를 보려면 프로필 특성 변환을 참조하십시오.
contentTypeapplication/json(으)로 설정해야 합니다.외부 대상을 지원하도록 템플릿 변환 template-converter-tool
이전 템플릿은 ups 네임스페이스에서 대상 멤버십만 읽습니다. segmentMembership의 모든 네임스페이스를 반복하도록 이 템플릿을 업데이트하여 외부 대상에 대한 멤버십도 읽도록 합니다.
외부 대상을 지원하도록 대상을 구성하는 방법에 대한 자세한 내용은 외부 대상에 대한 지원 구성을 참조하십시오.
템플릿 변환기 도구를 사용하여 기존 템플릿을 자동으로 변환합니다. 이 도구는 ups 네임스페이스만 읽는 템플릿을 외부 대상을 포함하여 segmentMembership의 모든 네임스페이스에 대해 반복되는 템플릿으로 다시 작성합니다.
이 도구를 사용하려면 JRE(Java Runtime Environment) 11 이상이 필요합니다. 다음 두 가지 모드를 지원합니다.
-
명령줄 인터페이스(CLI) 모드: 터미널에서 도구를 실행하고 기존 템플릿을 매개 변수로 전달합니다.
code language-shell java -jar templates-converter-cli.jar "your-existing-template-string"변환된 템플릿을 터미널에 인쇄합니다.
-
UI(사용자 인터페이스) 모드: 그래픽 인터페이스로 도구를 실행합니다. 이 모드에서는 다운로드한 아카이브에 포함된 JavaFX SDK이 필요합니다.
code language-shell java --module-path="./javafx-sdk-17.0.7/lib" --add-modules=javafx.controls,javafx.fxml -jar templates-converter-ui.jar
템플릿을 변환한 후 템플릿 API 렌더링을(를) 사용하여 여러 샘플 프로필에 대해 테스트하여 대상 서버 구성에 추가하기 전에 템플릿이 여전히 올바르게 렌더링되는지 확인하십시오.
요청 헤더 구성 headers
요청 본문 외에도 Experience Platform의 대상에 대한 호출에 사용자 지정 HTTP 헤더를 추가할 수 있습니다. 각 헤더 항목에서는 대상 서버의 다른 템플릿 필드와 동일한 templatingStrategy 및 value 필드를 사용합니다.
"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 또는 사용자 지정 헤더와 같은 헤더 이름.value.templatingStrategyPEBBLE_V1을(를) 사용합니다. 정적 값에 NONE을(를) 사용합니다.value.value{{customerData.integrationId}}, {{authData.clientId}} 또는 {{ (authData.username + ':' + authData.password) | base64encode }}과(와) 같은 고객 데이터 또는 인증 데이터 필드를 참조하는 페블 식을 지원합니다.일부 파트너 API에는 표준 Authorization 헤더가 아니라 고객이 제공하는 인증 자격 증명의 값으로 채워진 사용자 지정 헤더가 필요합니다. 위에 표시된 Amazon-Advertising-API-ClientId 헤더는 이 패턴의 예입니다. 헤더 값은 authData 필드에서 직접 가져옵니다.
value은(는) templatingStrategy 및 value 필드가 있는 개체 대신 일반 문자열입니다. 예를 들어 대상 메타데이터 관리를 참조하십시오.사용자 지정 Base64 인코딩 헤더가 필요한 기본 인증을 사용하는 대상에 대해서는 기본 인증 헤더 사용자 지정을 참조하십시오.
다음 단계 next-steps
이 문서를 읽고 나면 템플릿 사양의 정의와 템플릿 사양을 구성하는 방법을 보다 잘 이해할 수 있습니다.
다른 대상 서버 구성 요소에 대한 자세한 내용은 다음 문서를 참조하십시오.