Skip to main content
Plugin Webhooks menambahkan rute HTTP terautentikasi agar sistem eksternal tepercaya (Zapier, n8n, tugas CI, layanan internal) dapat membuat dan mengendalikan TaskFlow OpenClaw terkelola melalui HTTP, tanpa menulis plugin khusus. Plugin berjalan di dalam proses Gateway. Untuk Gateway jarak jauh, instal dan konfigurasikan plugin di host tersebut, lalu mulai ulang Gateway. Plugin dikirim tanpa rute yang dikonfigurasi, sehingga tidak melakukan apa pun sampai Anda menambahkan setidaknya satu rute.

Mengonfigurasi rute

Tetapkan konfigurasi di bawah plugins.entries.webhooks.config:
Bidang rute: secret menerima string biasa atau SecretRef: { source: "env" | "file" | "exec", provider: "default", id: "..." }. SecretRef diresolusi ke dalam snapshot konfigurasi awal Gateway. Ketika rahasia salah satu rute tidak dapat diresolusi, Gateway tetap berjalan dan rute tersebut tetap terdaftar tetapi dingin: permintaan menerima kegagalan autentikasi umum (401). Rute lain tetap tersedia. Perbaiki sumber SecretRef, lalu muat ulang atau mulai ulang Gateway untuk mengaktifkan snapshot baru. Nilai SecretRef tidak pernah diresolusi pada jalur permintaan publik.

Model keamanan

Setiap rute bertindak dengan otoritas TaskFlow dari sessionKey yang dikonfigurasi: rute dapat memeriksa dan mengubah TaskFlow apa pun yang dimiliki sesi tersebut. Akses TaskFlow selalu melalui api.runtime.tasks.managedFlows.bindSession(...), sehingga rute tidak pernah dapat bertindak di luar sesi terikatnya. Untuk membatasi dampak:
  • Gunakan rahasia yang kuat dan unik untuk setiap rute.
  • Utamakan SecretRef daripada rahasia teks biasa sebaris.
  • Ikat rute ke sesi tersempit yang sesuai dengan alur kerja.
  • Ekspos hanya jalur webhook spesifik yang Anda perlukan.
Urutan penanganan permintaan untuk setiap jalur: pemeriksaan metode HTTP (hanya POST) dan Content-Type: application/json, lalu pembatasan laju berjendela tetap (120 permintaan per jendela 60 detik untuk setiap kunci jalur+IP-klien, hingga 4.096 kunci terlacak), lalu pembatasan permintaan yang sedang diproses (8 permintaan serentak per kunci, hingga 4.096 kunci terlacak), lalu autentikasi rahasia bersama, kemudian pembacaan isi JSON berukuran 256 KB / 15 detik. Permintaan yang gagal pada pemeriksaan sebelumnya tidak pernah mencapai pemeriksaan berikutnya.

Format permintaan

Kirim permintaan POST dengan Content-Type: application/json dan salah satu dari Authorization: Bearer <secret> atau x-openclaw-webhook-secret: <secret>:

Tindakan yang didukung

Tindakan yang mengubah data (set_waiting, resume_flow, finish_flow, fail_flow, request_cancel) memerlukan flowId dan expectedRevision untuk konkurensi optimistis; revisi kedaluwarsa mengembalikan 409 revision_conflict.

create_flow

run_task

Nilai runtime yang diizinkan: subagent, acp. startedAt, lastEventAt, dan progressSummary hanya valid ketika status adalah "running"; mengirimkannya dengan status lain akan mengembalikan 400 invalid_request.

Bentuk respons

Tampilan alur dan tugas tidak pernah menyertakan metadata pemilik/sesi, sehingga respons tidak dapat membocorkan sessionKey yang terikat ke rute. Nilai code mencakup not_found, not_managed, revision_conflict, persist_failed, cancel_requested, cancel_pending, terminal, invalid_request, request_rejected, dan kode cadangan khusus tindakan (mutation_rejected, create_rejected, task_not_created, cancel_rejected) ketika perubahan ditolak karena alasan yang tidak dicakup oleh kode bernama di atas.

Terkait