Chuyển tới nội dung chính

Simplize Agent WebSocket — Tài Liệu Tích Hợp

Tài liệu này dành cho frontend developer, mobile developer, và đối tác tích hợp muốn kết nối với Simplize Financial Agent qua WebSocket.


Mục Lục

FileNội dung
Tổng quan kiến trúcKiến trúc tổng quan, vòng đời session, danh sách tất cả events
Kết nối & Xác thựcKết nối WebSocket, xác thực JWT, heartbeat
Lệnh ClientCác lệnh client gửi lên server
Event StreamĐịnh dạng event stream, tất cả block types kèm ví dụ
Tool CallsTool call events, cách render trạng thái
Phê duyệt (HITL)Luồng phê duyệt tool call (Human-in-the-Loop)
Hỏi Người DùngLuồng agent hỏi ngược lại người dùng
History APIHTTP API lấy lịch sử hội thoại
Reconnect & TimeoutXử lý reconnect, server restart, các timeout
Message ReferenceReference đầy đủ tất cả message types (client↔server)
Widget SystemWidget system — parse, render, tất cả widget types

Quick Start — Luồng Tối Thiểu

const ws = new WebSocket('wss://api.simplize.vn/v2/ws')

ws.onmessage = (e) => {
const msg = JSON.parse(e.data)

switch (msg.type) {
case 'connected':
ws.send(JSON.stringify({ type: 'auth', token: accessToken }))
break

case 'auth_ok':
ws.send(JSON.stringify({
type: 'chat',
message: 'Phân tích cổ phiếu VNM',
}))
break

case 'ping':
ws.send(JSON.stringify({ type: 'pong' }))
break

case 'subscribed':
console.log('Session:', msg.session_id, 'Status:', msg.status)
break

case 'message_start':
console.log('Agent bắt đầu trả lời')
break

case 'content_block_delta':
if (msg.delta?.type === 'text_delta') {
process.stdout.write(msg.delta.text)
}
break

case 'message_stop':
console.log('\nXong sau', msg.duration_ms, 'ms')
break
}
}

Tham Chiếu Nhanh — Toàn Bộ Events

Client → Server

typeMô tả
authXác thực với JWT token
chatBắt đầu lượt hội thoại mới
subscribeĐăng ký nhận events của session có sẵn
stopDừng agent đang chạy
push_messageXếp hàng message khi agent đang bận
approvalGửi quyết định phê duyệt / trả lời câu hỏi
ping / pongKeep-alive

Server → Client (Điều Khiển)

typeMô tả
connectedKết nối thành công, kèm thông số kết nối
auth_okXác thực thành công
subscribedĐã đăng ký stream thành công
message_queuedMessage đã được xếp hàng chờ xử lý
ping / pongKeep-alive
errorLỗi protocol hoặc nghiệp vụ

Server → Client (Agent Output)

typeMô tả
message_startBắt đầu một lượt agent trả lời
message_deltaLý do kết thúc lượt
message_stopKết thúc lượt, kèm thời gian xử lý
content_block_startBắt đầu một block nội dung
content_block_deltaNội dung tiếp theo của block
content_block_stopKết thúc block

Block Types (trong content_block_start)

typeKhi nào xuất hiện
thinkingClaude đang suy luận (chain of thought)
textCâu trả lời văn bản của AI
tool_useAgent gọi một công cụ
tool_resultKết quả thực thi công cụ
file_processingĐang xử lý file đính kèm
approval_requestAgent cần người dùng phê duyệt trước khi thực thi
approval_resultKết quả quyết định phê duyệt
approval_timeoutHết thời gian chờ phê duyệt
terminal_user_stoppedNgười dùng đã dừng agent
terminal_errorLỗi không thể phục hồi