Lewati ke konten

Ringkasan Provider Event

Events Providers memungkinkan digital worker Anda merespons trigger eksternal di luar messaging. Provider ini menangani:

  • Webhook dari layanan eksternal
  • Tugas terjadwal (timer/cron)
  • Notifikasi email
  • Notifikasi 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) │
└─────────────────────────────────────────┘

Semua event dinormalisasi ke format umum:

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

Event mengalir melalui NATS:

SubjectTujuan
greentic.events.{env}.{tenant}.{type}Notifikasi event
greentic.events.{env}.{tenant}.{type}.resultHasil pemrosesan event
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