Kích hoạt bằng Webhook
Cho hệ thống khác chạy workflow bằng một lệnh gọi HTTP, kèm dữ liệu đầu vào dạng JSON.
Tính năng mới – đang thử nghiệm, sắp có trên Top AgentIC chính thức.
Webhook là một địa chỉ riêng của workflow. Khi một hệ thống khác (phần mềm nội bộ, form, công cụ tự động hoá…) gửi yêu cầu tới địa chỉ này, workflow sẽ chạy với dữ liệu được gửi kèm.
Mở phần cài đặt webhook
- Mở workflow.
- Bấm nút Lịch chạy & Webhook, nằm cạnh công tắc bật/tắt workflow.
- Chọn thẻ Webhook.
Ai được thay đổi webhook? Chủ sở hữu workflow và người có quyền chỉnh sửa. Người chỉ có quyền xem thì chỉ xem được.
Webhook chỉ chạy bản đã xuất bản
Webhook luôn chạy phiên bản đã xuất bản của workflow. Nếu workflow chưa xuất bản, hộp thoại sẽ cảnh báo. Xem Phiên bản và xuất bản.
Tạo webhook
- Bấm Tạo webhook.
- Hộp thoại hiện Địa chỉ webhook (URL) và Mã bí mật (Bearer token).
- Sao chép mã bí mật ngay và lưu ở nơi an toàn.

Mã bí mật chỉ hiện một lần
Sau khi đóng hộp thoại, bạn không xem lại được mã bí mật. Nếu làm mất, hãy bấm Tạo mã mới.
Sau đó, thẻ Webhook chỉ hiện vài ký tự cuối của mã, kèm lần gọi gần nhất, số lần gọi và một lệnh curl mẫu.

Quản lý webhook
- Tạo mã mới: cấp mã bí mật mới. Mã cũ ngừng hoạt động ngay, nên hãy cập nhật mã mới vào hệ thống đang gọi.
- Công tắc: tạm tắt hoặc bật lại webhook.
- Xoá: xoá webhook.
Gọi webhook
Gửi yêu cầu POST tới địa chỉ webhook với hai header:
Authorization: Bearer <mã bí mật>Content-Type: application/json
Phần thân là một đối tượng JSON. Mỗi khoá ở cấp ngoài cùng là một trường đầu vào của workflow. Thẻ Webhook có liệt kê các trường đầu vào của workflow. Dung lượng phần thân tối đa 256 KB.
Các ví dụ dưới đây dùng địa chỉ và mã giả. Hãy thay bằng địa chỉ và mã của bạn.
curl -X POST 'https://<địa-chỉ-api>/api/v1/hooks/workflows/wh_xxx?wait=30' \
-H 'Authorization: Bearer whk_xxx' \
-H 'Content-Type: application/json' \
-H 'Idempotency-Key: don-hang-1024' \
-d '{"topic": "Tin tức ngân hàng", "max_items": 5}'import requests
resp = requests.post(
"https://<địa-chỉ-api>/api/v1/hooks/workflows/wh_xxx",
params={"wait": 30},
headers={
"Authorization": "Bearer whk_xxx",
"Idempotency-Key": "don-hang-1024",
},
json={"topic": "Tin tức ngân hàng", "max_items": 5},
timeout=90,
)
print(resp.status_code, resp.json())Kết quả trả về
- Mặc định, webhook trả về ngay mã
202kèmrun_id(mã lần chạy),status(trạng thái) vàstatus_url(địa chỉ để theo dõi). - Muốn chờ kết quả, thêm
?wait=với số giây từ 1 đến 60. Nếu workflow chạy xong trong thời gian đó, bạn nhận được luônoutputs(kết quả). Nếu chưa xong, bạn vẫn nhận202như mặc định. - Theo dõi lần chạy: gọi
GETtớistatus_urlvới cùng mã bí mật để lấy trạng thái và kết quả.
Tránh chạy trùng: Idempotency-Key
Nếu hệ thống của bạn có thể gửi lại cùng một yêu cầu (ví dụ khi mạng chập chờn), hãy thêm header Idempotency-Key với một giá trị riêng cho mỗi yêu cầu. Gửi lại cùng giá trị trong vòng 24 giờ sẽ nhận về lần chạy ban đầu, thay vì tạo một lần chạy mới.
Giới hạn và mã lỗi
- Tối đa 30 lần gọi mỗi phút cho mỗi webhook.
- Tối đa 3 lần chạy cùng lúc cho mỗi webhook.
| Mã | Ý nghĩa |
|---|---|
401 | Mã bí mật sai. |
400 | Dữ liệu đầu vào không hợp lệ. Thông báo lỗi nêu tên trường bị sai. |
403 | Webhook hoặc workflow đang tắt, hoặc workflow chưa xuất bản. |
404 | Không tìm thấy webhook (sai địa chỉ hoặc webhook đã bị xoá). |
429 | Gọi quá nhiều, hoặc đã có đủ 3 lần chạy cùng lúc. Hãy đợi rồi gọi lại. |
Webhook chạy với quyền của ai?
Các lần chạy qua webhook dùng quyền của người đã tạo webhook, hoặc người tạo mã mới gần nhất.
Xem các lần chạy qua webhook
Trong Lịch sử chạy, các lần chạy qua webhook được ghi là Webhook.
Xem thêm
- Lên lịch chạy tự động: chạy workflow theo giờ cố định, không cần hệ thống khác gọi.