# Entrada e Saída

Na Hablla, **toda entrada e saída de um componente é feita em formato JSON**. Isso significa que cada ação dentro do fluxo de automação recebe informações (entrada), processa esses dados e retorna um resultado (saída). Vamos entender melhor como isso funciona e como você pode utilizar essas informações no seu dia a dia.

***

### 🏗 **Fluxo de Dados na Hablla**

1️⃣ **Entrada** → O componente recebe um conjunto de dados em JSON, vindos de outras etapas do fluxo.\
2️⃣ **Processamento** → O componente manipula os dados e faz requisições internas ou externas.\
3️⃣ **Saída** → O componente retorna um JSON com as informações processadas, incluindo status, detalhes da requisição e resultados obtidos.

📌 **Exemplo real na Hablla:**\
Imagine que um componente recebe dados de um contato do WhatsApp e precisa criar um cartão de atendimento no sistema.

***

### 📥 **Entrada de Dados**

A entrada contém todas as informações disponíveis para o componente. Essas informações vêm de componentes anteriores no fluxo.

**Exemplo de entrada (JSON):**

```json
{
  "whatsapp": {
    "name": "Marcus Barboza",
    "phone_number": "5517997275046"
  },
  "person": {
    "name": "Marcus Barboza",
    "customer_status": "lead",
    "id": "675c7667dc2708736e804575"
  },
  "service": {
    "type": "whatsapp",
    "status": "in_bot",
    "id": "67c7503f15788872a1f61328"
  },
  "content": {
    "body": "Hablla, boa tarde!"
  }
}
```

Os dados na Hablla são gerados a partir de interações do usuário, capturados de sistemas externos ou adicionados por componentes anteriores no fluxo de automação. As automações na Hablla podem ser iniciadas por eventos disparados a partir de **componentes receptivos** como **WhatsApp, Instagram, Messenger, Telegram, Email, Telefone**, além de integrações via **Webhooks, CRON** e **Trigger**.

Esses eventos (trigger) podem ser acionados por diferentes tipos de ações dentro da plataforma, como:\
✅ **Interações com Pessoas** → Leads, clientes ou usuários realizando ações no sistema.\
✅ **Organizações** → Atualizações em empresas cadastradas.\
✅ **Cards** → Movimentações dentro de quadros e pipelines.\
✅ **Bot e Chat** → Mensagens enviadas ou recebidas por IA ou operadores humanos.\
✅ **Chamadas Telefônicas e Emails** → Registros e atualizações de comunicações.\
✅ **Campos Personalizados (Custom Fields)** → Mudanças em dados específicos dentro do CRM.\
✅ **Eventos de Sessão** → Login, logout, sessão expirada, status online/offline.\
✅ **Serviços e Transferências** → Atribuições de atendimentos e movimentação entre setores.\
✅ **Tags e Usuários** → Ações relacionadas a segmentação e permissões de usuários.\
✅ **Tarefas e Dicionário de Dados** → Atualizações em tarefas ou informações estruturadas.\
✅ **Conversões e Alterações de Status** → Mudanças em estágios do funil de vendas e atendimento.

Sempre que um desses eventos é ativado na Hablla, ele dispara uma **trigger** que recebe os dados do evento e executa ações configuradas, como: **Criar, Atualizar, Excluir, Mesclar**, entre outras. 🚀

***

### ⚙ **Processamento de Dados**

Entre a **entrada** e a **saída**, o componente manipula os dados recebidos. Ele pode:\
✅ **Consultar um banco de dados** → Buscar informações de clientes, pedidos, etc.\
✅ **Fazer uma chamada para uma API externa** → Como integrar um ERP ou outro sistema de API aberta.\
✅ **Aplicar regras de automação** → Criar, atualizar ou excluir registros na Hablla conforme regras do fluxo.

***

### 📤 **Saída de Dados**

A saída contém o resultado da operação do componente. Ela segue sempre o mesmo formato e inclui:

1️⃣ **value** → Resultado da operação (exemplo: sucesso ou erro).\
2️⃣ **headers** → Cabeçalhos da requisição (útil para depuração e segurança).\
3️⃣ **config** → Configuração da requisição, como URL e tempo de resposta.\
4️⃣ **request** → Caminho da chamada feita pelo componente.\
5️⃣ **data** → O resultado final da operação.

**Exemplo de saída (JSON):**

```json
{
  "status": "fulfilled",
  "value": {
    "status": 200,
    "statusText": "OK",
    "headers": {
      "content-type": "application/json; charset=utf-8",
      "date": "Tue, 04 Mar 2025 19:10:56 GMT"
    },
    "config": {
      "method": "GET",
      "url": "https://api.hablla.com/v3/workspaces/643d802021b6aa9234eb9797/cards"
    },
    "request": {
      "method": "GET",
      "path": "/v3/workspaces/643d802021b6aa9234eb9797/cards?person=675c7667dc2708736e804575"
    },
    "data": {
      "results": [],
      "count": 0,
      "totalItems": 0
    }
  }
}
```

🔹 **O que esses dados significam?**\
✅ **status**: Indica se a operação foi bem-sucedida (`fulfilled`) ou se houve erro.\
✅ **value.status**: O código de resposta HTTP (`200` significa sucesso, `400` erro de requisição, etc.).\
✅ **config.url**: A URL utilizada na requisição.\
✅ **request.path**: O caminho exato da API chamada.\
✅ **data**: O resultado da requisição (neste caso, não encontrou nenhum cartão para essa pessoa).

***

### 🛠 **Como Usar Esses Dados no Fluxo**

💡 Você pode acessar qualquer valor da **entrada** ou da **saída** do componente dentro do fluxo usando a sintaxe:

```plaintext
{{$data?.codigoDoComponente?.caminhoVariavel}}
```

📌 Existem exemplos em [**Usando variáveis**](https://docs.hablla.com/fluxos-de-automacoes/usando-variaveis)

***

### 🚀 **Conclusão**

🔹 **A entrada** contém os dados disponíveis antes do componente ser executado.\
🔹 **O componente** processa esses dados, faz requisições e aplica regras de automação.\
🔹 **A saída** mostra o resultado da operação, permitindo que o fluxo continue automaticamente.

💡 **Dica:** Sempre analise a **entrada** e a **saída** para entender como os dados estão fluindo dentro da automação. Isso facilita identificar erros e configurar suas regras corretamente! 🚀
