# 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**](/fluxos-de-automacoes/usando-variaveis.md)

***

### 🚀 **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! 🚀


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.hablla.com/fluxos-de-automacoes/entrada-e-saida.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
