Bỏ qua nội dung chính
DocsChạyKích hoạt Webhook

Kích hoạt Webhook

Tạo một lưỡi câu Web, kết nối khả năng xác thực phím API (HMAC để tích hợp di sản), và vẽ bản đồ biến số để hệ thống bên ngoài có thể chạy luồng công việc của bạn.

Một trình điều khiển web cho phép hệ thống bên ngoài (GitHub, CI/CD, Lark, IoT, istream API) bắt đầu làm việc trực tiếp thông qua HTTP PST. Đề nghị phương pháp tiếp cận: thắt kết nối Webok tới một khoá API với phạm vi WRIK và xác thực yêu cầu kích hoạt khóa.

Tạo một cái lưỡi cắm Web và kết nối một phím ADI

  1. Dưới các cài đặt tài khoản vội, tạo một khoá và kiểm tra phạm vi WEBHOOK_TRIGGER (xemĐã cập nhật)
  2. Tạo một cửa sổ Webok từ danh sách Webok hoặc trang chi tiết workflow, chọn workflow đích, và kết nối phím này. Người sáng tạo cần phải chỉnh sửa cho phép trên workflow, và chìa khóa ràng buộc phải là của riêng họ

Bạn cũng có thể sử dụng hệ thống quản lý API (với một phiên điều khiển đăng nhập):

bash
curl -X POST https://braidrun.com/api/webhooks \
  -H "Authorization: Bearer <console-token>" \
  -H "Content-Type: application/json" \
  -d '{
    "workflowId": "<workflow-id>",
    "name": "GitHub Push Webhook",
    "apiKeyId": "<api-key-id>",
    "variableMapping": {
      "branch": "ref",
      "repo_name": "repo"
    }
  }'

Câu trả lời bao gồm một webok-id độc đáo. Địa chỉ Mạng kích hoạt là:

text
POST https://braidrun.com/api/webhooks/<webhook-id>/trigger

Bắt đầu đếm số cân theo kế hoạch: 3 trên Pro, 10 vào đội.

Quy trình làm việc kích hoạt

bash
curl -X POST https://braidrun.com/api/webhooks/<webhook-id>/trigger \
  -H "Authorization: Bearer dyk_<id>_<secret>" \
  -H "Content-Type: application/json" \
  -d '{
    "ref": "refs/heads/main",
    "repo": "my-app"
  }'

Chứng nhận có thể được thông qua bằng ba cách, mà máy phục vụ kiểm tra theo thứ tự này:

text
Authorization: Bearer dyk_<id>_<secret>      # 推荐
X-API-Key: dyk_<id>_<secret>                  # 无法自定义 Authorization 头时
POST .../trigger?api_key=dyk_<id>_<secret>    # 仅限无法设置 header 的场景

Kích hoạt thành công trả về:

json
{
  "executionId": "exec_a3b9c8...",
  "webhookId": "<webhook-id>",
  "workflowId": "<workflow-id>",
  "status": "PENDING",
  "startedAt": 1735632891234
}

Cơ thể yêu cầu phải là một đối tượng JSON, đến 1 MB. Một xác rỗng được đối xử như một vật rỗng; JSON trả lại 400 vật không hợp lệ.

Sơ đồ biến

Nếu không có biến, chuỗi cấp cao, số và các trường chợ đen trong bản đồ tải để làm việc biến dòng chảy của cùng một tên tự động; các vật thể tổ và các mảng được loại trừ khỏi bản đồ tự động.

Để thay đổi tên, hãy cấu hình variableMapping : chìa khóa là tên biến đổi làm việc, giá trị là tên trường tải cao nhất. Chỉ có các trường cấp cao được hỗ trợ; không tìm kiếm đường dẫn tổ.

text
# Webhook 配置
"variableMapping": { "branch": "ref", "repo_name": "repo" }

# 触发 payload
{ "ref": "refs/heads/main", "repo": "my-app" }

# 工作流实际拿到的输入
{ "branch": "refs/heads/main", "repo_name": "my-app" }

Nếu trường bản đồ bị thiếu từ trọng tải, biến không được tiêm và giá trị mặc định trong mẫu làm việc vẫn còn áp dụng (nó sẽ không được ghi đè bằng chuỗi rỗng).

Ký Hiệu HMAC (để tích hợp di sản)

Tên secretKey đặt sử dụng chế độ di sản HMAC: yêu cầu kích hoạt phải bao gồm chữ ký trong đầu trang:

text
X-Webhook-Signature: sha256=<hex(HMAC-SHA256(rawRequestBody, secretKey))>

Chữ ký = HmacSHA256(rawRequestBody, secretKey) , kết xuất như một chuỗi x, có hoặc không có tiền tố sha23 =. Một trận đấu không đúng số 401.

Lưu ý rằng nội dung yêu cầu vẫn còn nguyên

Chữ ký là luồng byte gốc. Không thực hiện định dạng/sắp xếp khóa trước khi tính toán, nếu không chữ ký sẽ không khớp.

Một Webhoook với một khóa API không còn chấp nhận ký hiệu HMAC (ngay cả khi trường bí mậtKey vẫn còn có một giá trị); di chuyển đến ADI Key là một chiều. Một cái móc mạng với một phương pháp thổi điểm không xác minh được danh tính của người bị kích hoạt.

Tên POST /api/webhook-trigger/{webhookId} là vẫn còn tồn tại với hành vi giống hệt nhau; hãy sử dụng con đường chính điển ở trên cho sự tích hợp mới.

Đáp ứng lỗi

trạng thái mãnghĩa là
400Thi thể yêu cầu không hợp lệ JSON
401Khóa ARI là không hợp lệ, thiếu phạm vi WOHOK TRIGGER, không phải là chìa khóa kết nối với Webok này, hoặc ký hiệu HMAC không khớp
404Tên
409Tên
429Gây ra quá thường xuyên; phản ứng bao gồm Rery-Sau và X-RateLimit-* người đứng đầu

Các tình huống truy cập phổ biến

  • GitHub push — Bản đồ tên chi nhánh và xác định tác giả là biến; workflow xây dựng, thử nghiệm và triển khai tự động
  • CI 系统 — Quá trình xây dựng đã hoàn tất → Webhook kích hoạt quy trình phát hành tiếp theo
  • Lark / 飞书机器人 — Kích hoạt xử lý hàng loạt hoạt động sau khi nhận được lệnh cụ thể
  • IoT 上报 — Cảnh báo thiết bị → Webhook kích hoạt quy trình khắc phục sự cố và hội tụ các cảnh báo

Kết thúc điểm

Đường GET /api/webhookscập nhật PUT /api/webhooks/{id}xoá DELETE /api/webhooks/{id}cộng GET /api/webhooks/{id}/stats quay lại kích hoạt thống kê; tất cả những điều này là xác thực quyền kết thúc bàn điều khiển.

Khi dịch vụ khởi động lại

Một execution có lưỡi lê bị gián đoạn bởi một dịch vụ khởi động lại sẽ không tự động: trọng tải được xử lý ở mức gần nhất, và nền tảng không tua lại nó. Việc xử tử đã bị tạm dừng tại bảng điều khiển thủ công là ngoại lệ. Họ tiếp tục như thường lệ một khi được chấp thuận. Để chạy lại, hãy gửi yêu cầu kích hoạt lần nữa (điều này tạo một thực hiện mới).

Các trang liên quan