

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 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` 字段。