En esta sección
Guías / Eventos en vivo

Eventos en vivo

Escucha los eventos del workspace en tiempo real por SSE, sin montar un webhook.

met.events es el feed de lo que pasa en tu workspace: runs que terminan, mensajes que entran por un canal, contactos que se crean. Puedes leerlo en vivo por Server-Sent Events (SSE) o consultar el historial reciente. Requiere el scope events:read.

Escuchar en vivo con stream()

met.events.stream() abre una suscripción SSE efímera que te emite cada evento apenas ocurre. Es la misma fuente de met listen en la CLI: perfecta para el dev-loop y para tiempo real sin montar un endpoint.

const met = new Met(key, { workspaceId });

for await (const ev of met.events.stream()) {
  console.log(ev.type, ev.data);
}

Cada ev es un { id, type, created, livemode, data } — los mismos tipos del catálogo de webhooks salientes.

Filtrar por tipo

Pasa types para recibir solo lo que te interesa:

for await (const ev of met.events.stream({ types: ['run.completed', 'contact.message.received'] })) {
  if (ev.type === 'run.completed') console.log('run listo:', ev.data);
}

Cortar el stream

Rompe el for await (con break) o pasa un AbortSignal para cerrarlo desde afuera:

const ac = new AbortController();
setTimeout(() => ac.abort(), 30_000);   // corta a los 30s

for await (const ev of met.events.stream({ signal: ac.signal })) {
  console.log(ev.type);
}

Algunos tipos útiles del catálogo: run.completed, run.failed, contact.message.received, contact.created, task.completed, conversation.handoff.

stream() vs. webhooks salientes. met.events.stream es efímero: no reintenta y solo llega mientras tu proceso está conectado. Sirve para desarrollo y tiempo real. Para entrega garantizada cross-instancia (que el evento llegue aunque tu servicio esté caído y se reintente), monta un webhook persistente — ver Webhooks.

Consultar el historial

Cuando no necesitas tiempo real, lee lo ya ocurrido:

const eventos  = await met.events.list();               // últimos eventos (default 50)
const actividad = await met.events.activity();          // actividad del workspace (default 50)
const deItem   = await met.events.itemActivity(1234);   // actividad de un item puntual

Ambos list() y activity() aceptan { limit } para ajustar cuántos registros traer.