이 페이지에서: externalDataLookup 도우미를 사용하여 외부 끝점에서 데이터를 동적으로 가져오고 Adobe Journey Optimizer의 인바운드 채널에 대한 콘텐츠를 개인화하는 방법을 알아봅니다.
Journey Optimizer 개인화 편집기의 externalDataLookup 도우미는 코드 기반 경험, 웹 및 인앱 메시지 채널과 같은 인바운드 채널에 대한 콘텐츠를 생성하는 데 사용할 외부 끝점에서 데이터를 동적으로 가져오는 데 사용할 수 있습니다.
도우미를 사용하려면 먼저 관리 > 구성 메뉴에서 동작을 정의해야 합니다. 작업은 URL, GET 및 POST 메서드, 헤더 매개 변수, 쿼리 매개 변수, POST 본문 JSON 스키마 및 응답 JSON 스키마와 같은 외부 끝점에 대한 세부 사항을 구성하는 것입니다.
작업이 정의되면 다음 두 가지 용도로 사용할 수 있습니다.
- 여정에서 콘텐츠를 가져오기 위한 사용자 지정 작업 활동
- 여정 및 인바운드 캠페인에서 externalDataLookup 도우미에서 인바운드 작업에서 데이터를 가져옵니다.
가드레일 및 제한 사항
Journey Optimizer 인바운드 채널 캠페인 및 여정의 사용자 지정 #GuardrailsandGuidelines을 참조하십시오.
- 최대 조회 수 - 인바운드 메시지 요청은 외부 데이터 조회를 포함하여 최대 10개의 조회를 지원합니다. 이 제한을 초과하면 전체 요청에 실패합니다. 자세히 알아보기
- 기본 시간 제한 - 기본적으로 Journey Optimizer은(는) 외부 끝점을 호출할 때 300ms의 시간 제한을 사용합니다. 끝점에 대한 이 시간 제한을 늘리려면 Adobe 담당자에게 문의하십시오.
- 응답 스키마 찾아보기 및 식 유효성 검사 - 개인화 편집기에서 식을 삽입할 때 끝점 응답의 스키마를 찾아볼 수 없습니다. Journey Optimizer은(는) 식에 사용된 응답에서 JSON 특성에 대한 참조를 확인하지 않습니다.
- 매개 변수에 지원되는 데이터 형식 - externalDataLookup 도우미를 통해 대체할 페이로드 변수 매개 변수에 지원되는 데이터 형식은
String,Integer,Decimal,Boolean,listString,listInt,listInteger,listDecimal입니다. - 업데이트된 작업에 대한 자동 새로 고침 - 작업 구성에 대한 변경 내용은 실시간 캠페인 및 여정의 해당 externalDataLookup 호출에 반영되지 않습니다. 변경 사항을 반영하려면 externalDataLookup 도우미에서 작업을 사용하는 모든 라이브 캠페인 또는 여정을 복사하거나 수정해야 합니다.
- 변수 대체 - 지금은 externalDataLookup 도우미 매개 변수 내에서 변수 사용이 지원되지 않습니다.
- 동적 경로 - 지금은 동적 URL 경로가 지원되지 않습니다.
- 다중 패스 렌더링 - 다중 패스 렌더링이 지원됩니다.
- 인증 - 지금은 externalDataLookup 도우미에서 작업 구성의 인증 옵션을 지원하지 않습니다. 그동안 API 키 기반 인증 또는 기타 일반 텍스트 인증 키의 경우 작업 구성에서 헤더 필드로 지정할 수 있습니다.
작업 구성 및 도우미 사용
작업을 정의하고 개인화에 도우미를 사용하려면 다음 단계를 수행하십시오.
-
작업을 만들어 조회에 대한 끝점을 구성합니다. 이 작업은 각 끝점에 대해 한 번만 수행하면 되며 기술 사용자가 수행해야 합니다. 사용자 지정 작업을 구성하는 방법을 알아봅니다
작업 ID를 기록하고 복사합니다.
-
인바운드 캠페인 또는 여정 작업을 만듭니다. 이 예에서는 코드 기반 경험 JSON 작업에서 externalDataLookup 도우미를 사용하는 방법을 보여 주지만, 모든 인바운드 채널의 개인화 필드에서 사용할 수 있습니다.
-
작업의 콘텐츠를 편집하고 개인화 편집기의 도우미 함수로 이동한 다음 도우미 함수 > 도우미(으)로 이동합니다.
-
externalDataLookup 도우미를 삽입하려면
+단추를 클릭하세요. 도우미 식이actionId및result에 대한 자리 표시자 값과 함께 편집기에 삽입됩니다.
자리 표시자 값을 다음과 같이 바꿉니다.
actionId: 이전에 복사한 작업 ID를 붙여넣습니다.result: 선택한 이름을 설정합니다. 이 결과 변수를 사용하여 가져온 콘텐츠에 액세스합니다.
-
끝점 호출의 일부로 전달될 변수 매개 변수 값을 추가합니다. 예를 들어 언어 매개 변수와 최대 항목 매개 변수를 전달하는 방법은 다음과 같습니다.
-
가져온 데이터에 액세스하고 인바운드 작업을 위해 콘텐츠에 삽입하려면 결과 변수를 사용하십시오. 예를 들어 엔드포인트에서 가져온 항목의 JSON 배열을 반환하는 방법은 다음과 같습니다.
작동 방식
런타임 실행
인바운드 작업에 externalDataLookup 도우미가 포함된 경우 AEP Edge Network에서 Journey Optimizer 개인화 요청을 받고 처리할 때 끝점이 동적으로 호출됩니다.
즉, 외부 끝점은 클라이언트가 지정된 표면에 대해 AEP Edge Network으로 전송하는 만큼의 동시 로드 및 처리량을 처리할 수 있어야 합니다.
구문
{{externalDataLookup actionId="d130c8e2-9a2d-45d5-bcb6-bc39865b4a56" result="result" optional-parameters...}}
매개 변수 전달
외부 끝점이 호출되면 작업에 정의된 모든 상수 헤더 값, 쿼리 매개 변수 및 요청 페이로드 값이 작업 구성에 지정된 값과 함께 전송됩니다.
변수 헤더 값, 쿼리/경로 매개 변수 또는 요청 페이로드 값의 경우 매개 변수를 사용하여 값을 externalDataLookup 도우미에 동적으로 전달할 수 있습니다.
매개 변수 이름:
- 헤더 매개 변수:
header.<parameter-name> - 쿼리 매개 변수:
query.<parameter-name> - 페이로드 매개 변수:
payload.<parameter-name> - 경로 매개 변수:
dynamic_path.<parameter-name>
예:
{{externalDataLookup actionId="..." result="result" header.myHeaderParameter="value1" query.myQueryParameter="value2" payload.myPayloadParameter="value3"}}`
매개 변수 값은 고정 값일 수 있으며, 프로필 필드 또는 기타 컨텍스트 속성을 참조하여 개인화할 수 있습니다. 예:
{{externalDataLookup actionId="..." result="result" query.myQueryParameter=profile.myProfileValue}}
페이로드 매개 변수는 다음과 같이 중첩된 JSON 속성을 참조하는 점 표기법을 사용하여 제공할 수 있습니다.
{{externalDataLookup actionId="..." result="result" payload.context.channel="web"}}
결과 액세스
외부 끝점 조회 호출에서 가져온 데이터에 액세스하려면 개인화 표현식 및 도우미 함수를 사용하여 작업 정의의 응답 페이로드에 정의된 필드를 참조할 수 있습니다.
예를 들어 작업의 응답 페이로드가 다음과 같은 경우:
{
"videos": [
{
"id": "integer",
"title": "string",
"description": "string",
"thumbnail_url": "string",
"video_page_url": "string",
"url": "string",
"video_type": "string",
"start_timestamp": "dateOnly",
"created_on": "dateOnly",
...
}
]
}
그런 다음 예를 들어 다음과 같은 코드 기반 Experience HTML 작업에서 첫 번째 비디오의 설명을 가져오고 액세스할 수 있습니다.
{{externalDataLookup actionId="d130c8e2-9a2d-45d5-bcb6-bc39865b4a56" result="result"}}
First video description: <b>result.videos[0].description</b>
또는 예를 들어 다음과 같은 코드 기반 Experience JSON 작업에서 항목 배열을 반환하기 위해 항목을 가져와서 반복할 수 있습니다.
{{externalDataLookup actionId="d130c8e2-9a2d-45d5-bcb6-bc39865b4a56" result="result"}}
[
{{#each result.videos as |item|}}
{
"title": "{{item.title}}",
"url": "{{item.video_page_url}}",
"thumbnail_url": "{{item.thumbnail_url}}",
"start_timestamp": "{{item.start_timestamp}}"
},
{{/each}}
]
문제 해결
시간 초과 및 오류 처리
Journey Optimizer은(는) Adobe Experience Platform Edge Network에 대해 대기 시간이 짧고 처리량이 많은 성능 특성을 유지하기 위해 외부 끝점을 호출할 때 엄격한 시간 제한을 사용합니다.
끝점이 시간 초과되거나 끝점에 도달하는 다른 종류의 오류가 있는 경우 결과 변수는 비어 있습니다. 이 경우 결과 변수 내의 속성에 대한 모든 참조도 비어 있게 됩니다. 콘텐츠에 속성을 단순히 표시하는 경우 공백으로 표시됩니다. 결과에서 배열 특성을 반복하려고 하면 항목이 반환되지 않습니다.
대체 콘텐츠를 표시하여 시간 초과나 오류를 보다 적절하게 처리하려는 경우 조회 결과가 비어 있는지 확인하고 대체 콘텐츠를 표시할 수 있습니다.
예를 들어 다음과 같이 단일 속성에 대한 대체 값을 표시할 수 있습니다.
First video description: {%=result.videos[0].description ?: "none found" %}
또는 다음과 같이 컨텐츠 전체 블록을 조건부로 렌더링할 수 있습니다.
{{externalDataLookup actionId="d130c8e2-9a2d-45d5-bcb6-bc39865b4a56" result="result"}}
{%#if result%}
... do something with result ...
{%else%}
... return fallback content ...
{%/if%}
디버깅
디버깅에 도움이 되도록 외부 데이터 조회에 대한 시간 초과 및 오류 세부 정보가 Adobe Experience Platform Assurance의 Edge Delivery 보기에 포함되어 있습니다. 인바운드 작업에서 externalDataLookup 도우미에 대한 예상 결과가 표시되지 않는 경우 Assurance 세션을 시작하고, 웹 또는 모바일 구현에서 Journey Optimizer 호출을 시작하고, Edge Delivery 보기를 사용하여 시간 초과 또는 오류 세부 정보를 확인할 수 있습니다.
예:
실행 세부 정보의 일부로서 보증 추적의 Edge Delivery 섹션 아래에 아래 내용과 유사한 요청 및 응답 세부 정보와 함께 새 customActions 블록이 추가되었습니다. 오류 섹션은 사용자 지정 작업을 실행하는 동안 문제가 있는 경우 디버깅에 도움이 됩니다
자주 묻는 질문 faq-external-data
외부 데이터 조회 도우미에 대한 FAQ는 다음과 같습니다.
세부 정보가 필요하신가요? 이 페이지 하단의 피드백 옵션을 사용하여 질문하거나 Adobe Journey Optimizer 커뮤니티와 연결하세요.
컨텍스트 속성 > 데이터스트림 > 이벤트 메뉴를 사용하여 사용 중인 경험 이벤트 스키마를 검색하고 관련 속성을 다음과 같은 매개 변수 값으로 삽입합니다.
| code language-none |
|---|
|
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 configure an Action for an external endpoint and use the
externalDataLookuphelper in the personalization editor to dynamically fetch that data at runtime for personalizing inbound channel content.
Intents:
- Configure an Action defining an external endpoint (URL, HTTP method, parameters, request/response schemas)
- Insert the
externalDataLookuphelper in a personalization expression for an inbound action - Pass variable header, query, payload, or path parameters to the external endpoint at call time
- Access fetched data via the result alias using personalization expressions and helper functions
- Handle timeouts and errors gracefully with fallback content patterns
- Debug external lookup issues using Adobe Experience Platform Assurance
Glossary:
- externalDataLookup: A helper function in the personalization editor that dynamically fetches data from a configured external endpoint at request time, for use in inbound channel content personalization. (product-specific)
- Action: A configuration object in Journey Optimizer (Administration > Configurations) that defines an external endpoint — URL, HTTP method, header/query parameters, POST body schema, and response schema. Required before using
externalDataLookup. (product-specific) - result variable: An arbitrary alias assigned in the
externalDataLookupcall; used to reference all fields from the fetched response in subsequent personalization expressions. - Inbound channels: Channels where content is delivered on demand when a user opens a surface — Code-based Experience, Web, In-App Message. (product-specific)
- AEP Edge Network: The infrastructure that receives personalization requests and triggers the external data lookup call at runtime.
Guardrails:
- Feature is in Limited Availability — only available for a set of organizations.
- Default timeout for external endpoint calls: 300ms (default; contact your Adobe representative to increase this timeout for a specific endpoint).
- Response schema browsing is not supported in the personalization editor; Journey Optimizer does not validate references to JSON attributes from the response used in expressions.
- Supported data types for payload variable parameters:
String,Integer,Decimal,Boolean,listString,listInt,listInteger,listDecimal. - Variable substitution within
externalDataLookuphelper parameters is not currently supported. - Dynamic URL paths are not currently supported.
- Authentication options in the Action configuration are not currently supported by
externalDataLookup; use header fields for API key-based or plaintext authorization as a workaround. - Changes to an Action configuration are not reflected in live campaigns or journeys using that Action; copy or modify any live campaigns/journeys to apply the changes.
- Multi-pass rendering is supported.
- Journey Optimizer does not currently cache external endpoint responses.
- The external endpoint must be able to handle at least as much concurrent load and throughput as the inbound traffic sent to the AEP Edge Network for the given surface.
Terminology:
- Canonical name: externalDataLookup — variants: external data lookup, external data lookup helper, External Data Lookup Helper
- Synonyms: “externalDataLookup” = “external data lookup helper”
- Do not confuse:
actionId(ID of the configured Action, identifying the external endpoint) ≠result(alias for the fetched response data) ≠ parameter names (variable values passed to the endpoint at call time) - Do not confuse: using
externalDataLookupin an inbound personalization action (fetches data dynamically at Edge Network request time) ≠ using a Custom Action in a journey activity (fetches content within a journey flow)
FAQ:
- Q: What happens if the external endpoint times out or returns an error? — The result variable will be empty. Attribute references within the result will display as blank, and array iterations will return no items. Use fallback content patterns — such as
?: "none found"for single attributes or{%#if result%}…{%else%}…{%/if%}for entire content blocks — to handle these cases gracefully. - Q: How do I pass a contextual attribute from the request as a parameter to an external data lookup? — Use the Contextual Attributes > Datastream > Event menu in the personalization editor to browse the Experience Event schema and insert the relevant attribute as a parameter value, for example:
query.myQueryParameter=context.datastream.event.<schemaId>.my.xdm.attribute. - Q: Does Journey Optimizer cache external endpoint responses? — Not currently. Caching will be supported in the future.
- Q: How do I debug issues with externalDataLookup? — Use Adobe Experience Platform Assurance. Start an Assurance session, initiate a Journey Optimizer call from your web or mobile implementation, and use the Edge Delivery view to inspect the customActions block for timeout or error details.
- Q: Can I use authentication in the Action configuration with externalDataLookup? — Authentication options in the Action configuration are not currently supported. For API key-based or other plaintext authorization, specify the credentials as header fields in the Action configuration.