> ## 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

> Una fila por cada mensaje en una conversación de agentes.

# fact\_agent\_messages

Cada fila representa un mensaje individual dentro de una conversación de agentes. Incluye el contenido, quién lo envió, y los estados de entrega y lectura.

## ¿Qué preguntas responde?

* ¿Qué mensajes se enviaron en cada conversación?
* ¿Quién envió cada mensaje (agente o usuario)?
* ¿Cuántos mensajes envía cada agente por día?
* ¿Cuál fue el tiempo de respuesta del agente?
* ¿Los mensajes fueron leídos?

## Columnas

| Columna                 | Tipo       | Descripción                                                                |
| ----------------------- | ---------- | -------------------------------------------------------------------------- |
| `message_id`            | Int32      | Identificador único del mensaje                                            |
| `company_id`            | Int32      | Identificador de la empresa (filtrado automáticamente)                     |
| `conversation_id`       | Int32      | Conversación a la que pertenece el mensaje                                 |
| `survey_user_id`        | Int64      | Identificador del flujo de conversación asociado. `0` si no tiene          |
| `created_at`            | DateTime64 | Fecha y hora del mensaje                                                   |
| `sender`                | String     | Quién envió el mensaje: `AGENT`, `USER`, `SYSTEM`                          |
| `category`              | String     | Tipo de contenido: `text`, `image`, `video`, `audio`, `document`, `hsm`    |
| `content`               | String     | Contenido del mensaje en formato JSON                                      |
| `agent_id`              | Int32      | Identificador del agente que envió (si `sender = AGENT`). `0` si no aplica |
| `agent_name`            | String     | Nombre del agente                                                          |
| `team_name`             | String     | Equipo del agente                                                          |
| `read_at`               | DateTime64 | Fecha de lectura. `NULL` si no fue leído                                   |
| `delivered_at`          | DateTime64 | Fecha de entrega. `NULL` si no fue entregado                               |
| `reply_provider_msg_id` | String     | ID del mensaje al que se respondió (si es una respuesta)                   |
| `reaction`              | String     | Reacción al mensaje (emoji)                                                |

## Consultas de ejemplo

### Mensajes por agente en los últimos 7 días

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

### Tiempo de primera respuesta por conversación

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

### Contenido de mensajes de una conversación 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
```
