

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

# Exemplos de mapeamentos de tipo de objeto no Amazon Connect Customer Profiles
<a name="examples-object-type-mappings"></a>

## Um mapeamento de tipo de objeto que gera um perfil
<a name="profile-generating-example"></a>

O exemplo a seguir mostra dados que preenchem o perfil padrão.

Este é o objeto de entrada:

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

O código a seguir mostra o mapeamento de objetos de entrada em um objeto de perfil padrão e a indexação `PersonalEmailAddress`, `fullName` e `accountId`, que é uma chave exclusiva.

```
{
    "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"]
            }
        ]
    }
}
```

Observe que `email` e `fullname` estão indexados, mas não são usados para pesquisar o perfil. A conta é a chave exclusiva. É necessário especificar o objeto. Sempre que um objeto com o mesmo ID de conta é ingerido, ele substitui o objeto anterior pelo mesmo ID de conta.

Vários campos são preenchidos no objeto de perfil padrão (veja os campos que têm `Target` definido).

## Um mapeamento de tipo de objeto que não preenche o perfil padrão
<a name="ticket-issue-example"></a>

Este exemplo mostra um caso de uso mais complicado. Ele ingere dados relacionados a um perfil, mas não necessariamente preenche o objeto de perfil padrão.

Este é o objeto de entrada:

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

Veja a seguir uma forma de mapear esses dados:

```
{
    "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"]
            }
        ]
    }
}
```

Esse exemplo ingere os dados e, na primeira consulta, ingere o endereço de e-mail. 
+ Se o endereço de e-mail corresponder a um único perfil, ele será usado para anexar os dados a esse perfil específico. O identificador exclusivo do tíquete é composto pelo e-mail e pelo carimbo de data/hora, já que não existe outro identificador exclusivo.
+ Se não existir nenhum perfil com o e-mail especificado, um novo perfil será criado com o único campo `EmailAddress` preenchido. O objeto ingerido é anexado a esse novo **perfil inferido**. As duas teclas pesquisáveis que podem encontrar o perfil são `_email` e `uniqueTicket`.
+ Se mais de um perfil existir com o endereço de e-mail especificado, um novo perfil será criado com o único campo de `EmailAddress` preenchido e o objeto anexado a esse novo perfil. Esse perfil é criado com a chave `ticketEmail` definida, além de `_email` e `uniqueTicket`. Todos os tíquetes subsequentes desse e-mail são atribuídos a esse novo **perfil inferido**. A razão disso é que a chave ` _email` se refere a três perfis e, portanto, é descartada; no entanto, a chave `ticketEmail` se refere apenas a um único perfil (o novo inferido) e ainda é válida.
+ Nos casos em que um novo **perfil inferido** é criado, o `EmailAddress` campo é preenchido a partir do primeiro objeto que o criou.