IntermediateAutomation Engine v1

Sessions

Conversation state persistent di MySQL, terisolasi per user + device + chat + sender dan tetap hidup melewati restart worker.

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

ModeMakna
idle / slidingExpiry bergerak mengikuti aktivitas session.
fixed / tetap / totalExpiry 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.