Bỏ qua tới nội dung
RexAPFTài liệuMở RexAPF Web
Tài liệuWebKhông gian làm việc
Web

Kết nối hệ thống ticket của bạn

Cho Đội Agent tự nhận ticket đã duyệt qua Workflow Hook, đọc và cập nhật ticket qua MCP, rồi gửi kết quả về bằng callback.

3 phút đọc
Trên trang này
  1. 1. Tạo quy trình từ template
  2. 2. Tạo Hook
  3. 3. Gửi webhook
  4. 4. Nhận callback
  5. 5. Cấp MCP cho Đội Agent
  6. 6. Câu hỏi của CLI

Workflow Hook cho phép hệ thống của bạn (Jira, Linear, Zendesk, helpdesk nội bộ…) khởi chạy một quy trình khi có sự kiện, thay vì bạn bấm chạy thủ công. Kết hợp với MCP và callback, bạn có một vòng khép kín: ticket được duyệt → Đội Agent xử lý → ticket được cập nhật.

Hệ thống ticket ──(1) webhook ký HMAC──► Hook của quy trình ──► Đội Agent
       ▲                                                          │
       ├──────(3) callback ký HMAC: run.started … run.succeeded ◄──┤
       └──────(2) MCP: get_ticket, add_internal_comment, set_progress, attach_artifact

Chỉ gửi webhook cho ticket đã được người có thẩm quyền duyệt. Nội dung ticket luôn được Đội Agent coi là dữ liệu không đáng tin, không phải chỉ thị.

1. Tạo quy trình từ template

  1. Quy trình › Tạo quy trình → chọn template Xử lý ticket phần mềm.
  2. Template đặt sẵn: chạy tuần tự BA → DEV → Tester, Phản biện kiểm tra kết quả, tối đa 2 lần sửa mỗi việc, 240 phút, bạn duyệt kết quả cuối.
  3. Chọn Agent cho từng vai trò. DEV và Tester cần connector RexAPF CLI (máy staging) — xem Runtime ngoài.
  4. Gán connector MCP của hệ thống ticket (quyền đọc-ghi) cho Điều phối.
  5. Tab Duyệt › Ghi dữ liệu qua REST / MCP: giữ Hỏi mỗi lần, rồi ở Tool MCP tự chạy tích các tool an toàn như add_internal_comment, set_progress, attach_artifact. Các tool ghi khác vẫn chờ bạn duyệt; Gmail và Lịch luôn chờ duyệt.
  6. Xuất bản.

2. Tạo Hook

Trong trang quy trình → tab Hooks → Tạo Hook:

TrườngGợi ý
Bộ lọcevent bằng ticket.approved
Ánh xạ đầu vàoMặc định gửi cả JSON vào request
Khoá đồng thờiticket.area với tối đa 1 — các ticket cùng khu vực chạy lần lượt
Mã sự kiệnHeader X-Rex-Event-Id, ví dụ ticket:<id>:approval:<vòng>
CallbackURL của hệ thống bạn; khoá callback chỉ hiện một lần khi tạo

Sau khi lưu, bạn nhận địa chỉ Hook và khoá ký (cũng chỉ hiện một lần).

3. Gửi webhook

ts
import { createHmac, randomUUID } from "node:crypto";

async function sendApproved(ticket: { id: string; round: number }, payload: unknown) {
  const body = JSON.stringify(payload);
  const ts = Math.floor(Date.now() / 1000).toString();
  const eventId = `ticket:${ticket.id}:approval:${ticket.round}`;
  const sig = createHmac("sha256", process.env.REX_HOOK_SECRET!).update(`${ts}.${eventId}.${body}`).digest("hex");
  const res = await fetch(process.env.REX_HOOK_URL!, {
    method: "POST",
    headers: { "content-type": "application/json", "X-Rex-Timestamp": ts, "X-Rex-Event-Id": eventId, "X-Rex-Signature": `v1=${sig}` },
    body,
  });
  // 202 accepted | 200 duplicate (đã nhận trước đó) → coi là thành công. 429/5xx → thử lại với backoff.
  return res.status;
}
  • Thời gian lệch tối đa ±5 phút. Gửi lại cùng X-Rex-Event-Id không tạo lượt chạy mới.
  • Muốn xử lý lại ticket: tăng vòng (approval:2).

4. Nhận callback

RexAPF gửi run.started, run.waiting_approval, run.succeeded, run.failed, run.cancelled, run.rejected về URL callback, ký bằng khoá callback trên chuỗi ts.deliveryId.body (header X-Rex-Delivery-Id). Payload có status, summary, runUrl, correlation (ví dụ ticketId) và với run.succeeded có finalOutput — báo cáo JSON của template:

json
{ "summary": "…", "branch": "ticket/123", "prUrl": null, "tests": { "command": "npx vitest run …", "passed": 42, "failed": 0 }, "risks": [] }

Xử lý callback idempotent theo X-Rex-Delivery-Id, bỏ qua sự kiện của vòng cũ, không cho trạng thái đi lùi; luôn trả 2xx sau khi đã xác thực chữ ký.

5. Cấp MCP cho Đội Agent

Hệ thống ticket cung cấp một MCP server (Streamable HTTP, Bearer token) với các tool tối thiểu:

ToolLoạiGhi chú
get_ticket, list_ticketsChỉ đọcChỉ ticket đang được xử lý
add_internal_commentGhiGhi chú nội bộ, người báo không thấy
set_progressGhiChỉ in_progress / awaiting_review
attach_artifactGhibranch (không phải main/master), pr (https), report

Không có tool nào cho Agent duyệt, giải quyết hay từ chối ticket — việc đó luôn thuộc về con người. Thêm MCP server trong Tuỳ biến › Kết nối và gán cho Agent cần dùng.

6. Câu hỏi của CLI

Khi RexAPF CLI hỏi (ví dụ xin cài gói), thẻ CLI đang hỏi bạn hiện trên Bảng điều phối của lượt chạy. Chỉ bạn trả lời; Agent không trả lời thay. Nếu chờ quá thời hạn trong Thông báo & thời hạn, bạn được nhắc lại qua các kênh đã bật.

Trang này có hữu ích không?Cập nhật 23/10/2026