

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

# Amazon Connect Customer Profiles의 객체 유형 매핑 예제
<a name="examples-object-type-mappings"></a>

## 프로필을 생성하는 객체 유형 매핑
<a name="profile-generating-example"></a>

다음 예제는 표준 프로필을 채우는 데이터를 보여 줍니다.

수신 객체는 다음과 같습니다.

```
{
  "account": 1234,
  "email": "john@examplecorp.com",
  "address": {
     "address1": "Street",
     "zip": "Zip",
     "city": "City"
  },
  "firstName": "John",
  "lastName": "Doe"
}
```

다음 코드는 수신 객체를 표준 프로필 객체에 매핑하고 고유한 키인 `PersonalEmailAddress`, `fullName` 및 `accountId`를 인덱싱하는 것을 보여 줍니다.

```
{
    "Fields": {
        "accountId": {
            "Source": "_source.account",
            "Target": "_profile.AccountNumber",
            "ContentType": "NUMBER"
        },
        "shippingAddress.address1": {
            "Source": "_source.address.address1",
            "Target": "_profile.ShippingAddress.Address1"
        },
        "shippingAddress.postalCode": {
            "Source": "_source.address.zip",
            "Target": "_profile.ShippingAddress.PostalCode"
        },
        "shippingAddress.city": {
            "Source": "_source.address.city",
            "Target": "_profile.ShippingAddress.City"
        },
        "personalEmailAddress": {
            "Source": "_source.email",
            "Target": "_profile.PersonalEmailAddress",
            "ContentType": "EMAIL_ADDRESS"
        },
        "fullName": {
            "Source": "{{_source.firstName}} {{_source.lastName}}"
        },
        "firstName": {
            "Source": "_source.firstName",
            "Target": "_profile.FirstName"
        },
        "lastName": {
            "Source": "_source.lastName",
            "Target": "_profile.LastName"
        }
    },
    "Keys": {
        "_email": [
            {
                "FieldNames": ["personalEmailAddress"]
            }
        ],
        "_fullName": [
            {
                "FieldNames": ["fullName"]
            }
        ],
        "_account": [
            {
                "StandardIdentifiers": ["PROFILE","UNIQUE"],
                "FieldNames": ["accountId"]
            }
        ]
    }
}
```

참고로 `email` 및 `fullname`은 인덱싱되지만 프로필을 검색하는 데 사용되지는 않습니다. 계정은 고유 키입니다. 객체를 지정하는 데 필요합니다. 계정 ID가 동일한 객체가 수집될 때마다 동일한 계정 ID로 이전 객체를 덮어씁니다.

표준 프로필 객체에는 여러 필드가 채워집니다(`Target`이 정의된 필드 참조).

## 표준 프로필을 채우지 않는 객체 유형 매핑
<a name="ticket-issue-example"></a>

이 예에서는 좀 더 복잡한 사용 사례를 보여 줍니다. 프로필과 관련된 데이터를 수집하지만 반드시 표준 프로필 객체를 채우지는 않습니다.

수신 객체는 다음과 같습니다.

```
{
  "email": "john@examplecorp.com",
  "timestamp": "2010-01-01T12:34:56Z",
  "subject": "Whatever this is about",
  "body": "Body of ticket"
}
```

다음은 이 데이터를 매핑하는 한 가지 방법입니다.

```
{
    "Fields": {
        "email": {
            "Source": "_source.email",
            "ContentType": "EMAIL_ADDRESS"
        },
        "timestamp": {
            "Source": "_source.timestamp"
        }
    },
    "Keys": {
        "_email": [
            {
                "StandardIdentifiers": ["PROFILE","LOOKUP_ONLY"],
                "FieldNames": ["email"]
            }
        ],
        "ticketEmail": [
            {
                "StandardIdentifiers": ["PROFILE","SECONDARY","NEW_ONLY"],
                "FieldNames": ["email"]
            }
        ],
        "uniqueTicket": [
            {
                "StandardIdentifiers": ["UNIQUE"],
                "FieldNames": ["email","timestamp"]
            }
        ]
    }
}
```

이 예제에서는 데이터를 수집한 다음 처음 조회할 때 이메일 주소를 수집합니다.
+ 이메일 주소가 단일 프로필과 매칭되면 해당 특정 프로필에 데이터를 연결하는 데 사용됩니다. 다른 고유 식별자가 없으므로 티켓의 고유 식별자는 이메일과 타임스탬프로 구성됩니다.
+ 지정된 이메일에 프로필이 없는 경우 `EmailAddress` 필드 하나가 채워진 새 프로필이 생성됩니다. 수집된 객체는 이 새로운 **추론된 프로필**에 연결됩니다. 프로필을 찾을 수 있는 두 개의 검색 가능한 키는 `_email` 및 `uniqueTicket`입니다.
+ 지정된 이메일 주소를 가진 프로필이 두 개 이상 있는 경우 `EmailAddress` 필드 하나가 채워진 새 프로필이 생성되고 객체가 이 새 프로필에 연결됩니다. 이 프로필은 `_email` 및 `uniqueTicket` 외에 정의된 `ticketEmail` 키를 사용하여 생성됩니다. 해당 이메일의 모든 후속 티켓은 이 새로운 **추론된 프로필**에 할당됩니다. 그 이유는 ` _email` 키가 세 개의 프로필을 참조하므로 삭제되지만 `ticketEmail` 키는 단일 프로필(새로 추론된 프로필)만 참조하고 여전히 유효하기 때문입니다.
+ **추론된 프로필**이 새로 생성되는 경우 해당 프로필을 생성한 첫 번째 객체부터 `EmailAddress` 필드가 채워집니다.