Khái niệm
Lệnh và biên nhận
Mọi thao tác ghi mang command_id của riêng bạn, nên thử lại luôn an toàn và phản hồi bị mất luôn đối chiếu được.
Mọi thao tác thay đổi dữ liệu là một lệnh. Bạn tạo một UUID, gửi kèm làm command_id, và Browlix áp dụng lệnh tối đa một lần.
Thử lại an toàn
- Lần đầu, phản hồi là
201vớireplayed: false. - Gửi lại cùng
command_idvới cùng nội dung sẽ nhận kết quả đã lưu với200vàreplayed: true. Không có gì bị áp dụng hai lần. - Gửi cùng
command_idvới nội dung khác làCONFLICT: một id chỉ mang một ý định.
Vì vậy khi yêu cầu bị quá thời gian hoặc mất kết nối, hãy gửi lại với cùng id. Đừng tạo id mới cho lần thử lại — đó sẽ là một lệnh thứ hai.
Sau khi mất phản hồi
Nếu không chắc lệnh đã tới chưa, hãy hỏi biên nhận thay vì ghi lại:
curl https://browlix.com/api/public/v1/receipts/$COMMAND_ID \
-H "Authorization: Bearer $BROWLIX_API_KEY"NOT_FOUND nghĩa là lệnh chưa từng tới, nên gửi lại là an toàn. Biên nhận cho biết lệnh đã kết thúc ra sao.
OUTCOME_UNKNOWN
Một số tác động xảy ra bên ngoài Browlix — trang web gửi form, webhook tới máy chủ của bạn. Khi không xác nhận được tác động của một bước, Browlix nói rõ bằng OUTCOME_UNKNOWN (HTTP 202) thay vì đoán, và tự động hoá không bao giờ tự lặp lại bước đó. Hãy quyết định bằng run_targets.resolve (happened / not_happened) hoặc kiểm tra ở hệ thống đích.
Trong SDK, CLI và MCP
- SDK tự tạo
command_idkhi bạn không truyền và trả lại ởreply.commandId; lần thử lại tự động dùng lại id đó. - CLI in ra id đã dùng; truyền
--command-idđể thử lại đúng lệnh đó. - Tool MCP tự tạo id khi agent không truyền và trả lại trong kết quả; sau khi mất kết nối, agent gọi
receipts_getvới id đó.
