Lewati ke konten utama

Otomasi

Otomasi menjalankan instruksi sesuai jadwal dan mengirim hasil sebagai chat. Ringkasan harian, ulasan mingguan, laporan bulanan — setiap proses berjalan di server, masuk daftar chat, dan dapat dilanjutkan.

Anatomi​

Otomasi memiliki nama, instruksi, maksimal lima pemicu, model opsional, target, dan pemberitahuan. Chat session mengantrekan percakapan; Work task memulai Work terisolasi dengan kebijakan opsional. Kegagalan masuk kotak pemberitahuan. Terpisah, menyalakan Hasil otomatisasi di Pengaturan → Notifikasi → Notifikasi email mengirimkan email berisi hasil setiap proses begitu administrator mengonfigurasi server email keluar (lihat Notifikasi). Nama dan instruksi terenkripsi. Otomasi milik pembuat.

Pemicu: once, hourly, daily, weekly, monthly, yearly. Proses berikutnya adalah kejadian terdekat menurut zona server.

Pemicu Peristiwa​

Jenis ketujuh, event, sama sekali tidak berjam: ia menyala saat salah satu pemberitahuan Anda tiba.

{ "kind": "event", "event": "channel-mention", "match": "release" }

event boleh berupa jenis pemberitahuan apa pun kecuali automation-failed — sebuah rutin tidak boleh bisa memulai ulang dirinya sendiri dari kegagalannya sendiri. match opsional adalah uji substring tanpa membedakan huruf besar/kecil terhadap judul pemberitahuan; tanpanya, setiap pemberitahuan jenis itu memicu rutin.

Pemicu peristiwa tidak pernah menyumbang waktu proses berikutnya. Otomasi yang seluruh pemicunya berupa peristiwa karena itu tidak menampilkan proses berikutnya: daftar dan dialog sunting berkata Berjalan saat … sebagai gantinya. Mencampur pemicu peristiwa dengan jadwal tidak masalah — pemicu terjadwal tetap menggerakkan jam.

Dua pengaman membatasi dampaknya. Sebuah rutin menyala paling banyak sekali per menit dari peristiwa, seberapa pun sibuknya aliran itu, dan notifikasi kegagalan proses itu sendiri tidak pernah memicu ulang rutin yang menghasilkannya.

Proses menerima apa yang memicunya, ditambahkan ke instruksinya:

---
Trigger payload (JSON):
{"event":"channel-mention","title":"...","body":"...","href":"..."}

Eksekusi​

Penjadwal bersewa berjalan tiap menit agar satu replika memajukan jadwal. Saat jatuh tempo, ia mencatat proses, mengantrekan automation.run.v1, dan memperbarui next_run_at dengan compare-and-set. Pekerjaan membuat chat dan memakai jalur generasi persisten.

Jika server mati, kejadian terakhir berjalan sekali dan yang lama dilewati. Jeda membersihkan jadwal; lanjut/sunting menghitung ulang. Hapus menghapus riwayat.

Status berasal dari jurnal: berhasil setelah generasi, gagal pada dead-letter, stalled jika tidak mulai 30 menit.

Target Work memakai siklus Work. Email hasil untuk proses bertarget Work membawa ringkasan yang disimpan proses Work itu sendiri — apa yang menjadi akhir pekerjaan agen, teks yang sama yang ditampilkan riwayat proses tugasnya — dan kembali ke status satu baris tugas jika proses itu berasal dari sebelum ringkasan tersimpan ada. Akses diperiksa saat jadwal; pencabutan memberi work-access-denied. Kebijakan diverifikasi dan model harus mendukung alat.

Rutinitas Agen​

Otomasi dapat mengikat tugas yang ada melalui workTaskId (panel agen). Setiap kejadian memakai ruang, percakapan, model, penyedia, dan kebijakan tugas. Tugas hilang memberi work-task-missing; sibuk memberi work-task-busy.

Pemicu webhook​

Selain jadwal, otomasi dapat dipicu sistem eksternal — pipeline CI, layanan cron, otomasi rumah. Dalam dialog sunting otomasi, Pemicu webhook → Aktifkan membuat secret per otomasi; hanya SHA-256-nya yang disimpan, jadi teks aslinya ditampilkan tepat sekali. Merotasi secret langsung membatalkan yang lama, dan menonaktifkan webhook menutup endpoint kembali.

Sistem eksternal memicu otomasi dengan:

curl -X POST https://your-host/api/automations/<automationId>/webhook \
-H "Authorization: Bearer lwh_..."

(X-Libre-Webhook-Secret: lwh_... juga berfungsi sebagai header alternatif.) Responsnya 202 berisi id proses yang diantrekan — jalur jalankan-manual yang sama dengan Jalankan sekarang, sehingga proses selesai, memberi notifikasi, dan muncul di riwayat secara identik. Perbandingan secret bersifat constant-time, otomasi yang tidak ada dan secret yang salah menjawab identik (tidak ada oracle id otomasi), dan otomasi yang dijeda menjawab 409: berbeda dengan Jalankan sekarang milik pemilik, pemanggil eksternal tidak dapat menembus jeda.

Sebuah objek JSON di badan permintaan ikut masuk ke proses sebagai payload pemicunya, sehingga rutin dapat melihat apa yang sedang direaksikannya:

curl -X POST https://your-host/api/automations/<automationId>/webhook \
-H "Authorization: Bearer lwh_..." \
-H "Content-Type: application/json" \
-d '{"commit":"abc123","branch":"main"}'

Payload itu ditambahkan ke instruksi yang dijalankan proses, di bawah judul Trigger payload (JSON): — berlaku sama untuk proses chat, tugas Work baru, maupun rutin yang terikat tugas. Hanya objek JSON yang dibawa (larik dan skalar diabaikan), dan payload yang bentuk serialisasinya melebihi 4000 karakter dibuang alih-alih dipotong, dengan peringatan di log server. Pemicu tanpa badan tetap berperilaku seperti sebelumnya.

API​

Semua endpoint kecuali pemicu webhook memerlukan autentikasi dan hanya bekerja pada otomasi milik pemanggil; pemicu webhook diautentikasi dengan secret per otomasi.

MetodeJalurTujuan
GET/api/automationsDaftar
POST/api/automationsBuat
GET/api/automations/occurrences?from=&to=Kejadian
GET/api/automations/runsRiwayat
GET/api/automations/runs/summaryRingkasan
POST/api/automations/runs/seenTandai dilihat
GET/api/automations/:automationIdBaca
PUT/api/automations/:automationIdUbah
DELETE/api/automations/:automationIdHapus
POST/api/automations/:automationId/pauseJeda
POST/api/automations/:automationId/resumeLanjut
POST/api/automations/:automationId/runJalankan
POST/api/automations/:automationId/webhookPicu via secret (202)
POST/api/automations/:automationId/webhook-secretBuat/rotasi secret
DELETE/api/automations/:automationId/webhook-secretNonaktifkan webhook

Pengguna dapat menyimpan 50 otomasi; nama 200 karakter, instruksi 20.000.