Isolation dan ownership
- Private chat: sender A tidak bercampur dengan sender B.
- Group: chat JID + sender JID membuat progress per anggota terpisah.
- Satu conversation hanya dimiliki satu automation session aktif pada satu waktu.
- Pesan lanjutan kembali ke automation owner tanpa mengulang trigger awal.
- Session persistent di MySQL, bukan sekadar memory worker.
API session manual
js
sesi.aktif
sesi.nama
sesi.state
sesi.tahapAwal
sesi.data
sesi.inputTipe
sesi.mulai("order", { timeout: "15m", tahap: "nomor" })
sesi.tunggu("konfirmasi")
sesi.ke("hasil")
sesi.tahap("konfirmasi")
sesi.simpan("nomor", "0812...")
sesi.ambil("nomor")
sesi.hapus("nomor")
sesi.perpanjang("10m")
sesi.reset()
sesi.selesai()Idle vs fixed timeout
| Mode | Makna |
|---|---|
| idle / sliding | Expiry bergerak mengikuti aktivitas session. |
| fixed / tetap / total | Expiry ditambatkan ke durasi total session; aktivitas tidak memperpanjang batas total. |
Timeout menerima angka detik atau format `30s`, `15m`, `2h`, minimum 30 detik dan maksimum 24 jam.
Reminder sebelum session berakhir
js
sesi.mulai("scan", {
timeout: "30m",
modeWaktu: "tetap",
tahap: "input",
pengingat: [
{ sebelum: "5m", pesan: "Sesi tersisa {sesi.sisaWaktu}." },
{ sebelum: "2m", pesan: "Sesi hampir berakhir." }
]
})Maksimal 10 reminder per session dan nilai `sebelum` harus lebih kecil daripada timeout session.
Waktu session
- {sesi.sisaWaktu}
- {sesi.berjalanSelama}
- {sesi.berakhirPada}
- {sesi.sisaDetik}
- {sesi.berjalanDetik}
Placeholder ini berguna untuk response atau reminder yang ingin menunjukkan status waktu secara real-time.
Reset vs selesai
`sesi.reset()` membersihkan data/progress dan mengembalikan tahap, tetapi session tetap aktif. `sesi.selesai()` menutup session dan membersihkan data temporary.