Webhook
Gateway có thể mở một endpoint webhook HTTP nhỏ cho các kích hoạt bên ngoài.Bật
hooks.tokenlà bắt buộc khihooks.enabled=true.hooks.pathmặc định là/hooks.
Xác thực
Every request must include the hook token. 12. Ưu tiên header:Authorization: Bearer <token>(khuyến nghị)x-openclaw-token: <token>?token=<token>(đã ngừng; ghi log cảnh báo và sẽ bị loại bỏ trong bản phát hành chính trong tương lai)
Endpoint
POST /hooks/wake
Nội dung (payload):
textbắt buộc (string): Mô tả sự kiện (ví dụ: “New email received”).modetùy chọn (now|next-heartbeat): Có kích hoạt heartbeat ngay lập tức (mặc địnhnow) hay chờ lần kiểm tra định kỳ tiếp theo.
- Xếp hàng một sự kiện hệ thống cho phiên chính
- Nếu
mode=now, kích hoạt heartbeat ngay lập tức
POST /hooks/agent
Nội dung (payload):
messagebắt buộc (string): Prompt hoặc thông điệp để tác tử xử lý.nametùy chọn (string): Tên dễ đọc cho hook (ví dụ: “GitHub”), dùng làm tiền tố trong tóm tắt phiên.agentIdtùy chọn (string): Định tuyến hook này tới một agent cụ thể. ID không xác định sẽ quay về agent mặc định. Khi được thiết lập, hook sẽ chạy باستخدام workspace và cấu hình của agent đã được phân giải.sessionKeytùy chọn (string): Khóa được dùng để xác định phiên của agent. Mặc định, trường này sẽ bị từ chối trừ khihooks.allowRequestSessionKey=true.wakeModetùy chọn (now|next-heartbeat): Có kích hoạt heartbeat ngay lập tức (mặc địnhnow) hay chờ lần kiểm tra định kỳ tiếp theo.delivertùy chọn (boolean): Nếutrue, phản hồi của agent sẽ được gửi tới kênh nhắn tin. Mặc định làtrue. Các phản hồi chỉ mang tính heartbeat xác nhận sẽ tự động bị bỏ qua.channeltùy chọn (string): Kênh nhắn tin để phân phối. Một trong:last,whatsapp,telegram,discord,slack,mattermost(plugin),signal,imessage,msteams. Mặc định làlast.tooptional (string): The recipient identifier for the channel (e.g., phone number for WhatsApp/Signal, chat ID for Telegram, channel ID for Discord/Slack/Mattermost (plugin), conversation ID for MS Teams). 14. Mặc định là người nhận cuối cùng trong main session.-
modeltùy chọn (string): Ghi đè model (ví dụ:anthropic/claude-3-5-sonnethoặc một alias). Vì lý do này, WebChat cho phép bạn xem ngữ cảnh xuyên kênh cho agent đó tại một nơi.
timeoutSecondstùy chọn (number): Thời lượng tối đa cho lần chạy tác tử tính bằng giây.timeoutSecondstùy chọn (number): Thời lượng tối đa cho lần chạy tác tử tính bằng giây.
- Chạy một lượt tác tử cô lập (khóa phiên riêng)
- Luôn đăng một bản tóm tắt vào phiên chính
- Nếu
wakeMode=now, kích hoạt heartbeat ngay lập tức
POST /hooks/<name> (ánh xạ)
Các ghi đè sessionKey trong payload /hooks/agent bị vô hiệu hóa theo mặc định.
- Khuyến nghị: đặt một
hooks.defaultSessionKeycố định và tắt ghi đè từ request. - Tùy chọn: chỉ cho phép ghi đè từ request khi cần thiết và giới hạn tiền tố.
POST /hooks/<name> (ánh xạ)
- Tên hook tùy chỉnh được phân giải thông qua
hooks.mappings(xem cấu hình). A mapping can turn arbitrary payloads intowakeoragentactions, with optional templates or code transforms.
hooks.presets: ["gmail"]bật ánh xạ Gmail tích hợp sẵn.hooks.mappingscho phép bạn định nghĩamatch,action, và template trong cấu hình.hooks.transformsDir+transform.moduletải một module JS/TS cho logic tùy chỉnh.hooks.transformsDir(nếu được đặt) phải nằm trong thư mục gốc transforms dưới thư mục cấu hình OpenClaw của bạn (thường là~/.openclaw/hooks/transforms).transform.modulephải được phân giải trong thư mục transforms hiệu lực (các đường dẫn traversal/escape sẽ bị từ chối).
- Dùng
match.sourceđể giữ một endpoint ingest chung (định tuyến theo payload). - Biến đổi TS yêu cầu trình tải TS (ví dụ:
bunhoặctsx) hoặc.jsđã biên dịch sẵn khi chạy. - Đặt
deliver: true+channel/totrên các ánh xạ để định tuyến phản hồi tới bề mặt chat (channelmặc định làlastvà sẽ rơi về WhatsApp). agentIdđịnh tuyến hook đến một agent cụ thể; các ID không xác định sẽ quay về agent mặc định.hooks.allowedAgentIdsgiới hạn việc định tuyếnagentIdtường minh. Bỏ qua (hoặc bao gồm*) để cho phép bất kỳ agent nào. Đặt[]để từ chối định tuyếnagentIdtường minh.hooks.defaultSessionKeythiết lập session mặc định cho các lần chạy hook agent khi không cung cấp key tường minh.hooks.allowRequestSessionKeykiểm soát việc payload/hooks/agentcó được phép đặtsessionKeyhay không (mặc định:false).hooks.allowedSessionKeyPrefixestùy chọn giới hạn các giá trịsessionKeytường minh từ payload request và mapping.allowUnsafeExternalContent: truetắt lớp bao an toàn nội dung bên ngoài cho hook đó (nguy hiểm; chỉ dùng cho nguồn nội bộ đáng tin cậy).-
openclaw webhooks gmail setupghi cấu hìnhhooks.gmailchoopenclaw webhooks gmail run.- Xem Gmail Pub/Sub để biết toàn bộ luồng Gmail watch.
Phản hồi
200cho/hooks/wake202cho/hooks/agent(đã bắt đầu chạy async)401khi xác thực thất bại429sau các lần xác thực thất bại lặp lại từ cùng một client (kiểm traRetry-After)400khi payload không hợp lệ413khi payload quá lớn
Ví dụ
Dùng mô hình khác
Thêmmodel vào payload của tác tử (hoặc ánh xạ) để ghi đè mô hình cho lần chạy đó:
agents.defaults.models, hãy đảm bảo mô hình ghi đè được bao gồm trong đó.
Bảo mật
- Giữ các endpoint hook phía sau loopback, tailnet, hoặc reverse proxy đáng tin cậy.
- Dùng hook token riêng; không tái sử dụng token xác thực của gateway.
- Các lần xác thực thất bại lặp lại sẽ bị giới hạn tốc độ theo từng địa chỉ client để làm chậm các nỗ lực brute-force.
- Nếu bạn sử dụng định tuyến multi-agent, hãy đặt
hooks.allowedAgentIdsđể giới hạn việc chọnagentIdtường minh. - Giữ
hooks.allowRequestSessionKey=falsetrừ khi bạn cần session do phía gọi tự chọn. - Nếu bạn bật
sessionKeytừ request, hãy giới hạnhooks.allowedSessionKeyPrefixes(ví dụ:["hook:"]). - Tránh đưa payload thô nhạy cảm vào log webhook.
-
- Payload hook được xem là không đáng tin cậy và mặc định được bọc trong các ranh giới an toàn.
- Nếu bạn buộc phải tắt điều này cho một hook cụ thể, hãy đặt
allowUnsafeExternalContent: truetrong mapping của hook đó (nguy hiểm).