메시지 변환 템플릿 만들기 및 테스트

개요

대상 SDK의 일부로, Adobe은 대상을 구성하고 테스트하는 데 도움이 되는 개발자 도구를 제공합니다. 이 페이지에서는 메시지 변환 템플릿을 만들고 테스트하는 방법을 설명합니다. 대상을 테스트하는 방법에 대한 자세한 내용은 대상 구성을 테스트합니다.

Adobe Experience Platform의 대상 스키마와 대상에서 지원하는 메시지 형식 간에 메시지 변환 템플릿​을 만들고 테스트하려면 아래에 자세히 설명된 템플릿 작성 도구​를 사용하십시오. 메시지 형식 문서에서 소스와 대상 스키마 간의 데이터 변환에 대해 자세히 알아보십시오.

아래 그림은 메시지 변환 템플릿을 만들고 테스트하는 방법을 대상 SDK의 대상 구성 워크플로우에 적용하는 것입니다.

템플릿 만들기 단계가 대상 구성 워크플로우에 맞는 위치의 그래픽

메시지 변환 템플릿을 만들고 테스트해야 하는 이유

대상 SDK에서 대상을 만드는 첫 번째 단계 중 하나는 Adobe Experience Platform에서 대상으로 내보낼 때 세그먼트 멤버십, ID 및 프로필 속성에 대한 데이터 형식이 어떻게 변환되는지 고려하는 것입니다. 메시지 형식 문서에서 Adobe XDM 스키마와 대상 스키마 간의 변환에 대한 정보를 찾습니다.

변환을 성공하려면 다음 예와 유사한 변환 템플릿을 제공해야 합니다. 세그먼트, ID 및 프로필 속성을 보내는 템플릿을 만듭니다.

Adobe은 Adobe XDM 형식의 데이터를 대상에서 지원하는 형식으로 변환하는 메시지 템플릿을 만들고 테스트할 수 있는 템플릿 도구를 제공합니다. 도구에는 사용할 수 있는 두 개의 API 엔드포인트가 있습니다.

  • 샘플 템플릿 API​를 사용하여 샘플 템플릿을 가져옵니다.
  • 결과를 대상의 예상 데이터 형식과 비교할 수 있도록 렌더링 템플릿 API​를 사용하여 샘플 템플릿을 렌더링합니다. 내보낸 데이터를 대상에 필요한 데이터 형식과 비교한 후 템플릿을 편집할 수 있습니다. 이렇게 하면 내보낸 데이터가 대상에 필요한 데이터 형식과 일치합니다.

샘플 템플릿 API를 사용하고 템플릿 API를 렌더링하여 대상에 대한 템플릿을 만드는 방법

템플릿을 가져오고 테스트하는 프로세스는 반복적입니다. 내보낸 프로필이 대상의 예상 데이터 형식과 일치할 때까지 아래 단계를 반복합니다.

  1. 먼저 샘플 템플릿을 가져옵니다.
  2. 샘플 템플릿을 시작점으로 사용하여 고유한 초안을 만듭니다.
  3. 고유한 템플릿으로 렌더링 템플릿 API 엔드포인트를 호출합니다. Adobe은 스키마를 기준으로 샘플 프로필을 생성하고 발생한 결과 또는 오류를 반환합니다.
  4. 내보낸 데이터를 대상에 필요한 데이터 형식과 비교합니다. 필요한 경우 템플릿을 편집합니다.
  5. 내보낸 프로필이 대상의 예상 데이터 형식과 일치할 때까지 이 프로세스를 반복합니다.

템플릿을 만들기 전에 완료하는 절차

템플릿을 만들려면 먼저 아래 단계를 완료하십시오.

  1. 대상 서버 구성을 만듭니다. 생성할 템플릿은 maxUsersPerRequest 매개 변수에 제공하는 값에 따라 다릅니다.
    • 대상에 대한 API 호출이 세그먼트 자격, ID 및 프로필 속성과 함께 단일 프로필을 포함하려면 maxUsersPerRequest=1 을 사용합니다.
    • 대상에 API 호출이 세그먼트 자격, ID 및 프로필 속성과 함께 여러 프로필을 포함하려면 maxUsersPerRequest 값을 1보다 큰 값으로 사용합니다.
  2. 대상 구성을 만들고 에서 대상 서버 구성의 ID를 추가합니다 destinationDelivery.destinationServerId.
  3. 템플릿 생성 도구에서 사용할 수 있도록 방금 만든 대상 구성의 ID를 가져옵니다.

샘플 템플릿 API를 사용하여 샘플 템플릿 가져오기

노트

전체 API 참조 설명서는 샘플 템플릿 API 작업 가져오기를 참조하십시오.

아래 표시된 대로 호출에 대상 ID를 추가하면 응답에서 대상 ID에 해당하는 템플릿 예를 반환합니다.

