UserTyping
Tổng quan luồng xử lý
Client gửi sự kiện "UserTyping" qua WebSocket tới
cs-chat-realtime-svc.
cs-chat-realtime-svc chuyển tiếp sự kiện tới
cs-event-center-svc.
cs-event-center-svc đẩy sự kiện vào Kafka.
cs-consumer đọc Kafka và gọi sang
cs-agent-svc(thông qua gRPC
NotifyUserTyping).
cs-agent-svc (dự đoán) sẽ xử lý logic thông báo cho Agent hoặc AI Bot, và có thể đẩy ngược lại sự kiện socket cho người nhận (tương tự luồng realtime).
Chi tiết từng bước
1. Tiếp nhận sự kiện: cs-chat-realtime-svc
Tương tự như Send/Seen,
cs-chat-realtime-svcnhận sự kiện từ WebSocket.
Nó sẽ gọi sang
cs-event-center-svcvới EventType là KafkaEventUserTyping (hoặc tương tự).
2. Điều phối sự kiện: cs-event-center-svc
Nhận request gRPC.
Đẩy message vào Kafka Topic tương ứng với sự kiện User Typing.
3. Xử lý logic nghiệp vụ: cs-consumer
Vị trí xử lý: internal/controller/event/user_typing.go -> internal/logic/event/message.go.
Logic:
Consume message từ Kafka.
Hàm ProcessUserTyping (trong internal/logic/event/message.go) gom nhóm các sự kiện theo
để tránh spam (debounce/throttle).
Tạo danh sách
.
Gọi gRPC sang
(biến
là
).
Hàm được gọi là
.
4. Điểm khác biệt quan trọng
Không lưu DB: Sự kiện "đang gõ" là tạm thời (ephemeral), không có giá trị lưu trữ lâu dài nên không gọi sang
để lưu vào MongoDB.
Đích đến là Agent Service: Thay vì Storage, consumer gọi sang
. Điều này gợi ý rằng việc hiển thị "User is typing..." cho Agent (nhân viên hỗ trợ) hoặc để AI Bot biết đường xử lý là trách nhiệm của
.
Last updated