# Objetos

Objetos representam um conjunto, ou tipo, de informação. Por exemplo, caso você queira que o bot acesse uma lista de produtos, primeiro precisamos criar um objeto chamado **Produto** e depois criar campos dentro deste objeto que definam as propriedades deste produto, como exemplo: Nome, Cor, Tamanho, etc.

Para os leitores desenvolvedores, objetos são similares a uma tabela do banco de dados.

## **Objetos Padrões**

Existem hoje 2 objetos padrões no Cosmo:

* **Usuário:** referente a propriedades do usuário. Seguem os campos padrões:
* &#x20;\- Primeiro Nome\
  &#x20; \- Sobrenome\
  &#x20; \- Email\
  &#x20; \- Telefone\
  &#x20; \- Idade\
  &#x20; \- Idioma\
  &#x20; \- Sexo\ <br>
* **Conversa:** referente as mensagens trocadas com o usuário durante a conversa. Seguem os campos padrões:
* &#x20;\- Usuário (relacionado ao objeto do Usuário)\
  &#x20; \- Canal (Website, Facebook, etc...)\
  &#x20; \- Duração (Duração do contexto da conversa atual)\
  &#x20; \- Primeira Mensagem (Horário)\
  &#x20; \- Última Mensagem (Horário)\
  &#x20; \- Mensagens (Lista de todas as mensagens do contexto da conversa atual)\
  &#x20;     \- Mensagem (Mensagem enviada pelo usuário)\
  &#x20;     \- Percepção (Define as características da mensagem, incluindo o NLP)\
  &#x20;     \- Etapas (As etapas percorridas pela mensagem atual)\
  &#x20;     \- Horário (referente ao envio da mensagem)\ <br>

Dos 2 objetos acima, apenas em **Usuário** é possível criar campos personalizados.

## **Criando Objeto Personalizado**

E é claro que você pode criar novos objetos, com campos personalizados, relacionados ou não entre si.

Para criar basta ir na aba **Dados** e clicar em **Novo Objeto**.

![](https://1728608858-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LSnqDgLbXBccdKMOdEJ%2F-LTwUXNyWdseK-KZJ7hu%2F-LTwUYcZwCrWLPWbgf3i%2Fimage.png?alt=media\&token=35c9c210-e45d-490e-8f55-97e46191a2cd)

Aqui, por exemplo, estamos criando o Objeto **Pedido** e definindo que o Objeto Controlador seja **Usuário**, ou seja, queremos que 1 usuário possa ter 1 ou mais pedidos relacionados. Portanto para existir 1 pedido precisa existir 1 usuário.

No Cosmo, por enquanto, você pode ter um objeto com no máximo 2 níveis de hierarquia se o objeto controlador for **Usuário**, e no máximo 1 nível de hierarquia caso o objeto controlador seja um objeto personalizado.

O nível de hierarquia aqui definimos como o relacionamento entre um objeto e o seu objeto controlador. Ou seja, um relacionamento de objeto pai para objeto filho, onde um registro pai pode estar relacionado a 1 ou mais registros filhos. Portanto considerando 2 níveis teríamos: Objeto Avô > Objeto Pai > Objeto Filho.

CUIDADO: com este modelo de objeto controlador, caso você exclua algum registro do objeto controlador, por exemplo o usuário, todos os registros controlados por este registro de usuário também serão excluídos.

### **Editando Objeto Personalizado**

![](https://1728608858-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LSnqDgLbXBccdKMOdEJ%2F-LTwUXNyWdseK-KZJ7hu%2F-LTwUoF_LFMxG0Idt6uW%2Fimage.png?alt=media\&token=ad2a7736-2525-4f3a-b9a4-e4bd7e0d3f82)

O campo **Nome** se refere a forma como esse campo pode ser usado como referência no fluxo da conversa.

O **Objeto Controlador** não pode ser alterado depois de criado o objeto.

O **Campo de Referência** significa qual o campo será usado quando o pedido aparecer na lista de pesquisas ou relacionado em outros objetos. No exemplo acima, o registro do pedido será representado pelo campo Número do Pedido.

{% hint style="danger" %}
Lembrando que caso você precise baixar os seus objetos personalizados, é necessário seguir um código [JavaScript](https://help.cosmobots.io/help/bot-builder/fluxo-da-conversa/javascript), que você pode encontrar [aqui.](https://help.cosmobots.io/help/bot-builder/fluxo-da-conversa/javascript)
{% endhint %}
