Edge 확장 모듈의 컨텍스트
Edge 확장의 모든 라이브러리 모듈은 실행될 때 context
개체가 제공됩니다. 이 문서에서는 context
개체에서 제공하는 속성과 라이브러리 모듈에서 수행하는 역할에 대해 설명합니다.
Adobe 요청 컨텍스트(arc)
arc
속성은 규칙을 트리거하는 이벤트에 대한 정보를 제공하는 개체입니다. 아래 섹션은 이 개체에 포함된 다양한 하위 속성을 설명합니다.
event
event
개체는 규칙을 트리거한 이벤트를 나타내며 다음 값을 포함합니다.
logger.log(context.arc.event);
xdm
data
request
클라이언트 장치의 요청과 혼동하지 않도록 하십시오. request
는 Adobe Experience Platform Edge Network에서 가져오는 약간 수정된 개체입니다.
logger.log(context.arc.request)
request
개체에는 두 개의 최상위 속성이 있습니다. body
및 head
. body
속성에는 XDM(Experience Data Model) 정보가 포함되어 있으며 Launch 로 이동하여 Edge 추적 탭을 선택하면 Adobe Experience Platform Debugger에서 검사할 수 있습니다.
ruleStash rulestash
ruleStash
는 작업 모듈에서 모든 결과를 수집하는 개체입니다.
logger.log(context.arc.ruleStash);
각 확장에는 고유한 네임스페이스가 있습니다. 예를 들어, 확장의 이름이 send-beacon
인 경우 send-beacon
작업의 모든 결과가 ruleStash['send-beacon']
네임스페이스에 저장됩니다.
이 네임스페이스는 각 확장에 대해 고유하며 시작 부분에 undefined
값이 있습니다.
네임스페이스는 각 작업에서 반환된 결과로 재정의됩니다. 예를 들어, 다음 두 가지 작업을 포함하는 transform
확장이 있다고 가정해 보십시오. generate-fullname
및 generate-fulladdress
. 그런 다음 이 두 작업을 규칙에 추가합니다.
generate-fullname
작업의 결과가 Firstname Lastname
이면 작업이 완료된 후 규칙 스태시가 다음과 같이 표시됩니다.
{
transform: 'Firstname Lastname'
}
generate-address
작업의 결과가 3900 Adobe Way
이면 작업이 완료된 후 규칙 스태시가 다음과 같이 표시됩니다.
{
transform: '3900 Adobe Way'
}
generate-address
작업이 새 값으로 재정의되었으므로 "Firstname Lastname"이 규칙 스태시에 더 이상 없습니다.
ruleStash
에서 transform
네임스페이스 안에 있는 두 작업의 결과를 저장하게 하려면 다음 예제와 비슷한 작업 모듈을 작성할 수 있습니다.
module.exports = (context) => {
let transformRuleStash = context.arc.ruleStash.transform;
if (!transformRuleStash) {
transformRuleStash = {};
}
transformRuleStash.fullName = 'Firstname Lastname';
return transformRuleStash;
}
이 작업을 처음 실행할 때 ruleStash
는 undefined
로 시작되므로 빈 개체로 초기화됩니다. 다음 번에 작업이 실행되면 작업을 이전에 호출할 때 반환된 ruleStash
이 수신됩니다. 개체를 ruleStash
로 사용하면 Adobe의 확장에서 이전에 설정한 다른 작업에 의해 데이터 손실 없이 새 데이터를 추가할 수 있습니다.
유틸리티
utils
속성은 태그 런타임과 관련된 유틸리티를 제공하는 개체를 나타냅니다.
logger
logger
유틸리티를 사용하면 Adobe Experience Platform Debugger을 사용할 때 디버깅 세션 중에 표시되는 메시지를 기록할 수 있습니다.
context.utils.logger.error('Error!');
이 로거에는 다음과 같은 메서드가 있습니다. 여기서 message
는 기록할 메시지입니다.
log(message)
info(message)
warn(message)
error(message)
debug(message)
verbose
로깅이 활성화될 때만 표시됩니다.fetch
이 유틸리티는 FETCH API를 구현합니다. 이 함수를 사용하여 타사 엔드포인트에 대한 요청을 수행할 수 있습니다.
context.utils.fetch('http://example.com/movies.json')
.then(response => response.json())
getBuildInfo
이 유틸리티는 현재 태그 런타임 라이브러리의 빌드에 대한 정보가 포함된 개체를 반환합니다.
logger.log(context.utils.getBuildInfo().turbineBuildDate);
개체에는 다음 값이 포함되어 있습니다.
turbineVersion
turbineBuildDate
buildDate
environment
development
, staging
및 production.
을 포함합니다.다음은 반환되는 값을 보여 주는 예제 getBuildInfo
개체입니다.
{
turbineVersion: "1.0.0",
turbineBuildDate: "2016-07-01T18:10:34Z",
buildDate: "2016-03-30T16:27:10Z",
environment: "development"
}
getExtensionSettings
확장 구성 보기에서 마지막으로 저장한 settings
개체를 반환합니다.
logger.log(context.utils.getExtensionSettings());
getSettings
이 유틸리티는 해당 라이브러리 모듈 보기에서 마지막으로 저장한 settings
개체를 반환합니다.
logger.log(context.utils.getSettings());
getRule
이 유틸리티는 모듈을 트리거하는 규칙에 대한 정보가 포함된 개체를 반환합니다.
logger.log(context.utils.getRule());
이 개체에는 다음 값이 포함됩니다.
id
name