이벤트 유형
이 페이지에서는 Adobe Experience Platform Web SDK 태그 확장에서 제공하는 Adobe Experience Platform 이벤트 유형에 대해 설명합니다. 규칙 작성에 사용되며 xdm
개체의 eventType
필드와 혼동하면 안 됩니다.
이벤트 보내기 완료
일반적으로 속성에는 Adobe Experience Platform Edge Network에 이벤트를 보내기 위해 이벤트 보내기 작업을 사용하는 규칙이 하나 이상 있습니다. 이벤트가 Edge Network으로 전송될 때마다 유용한 데이터가 있는 응답이 브라우저에 반환됩니다. 이벤트 보내기 완료 이벤트 유형이 없으면 이 반환된 데이터에 액세스할 수 없습니다.
반환된 데이터에 액세스하려면 별도의 규칙을 만든 다음 이벤트 보내기 완료 이벤트를 규칙에 추가하십시오. 이 규칙은 이벤트 보내기 작업의 결과로 서버에서 성공적인 응답을 받을 때마다 트리거됩니다.
이벤트 보내기 완료 이벤트가 규칙을 트리거할 때 서버에서 반환된 데이터를 제공하여 특정 작업을 수행하는 데 유용할 수 있습니다. 일반적으로 Core 확장에서 사용자 지정 코드 작업을 이벤트 보내기 완료 이벤트를 포함하는 동일한 규칙에 추가합니다. 사용자 지정 코드 작업에서 사용자 지정 코드는 이름이 event
인 변수에 액세스할 수 있습니다. 이 event
변수에는 서버에서 반환된 데이터가 포함됩니다.
Edge Network에서 반환된 데이터를 처리하는 규칙은 다음과 같습니다.
다음은 이 규칙에서 사용자 지정 코드 작업을 사용하여 특정 작업을 수행하는 방법에 대한 몇 가지 예입니다.
개인화된 콘텐츠 수동 렌더링
응답 데이터 처리 규칙에 있는 사용자 지정 코드 작업에서 서버에서 반환된 개인화 제안에 액세스할 수 있습니다. 이렇게 하려면 다음 사용자 지정 코드를 입력합니다.
var propositions = event.propositions;
event.propositions
이(가) 있으면 개인화 제안 개체가 포함된 배열입니다. 배열에 포함된 제안은 대부분 이벤트를 서버에 보낸 방식에 따라 결정됩니다.
이 첫 번째 시나리오에서는 결정 렌더링 확인란을 선택하지 않았고 이벤트를 보내는 이벤트 보내기 작업 내에 결정 범위를 제공하지 않았다고 가정해 봅니다.
이 예제에서 propositions
배열에는 자동 렌더링에 적합한 이벤트와 관련된 제안만 포함됩니다.
propositions
배열은 다음 예제와 유사할 수 있습니다.
[
{
"id": "AT:eyJhY3Rpdml0eUlkIjoiMTI3MDE5IiwiZXhwZXJpZW5jZUlkIjoiMCJ9",
"scope": "__view__",
"items": [
{
"id": "11223344",
"schema": "https://ns.adobe.com/personalization/dom-action",
"data": {
"content": "<h2 style=\"color: yellow\">An HTML proposition.</h2>",
"selector": "#hero",
"type": "setHtml"
},
"meta": {}
}
],
"renderAttempted": false
},
{
"id": "AT:PyJhY3Rpdml0eUlkIjoiMTI3MDE5IiwiZXhwZXJpZW5jZUlkIjoiMCJ8",
"scope": "__view__",
"items": [
{
"id": "11223345",
"schema": "https://ns.adobe.com/personalization/dom-action",
"data": {
"content": "<h2 style=\"color: yellow\">Another HTML proposition.</h2>",
"selector": "#sidebar",
"type": "setHtml"
},
"meta": {}
}
],
"renderAttempted": false
}
]
이벤트를 보낼 때 결정 렌더링 확인란이 선택되어 있지 않으므로 SDK에서 콘텐츠를 자동으로 렌더링하지 않았습니다. 그러나 SDK는 자동 렌더링에 적합한 콘텐츠를 계속 자동으로 검색했으며, 원하는 경우 수동으로 렌더링하도록 제공했습니다. 각 제안 개체의 renderAttempted
속성이 false
(으)로 설정되어 있습니다.
이벤트를 보낼 때 대신 결정 렌더링 확인란을 선택했다면 SDK에서 자동 렌더링에 적합한 제안을 렌더링하려고 했을 것입니다. 따라서 각 제안 객체의 renderAttempted
속성은 true
(으)로 설정됩니다. 이 경우 이러한 제안을 수동으로 렌더링할 필요가 없습니다.
지금까지 자동 렌더링에 적합한 개인화 콘텐츠(예: Adobe Target의 시각적 경험 작성기에서 만든 콘텐츠)만 살펴보았습니다. 자동 렌더링에 적합하지 않은 개인화 콘텐츠를 검색하려면 이벤트 보내기 작업의 결정 범위 필드를 사용하여 결정 범위를 제공하여 콘텐츠를 요청하십시오. 범위는 서버에서 검색할 특정 제안을 식별하는 문자열입니다.
이벤트 보내기 작업은 다음과 같습니다.
이 예제에서 salutation
또는 discount
범위와 일치하는 서버에 제안이 있으면 반환되어 propositions
배열에 포함됩니다. 이벤트 보내기 작업에서 렌더링 결정 또는 결정 범위 필드를 구성하는 방법에 관계없이 자동 렌더링에 적합한 제안이 propositions
배열에 계속 포함됩니다. 이 경우 propositions
배열은 다음 예제와 비슷합니다.
[
{
"id": "AT:cZJhY3Rpdml0eUlkIjoiMTI3MDE5IiwiZXhwZXJpZW5jZUlkIjoiMCJ2",
"scope": "salutation",
"items": [
{
"schema": "https://ns.adobe.com/personalization/json-content-item",
"data": {
"id": "4433221",
"content": {
"salutation": "Welcome, esteemed visitor!"
}
},
"meta": {}
}
],
"renderAttempted": false
},
{
"id": "AT:FZJhY3Rpdml0eUlkIjoiMTI3MDE5IiwiZXhwZXJpZW5jZUlkIjoiMCJ0",
"scope": "discount",
"items": [
{
"schema": "https://ns.adobe.com/personalization/html-content-item",
"data": {
"id": "4433222",
"content": "<div>50% off your order!</div>",
"format": "text/html"
},
"meta": {}
}
],
"renderAttempted": false
},
{
"id": "AT:eyJhY3Rpdml0eUlkIjoiMTI3MDE5IiwiZXhwZXJpZW5jZUlkIjoiMCJ9",
"scope": "__view__",
"items": [
{
"id": "11223344",
"schema": "https://ns.adobe.com/personalization/dom-action",
"data": {
"content": "<h2 style=\"color: yellow\">An HTML proposition.</h2>",
"selector": "#hero",
"type": "setHtml"
},
"meta": {}
}
],
"renderAttempted": false
},
{
"id": "AT:PyJhY3Rpdml0eUlkIjoiMTI3MDE5IiwiZXhwZXJpZW5jZUlkIjoiMCJ8",
"scope": "__view__",
"items": [
{
"id": "11223345",
"schema": "https://ns.adobe.com/personalization/dom-action",
"data": {
"content": "<h2 style=\"color: yellow\">Another HTML proposition.</h2>",
"selector": "#sidebar",
"type": "setHtml"
},
"meta": {}
}
],
"renderAttempted": false
}
]
이 시점에서 맞춤법이 보이는 대로 제안 콘텐츠를 렌더링할 수 있습니다. 이 예에서 discount
범위와 일치하는 HTML은 Adobe Target의 양식 기반 경험 작성기를 사용하여 작성된 경험 제안입니다. 페이지에 ID가 daily-special
인 요소가 있고 discount
제안의 콘텐츠를 daily-special
요소로 렌더링하려고 한다고 가정해 보십시오. 다음을 수행합니다.
event
개체에서 제안을 추출합니다.discount
범위의 제안을 찾아 각 제안을 반복합니다.- 명제를 찾으면 명제의 각 항목을 반복하여 HTML 콘텐츠인 항목을 찾습니다. (가정하는 것보다 확인하는 것이 좋습니다.)
- HTML 콘텐츠가 들어 있는 항목을 찾으면 페이지에서
daily-special
요소를 찾아 해당 HTML을 개인화된 콘텐츠로 바꾸십시오.
사용자 지정 코드 작업 내의 사용자 지정 코드가 다음과 같이 나타날 수 있습니다.
var propositions = event.propositions;
var discountProposition;
if (propositions) {
// Find the discount proposition, if it exists.
for (var i = 0; i < propositions.length; i++) {
var proposition = propositions[i];
if (proposition.scope === "discount") {
discountProposition = proposition;
break;
}
}
}
var discountHtml;
if (discountProposition) {
// Find the item from proposition that should be rendered.
// Rather than assuming there a single item that has HTML
// content, find the first item whose schema indicates
// it contains HTML content.
for (var j = 0; j < discountProposition.items.length; j++) {
var discountPropositionItem = discountProposition.items[i];
if (discountPropositionItem.schema === "https://ns.adobe.com/personalization/html-content-item") {
discountHtml = discountPropositionItem.data.content;
break;
}
}
}
if (discountHtml) {
// Discount HTML exists. Time to render it.
var dailySpecialElement = document.getElementById("daily-special");
dailySpecialElement.innerHTML = discountHtml;
}
Adobe Target 응답 토큰 액세스
Adobe Target에서 반환된 Personalization 콘텐츠에는 활동, 오퍼, 경험, 사용자 프로필, 지역 정보 등에 대한 세부 정보인 응답 토큰이 포함됩니다. 이러한 세부 정보는 서드파티 도구와 공유하거나 디버깅에 사용할 수 있습니다. Adobe Target 사용자 인터페이스에서 응답 토큰을 구성할 수 있습니다.
응답 데이터 처리 규칙에 있는 사용자 지정 코드 작업에서 서버에서 반환된 개인화 제안에 액세스할 수 있습니다. 이렇게 하려면 다음 사용자 지정 코드를 입력합니다.
var propositions = event.propositions;
event.propositions
이(가) 있으면 개인화 제안 개체가 포함된 배열입니다. result.propositions
의 콘텐츠에 대한 자세한 내용은 개인화된 콘텐츠를 수동으로 렌더링을 참조하십시오.
웹 SDK에서 자동으로 렌더링된 모든 명제에서 모든 활동 이름을 수집하여 단일 배열로 푸시한다고 가정합니다. 그런 다음 단일 스토리지를 서드파티로 전송할 수 있습니다. 이 경우 사용자 지정 코드 작업 내에 사용자 지정 코드를 작성하십시오.
event
개체에서 제안을 추출합니다.- 각 제안을 반복합니다.
- SDK가 제안을 제공했는지 확인합니다.
- 그렇다면, 명제의 각 항목을 반복해라.
- 응답 토큰이 포함된 개체인
meta
속성에서 활동 이름을 검색합니다. - 활동 이름을 배열에 푸시합니다.
- 활동 이름을 서드파티에 보냅니다.
var propositions = event.propositions;
if (propositions) {
var activityNames = [];
propositions.forEach(function(proposition) {
if (proposition.renderAttempted) {
proposition.items.forEach(function(item) {
if (item.meta) {
// item.meta contains the response tokens.
var activityName = item.meta["activity.name"];
// Ignore duplicates
if (activityNames.indexOf(activityName) === -1) {
activityNames.push(activityName);
}
}
});
}
});
// Now that activity names are in an array,
// you can send them to a third party or use
// them in some other way.
}