Skip to main content
Plugin Webhooks bổ sung các tuyến HTTP đã xác thực để một hệ thống bên ngoài đáng tin cậy (Zapier, n8n, một tác vụ CI, một dịch vụ nội bộ) có thể tạo và điều khiển các TaskFlow OpenClaw được quản lý qua HTTP mà không cần viết plugin tùy chỉnh. Plugin chạy bên trong tiến trình Gateway. Đối với Gateway từ xa, hãy cài đặt và cấu hình plugin trên máy chủ đó, sau đó khởi động lại Gateway. Plugin không đi kèm tuyến nào được cấu hình, vì vậy sẽ không thực hiện gì cho đến khi bạn thêm ít nhất một tuyến.

Cấu hình các tuyến

Đặt cấu hình trong plugins.entries.webhooks.config:
Các trường của tuyến: secret chấp nhận chuỗi thuần túy hoặc SecretRef: { source: "env" | "file" | "exec", provider: "default", id: "..." }. SecretRef được phân giải vào ảnh chụp nhanh cấu hình khởi động của Gateway. Khi bí mật của một tuyến không thể phân giải, Gateway vẫn tiếp tục chạy và chính tuyến đó vẫn được đăng ký nhưng ở trạng thái lạnh: các yêu cầu nhận lỗi xác thực chung (401). Các tuyến khác vẫn khả dụng. Hãy sửa nguồn SecretRef, sau đó tải lại hoặc khởi động lại Gateway để kích hoạt ảnh chụp nhanh mới. Các giá trị SecretRef không bao giờ được phân giải trên đường dẫn yêu cầu công khai.

Mô hình bảo mật

Mỗi tuyến hoạt động với quyền hạn TaskFlow của sessionKey đã cấu hình: tuyến đó có thể kiểm tra và sửa đổi mọi TaskFlow thuộc sở hữu của phiên đó. Quyền truy cập TaskFlow luôn đi qua api.runtime.tasks.managedFlows.bindSession(...), vì vậy một tuyến không bao giờ có thể hoạt động bên ngoài phiên được liên kết. Để giới hạn phạm vi ảnh hưởng:
  • Sử dụng một bí mật mạnh, duy nhất cho mỗi tuyến.
  • Ưu tiên SecretRef thay vì bí mật văn bản thuần túy nội tuyến.
  • Liên kết các tuyến với phiên có phạm vi hẹp nhất phù hợp với quy trình làm việc.
  • Chỉ công khai đường dẫn webhook cụ thể mà bạn cần.
Thứ tự xử lý yêu cầu cho mỗi đường dẫn: kiểm tra phương thức HTTP (chỉ POST) và Content-Type: application/json, sau đó giới hạn tốc độ theo cửa sổ cố định (120 yêu cầu trong mỗi cửa sổ 60 giây cho mỗi khóa đường-dẫn+IP-máy-khách, theo dõi tối đa 4,096 khóa), tiếp theo là giới hạn yêu cầu đang xử lý (8 yêu cầu đồng thời cho mỗi khóa, theo dõi tối đa 4,096 khóa), rồi xác thực bằng bí mật dùng chung, sau đó đọc nội dung JSON với giới hạn 256 KB / 15 giây. Các yêu cầu không vượt qua kiểm tra trước đó sẽ không bao giờ đến các bước sau.

Định dạng yêu cầu

Gửi yêu cầu POST với Content-Type: application/json và một trong hai Authorization: Bearer <secret> hoặc x-openclaw-webhook-secret: <secret>:

Các hành động được hỗ trợ

Các hành động sửa đổi (set_waiting, resume_flow, finish_flow, fail_flow, request_cancel) yêu cầu flowIdexpectedRevision để kiểm soát đồng thời lạc quan; bản sửa đổi cũ trả về 409 revision_conflict.

create_flow

run_task

Các giá trị runtime được phép: subagent, acp. startedAt, lastEventAtprogressSummary chỉ hợp lệ khi status"running"; gửi chúng với bất kỳ trạng thái nào khác sẽ trả về 400 invalid_request.

Cấu trúc phản hồi

Các chế độ xem luồng và tác vụ không bao giờ chứa siêu dữ liệu về chủ sở hữu/phiên, vì vậy phản hồi không thể làm lộ sessionKey được liên kết với tuyến. Các giá trị code bao gồm not_found, not_managed, revision_conflict, persist_failed, cancel_requested, cancel_pending, terminal, invalid_request, request_rejected và các mã dự phòng dành riêng cho hành động (mutation_rejected, create_rejected, task_not_created, cancel_rejected) khi một thao tác sửa đổi bị từ chối vì lý do không thuộc các mã đã nêu ở trên.

Liên quan