> ## Documentation Index
> Fetch the complete documentation index at: https://help.treble.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# fact_agent_messages

> Uma linha por cada mensagem em uma conversa de agentes.

# fact\_agent\_messages

Cada linha representa uma mensagem individual dentro de uma conversa de agentes. Inclui o conteúdo, quem a enviou, e os estados de entrega e leitura.

## Que perguntas responde?

* Que mensagens foram enviadas em cada conversa?
* Quem enviou cada mensagem (agente ou usuário)?
* Quantas mensagens cada agente envia por dia?
* Qual foi o tempo de resposta do agente?
* As mensagens foram lidas?

## Colunas

| Coluna                  | Tipo       | Descrição                                                                      |
| ----------------------- | ---------- | ------------------------------------------------------------------------------ |
| `message_id`            | Int32      | Identificador único da mensagem                                                |
| `company_id`            | Int32      | Identificador da empresa (filtrado automaticamente)                            |
| `conversation_id`       | Int32      | Conversa à qual a mensagem pertence                                            |
| `survey_user_id`        | Int64      | Identificador do fluxo de conversa associado. `0` se não tiver                 |
| `created_at`            | DateTime64 | Data e hora da mensagem                                                        |
| `sender`                | String     | Quem enviou a mensagem: `AGENT`, `USER`, `SYSTEM`                              |
| `category`              | String     | Tipo de conteúdo: `text`, `image`, `video`, `audio`, `document`, `hsm`         |
| `content`               | String     | Conteúdo da mensagem em formato JSON                                           |
| `agent_id`              | Int32      | Identificador do agente que enviou (se `sender = AGENT`). `0` se não aplicável |
| `agent_name`            | String     | Nome do agente                                                                 |
| `team_name`             | String     | Equipe do agente                                                               |
| `read_at`               | DateTime64 | Data de leitura. `NULL` se não foi lida                                        |
| `delivered_at`          | DateTime64 | Data de entrega. `NULL` se não foi entregue                                    |
| `reply_provider_msg_id` | String     | ID da mensagem à qual se respondeu (se for uma resposta)                       |
| `reaction`              | String     | Reação à mensagem (emoji)                                                      |

## Consultas de exemplo

### Mensagens por agente nos últimos 7 dias

```sql theme={null}
SELECT
    agent_name,
    count() AS mensagens_enviadas,
    countIf(category = 'hsm') AS templates_enviados
FROM client_analytics.fact_agent_messages
WHERE created_at >= now() - INTERVAL 7 DAY
  AND sender = 'AGENT'
GROUP BY agent_name
ORDER BY mensagens_enviadas DESC
```

### Tempo de primeira resposta por conversa

```sql theme={null}
SELECT
    conversation_id,
    min(created_at) AS primeira_resposta_agente
FROM client_analytics.fact_agent_messages
WHERE sender = 'AGENT'
  AND created_at >= now() - INTERVAL 7 DAY
GROUP BY conversation_id
```

### Conteúdo de mensagens de uma conversa específica

```sql theme={null}
SELECT
    created_at,
    sender,
    agent_name,
    category,
    content
FROM client_analytics.fact_agent_messages
WHERE conversation_id = 12345
ORDER BY created_at
```
