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

> Cada mensaje intercambiado dentro de los flujos conversacionales — la traza completa.

# fact\_treble\_session\_messages

Cada fila es un mensaje dentro de un flujo conversacional: qué envió el bot (o un agente de IA), qué respondió el usuario, cuándo fue entregado y leído. Esta tabla no existía en el warehouse anterior — te da la transcripción completa de cada conversación de flujo.

## ¿Qué preguntas responde?

* ¿Qué se dijo exactamente en una conversación, en orden?
* ¿Qué mensajes fallan en la entrega y con qué error?
* ¿Cuánto tardan los usuarios en leer nuestros mensajes?
* ¿Qué plantillas HSM se están enviando realmente dentro de los flujos?
* ¿Qué respondió la IA en las conversaciones con IA?

## Columnas

| Columna                 | Tipo       | Descripción                                                                                                                                                                    |
| ----------------------- | ---------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| `message_id`            | Int64      | Identificador único del mensaje                                                                                                                                                |
| `company_id`            | Int32      | Tu empresa (filtrado automáticamente)                                                                                                                                          |
| `session_id`            | Int64      | El flujo conversacional al que pertenece este mensaje                                                                                                                          |
| `created_at`            | DateTime64 | Cuándo se creó el mensaje                                                                                                                                                      |
| `sender`                | String     | Quién lo envió: `AI` (el flujo automatizado), `USER` (el usuario final) o `HELPDESK_INTEGRATION` (enviado a través de una integración de CRM/helpdesk conectada)               |
| `type`                  | String     | Tipo de mensaje: `TEXT`, `HSM`, `IMAGE`, `AUDIO`, `VIDEO`, `DOCUMENT`, `STICKER`, `LOCATION`, `CONTACTS`, `WHATSAPP_FLOW`, `WHATSAPP_FLOW_RESPONSE`, `CALL_REQUEST_PERMISSION` |
| `text`                  | String     | Contenido de texto del mensaje                                                                                                                                                 |
| `file_url`              | String     | URL del medio cuando el mensaje incluye un archivo                                                                                                                             |
| `filename`              | String     | Nombre original del archivo para documentos                                                                                                                                    |
| `hsm_id`                | Int32      | Plantilla HSM usada, si aplica; `0` en caso contrario                                                                                                                          |
| `hsm_name`              | String     | Nombre de la plantilla HSM                                                                                                                                                     |
| `delivered_at`          | DateTime64 | Cuándo WhatsApp confirmó la entrega; `NULL` si no fue (aún) entregado                                                                                                          |
| `read_at`               | DateTime64 | Cuándo lo leyó el usuario; `NULL` si no fue leído                                                                                                                              |
| `error`                 | String     | Descripción del error de entrega; vacío si fue exitoso                                                                                                                         |
| `provider_msg_id`       | String     | ID del mensaje en WhatsApp (`wamid`)                                                                                                                                           |
| `reply_provider_msg_id` | String     | Si el mensaje cita/responde a otro, el `wamid` de ese mensaje                                                                                                                  |
| `interaction_answer_id` | Int64      | El paso del flujo al que pertenece este mensaje — se une con `fact_treble_session_nodes.node_record_id`; `0` cuando el mensaje no está ligado a un paso                        |
| `contact_id`            | Int32      | Contacto de Treble; `0` si no hay                                                                                                                                              |
| `reaction`              | String     | Reacción con emoji, si el usuario reaccionó al mensaje                                                                                                                         |
| `synced_at`             | DateTime64 | Cuándo se escribió/corrigió por última vez esta fila                                                                                                                           |

## Consultas de ejemplo

### Reconstruir una conversación

```sql theme={null}
SELECT created_at, sender, type, text, delivered_at, read_at
FROM fact_treble_session_messages
WHERE session_id = {your_session_id}
ORDER BY created_at
```

### Errores de entrega en las últimas 24 horas

```sql theme={null}
SELECT error, count() AS messages
FROM fact_treble_session_messages
WHERE created_at >= now() - INTERVAL 24 HOUR
  AND error != ''
GROUP BY error
ORDER BY messages DESC
```

<Note>
  Casi todos los mensajes traen `interaction_answer_id` — tanto la pregunta que envió el flujo como la respuesta del usuario apuntan al mismo paso. Para emparejar respuestas con preguntas, únelo contra `fact_treble_session_nodes.node_record_id`.
</Note>
