Struktur minimum
sesi.flow({
nama: "layanan",
trigger: {
command: ["layanan"],
prefix: { mode: "inherit" }
},
mulai: "utama",
timeout: "15m",
modeWaktu: "idle",
tahap: {
utama: {
balas: "Layanan aktif.",
lanjut: "$selesai"
}
}
})| Field | Keterangan |
|---|---|
| nama | Nama flow 1–100 karakter. |
| trigger | Command entry point opsional/tercompile. |
| meta | Metadata Command Registry dan Auto Menu. |
| mulai | Nama state awal. |
| timeout | 30s–24h; format detik/30s/15m/2h. |
| modeWaktu | idle/sliding atau fixed/tetap. |
| pengingat | Maksimal 10 reminder sebelum expiry. |
| komponen | Reusable state fragments. |
| perintah | Command navigation di dalam session. |
| tahap | Object state machine. |
Flow harus static/compileable
Object yang diberikan ke `sesi.flow()` harus JSON-like/static agar compiler dapat membangun dependency, trigger, state graph, capability dan integration manifest sebelum publish.
Beberapa flow dalam satu script
Satu script boleh mendefinisikan beberapa `sesi.flow()`. Runtime hanya menjalankan flow yang dipilih command trigger atau flow yang sedang memiliki active session. Flow lain akan di-skip.
sesi.flow({ nama: "sticker", trigger: { command: ["sticker"] }, ... })
sesi.flow({ nama: "scan", trigger: { command: ["scan"] }, ... })Subflow call / return
Flow dapat memanggil flow lain tanpa membuat session baru. Runtime menyimpan call stack di metadata conversation sehingga child flow dapat menunggu pesan berikutnya dan tetap kembali ke caller setelah worker restart.
sesi.flow({
nama: "main",
mulai: "cek",
tahap: {
cek: {
panggil: {
flow: "customer-lookup",
dengan: { phone: "{sender.phone}" },
simpanHasil: "customer",
lanjut: "selesai"
}
},
selesai: {
balas: "Halo {customer.nama}",
lanjut: "$selesai"
}
}
})
sesi.flow({
nama: "customer-lookup",
mulai: "return",
tahap: {
return: {
kembalikan: { nama: "{args.phone}" }
}
}
})| Field | Makna |
|---|---|
| panggil.flow | Nama static subflow dalam automation yang sama. |
| panggil.dengan | Argument lokal child; dibaca melalui {args.*}. |
| panggil.simpanHasil | Tempat menyimpan nilai return pada data conversation caller. |
| panggil.lanjut | State caller setelah child selesai. |
| kembalikan / return | Nilai yang dikembalikan child ke caller. |
| $return | Kembali ke caller tanpa payload eksplisit. |
Alias Indonesia/English
Beberapa field menerima alias seperti `tahap/states`, `mulai/start`, `aksi/action`, `terima/receive`, `kirim/send`. Dokumentasi merekomendasikan gaya yang konsisten dalam satu flow agar lebih mudah dibaca.