Ir al contenido

Resumen de Providers de Eventos

Los Providers de Eventos permiten que tu trabajador digital responda a triggers externos más allá de la mensajería. Se encargan de:

  • Webhooks de servicios externos
  • Tareas programadas (timers/cron)
  • Notificaciones por correo electrónico
  • Notificaciones por SMS
External Service / Timer
▼ HTTP / Schedule
┌─────────────────────────────────────────┐
│ Events Ingress │
│ (Process incoming event) │
└─────────────────────────────────────────┘
▼ Normalized Event
┌─────────────────────────────────────────┐
│ NATS Bus │
│ greentic.events.{env}.{tenant}.{type}│
└─────────────────────────────────────────┘
┌─────────────────────────────────────────┐
│ Flow Executor │
│ (Process with event flows) │
└─────────────────────────────────────────┘

Todos los eventos se normalizan a un formato común:

pub struct Event {
pub id: String,
pub event_type: String,
pub source: String,
pub timestamp: u64,
pub payload: Value,
pub metadata: Option<Value>,
}
greentic.demo.yaml
providers:
events-webhook:
pack: "providers/events/events-webhook.gtpack"
events-timer:
pack: "providers/events/events-timer.gtpack"
flows/on_event.ygtc
name: handle_event
version: "1.0"
nodes:
- id: process
type: script
config:
script: |
// Process the event
let payload = event.payload;
process_payload(payload)
next: respond
triggers:
- type: event
event_type: "order.created"
target: process

Los eventos fluyen a través de NATS:

SubjectPropósito
greentic.events.{env}.{tenant}.{type}Notificaciones de eventos
greentic.events.{env}.{tenant}.{type}.resultResultados del procesamiento de eventos
nodes:
- id: on_order
type: branch
config:
conditions:
- expression: "event.event_type == 'order.created'"
next: send_confirmation
- expression: "event.event_type == 'order.shipped'"
next: send_tracking
nodes:
- id: daily_report
type: http
config:
method: GET
url: "https://api.example.com/reports/daily"
next: send_email
triggers:
- type: timer
cron: "0 9 * * *" # 9 AM daily
target: daily_report