curl --location --request GET 'https://platform.adobe.io/data/core/activation/authoring/testing/template/sample/5114d758-ce71-43ba-b53e-e2a91d67b67f' \
--header 'Content-Type: application/json' \
--header 'Accept: application/json' \
--header 'x-api-key: {API_KEY}' \
--header 'Authorization: Bearer {ACCESS_TOKEN}' \
--header 'x-gw-ims-org-id: {IMS_ORG}' \
--header 'x-sandbox-name: {SANDBOX_NAME}' \

제공하는 대상 ID가 집계 정책에서 최상의 작업 집계maxUsersPerRequest=1를 사용하는 대상 구성에 해당하는 경우 요청은 이 설정과 유사한 샘플 템플릿을 반환합니다.

{#- THIS is an example template for a single profile -#}
{#- A '-' at the beginning or end of a tag removes all whitespace on that side of the tag. -#}
{
    "identities": [
    {%- for idMapEntry in input.profile.identityMap -%}
    {%- set namespace = idMapEntry.key -%}
        {%- for identity in idMapEntry.value %}
        {
            "type": "{{ namespace }}",
            "id": "{{ identity.id }}"
        }{%- if not loop.last -%},{%- endif -%}
        {%- endfor -%}{%- if not loop.last -%},{%- endif -%}
    {% endfor %}
    ],
    "AdobeExperiencePlatformSegments": {
        "add": [
        {%- for segment in input.profile.segmentMembership.ups | added %}
            "{{ segment.key }}"{%- if not loop.last -%},{%- endif -%}
        {% endfor %}
        ],
        "remove": [
        {#- Alternative syntax for filtering segments by status: -#}
        {% for segment in removedSegments(input.profile.segmentMembership.ups) %}
            "{{ segment.key }}"{%- if not loop.last -%},{%- endif -%}
        {% endfor %}
        ]
    }
}

제공하는 대상 ID가 구성 가능한 집계 또는 가장 많은 작업 집계가 있는 대상 서버 템플릿에 해당하는 경우 요청은 이 템플릿과 유사한 샘플 템플릿을 반환합니다.maxUsersPerRequest

{#- THIS is an example template for multiple profiles -#}
{#- A '-' at the beginning or end of a tag removes all whitespace on that side of the tag. -#}
{
    "profiles": [
    {%- for profile in input.profiles %}
        {
            "identities": [
            {%- for idMapEntry in profile.identityMap -%}
            {%- set namespace = idMapEntry.key -%}
                {%- for identity in idMapEntry.value %}
                {
                    "type": "{{ namespace }}",
                    "id": "{{ identity.id }}"
                }{%- if not loop.last -%},{%- endif -%}
                {%- endfor -%}{%- if not loop.last -%},{%- endif -%}
            {% endfor %}
            ],
            "AdobeExperiencePlatformSegments": {
                "add": [
                {%- for segment in profile.segmentMembership.ups | added %}
                    "{{ segment.key }}"{%- if not loop.last -%},{%- endif -%}
                {% endfor %}
                ],
                "remove": [
                {#- Alternative syntax for filtering segments by status: -#}
                {% for segment in removedSegments(profile.segmentMembership.ups) %}
                    "{{ segment.key }}"{%- if not loop.last -%},{%- endif -%}
                {% endfor %}
                ]
            }
        }{%- if not loop.last -%},{%- endif -%}
    {% endfor %}
    ]
}

템플릿 문자 이스케이프 처리

템플릿을 사용하여 대상의 예상 형식과 일치하는 프로필을 렌더링하기 전에 아래 화면 기록에 표시된 대로 템플릿을 문자 이스케이프 처리해야 합니다.

온라인 문자 이스케이프 도구를 사용하여 템플릿을 문자 이스케이프 처리하는 방법을 보여 주는 비디오입니다

온라인 문자 이스케이프 도구를 사용할 수 있습니다. 위의 데모에서는 JSON 이스케이프 포맷터를 사용합니다.

템플릿 API 렌더링

샘플 템플릿 API를 사용하여 메시지 변환 템플릿을 만든 후 템플릿을 렌더링하여 내보낸 데이터를 생성할 수 있습니다. 이렇게 하면 Adobe Experience Platform에서 대상으로 내보내는 프로필이 대상의 예상 형식과 일치하는지 확인할 수 있습니다.

수행할 수 있는 호출의 예는 API 참조를 참조하십시오.

내보낸 프로필이 대상의 예상 데이터 형식과 일치될 때까지 템플릿을 편집하고 렌더링 템플릿 API 엔드포인트를 호출합니다.

대상 서버 구성에 문자 이스케이프 처리된 템플릿을 추가합니다

메시지 변환 템플릿에 만족하면 대상 서버 구성httpTemplate.requestBody.value에 추가합니다.

이 페이지에서는