Màn hình /chat là không gian làm việc chính của nhân viên hỗ trợ. Tại đây, nhân viên theo dõi danh sách hội thoại, nhận tin realtime, phản hồi khách hàng, quản lý chatbot, xem thông tin người dùng và xử lý vòng đời của từng cuộc trò chuyện.
Screenshot 2026-09-19 at 23.00.42.png
Trang này kết hợp hai cơ chế:
  • REST API để tải danh sách kênh, lịch sử tin nhắn và thực hiện các thao tác quản lý.
  • Kết nối socket để gửi, nhận tin nhắn và đồng bộ trạng thái realtime.

Điều kiện truy cập

Màn hình /chat yêu cầu:
  • Người dùng đã đăng nhập vào khu vực quản trị.
  • Tài khoản có quyền truy cập tính năng quản lý chat.
  • Tài khoản là thành viên của các kênh muốn đọc hoặc gửi tin.
Việc mở được màn hình không có nghĩa tài khoản được xem mọi cuộc hội thoại. Danh sách chỉ trả về các kênh mà quản trị viên là thành viên.
Khi đi từ màn hình quản lý kênh sang /chat, hệ thống có thể tự thêm quản trị viên vào kênh trước khi điều hướng nếu:
  • Tài khoản có vai trò nhân viên hỗ trợ.
  • Kênh thuộc một loại kênh hỗ trợ được cấu hình.

Bố cục màn hình

Màn hình gồm ba vùng chính:
flowchart LR
    A[Danh sách hội thoại] --> B[Khung tin nhắn]
    B --> C[Thông tin khách hàng]

    A1[Đang hoạt động] --> A
    A2[Đã lưu trữ] --> A

    B1[Tiêu đề và thao tác] --> B
    B2[Tin đã ghim] --> B
    B3[Lịch sử tin nhắn] --> B
    B4[Ô nhập tin] --> B

Danh sách hội thoại

Thanh bên trái hiển thị:
  • Trạng thái kết nối.
  • Ô tìm kiếm.
  • Hai tab hội thoại đang hoạt động và đã lưu trữ.
  • Danh sách các cuộc hội thoại.
  • Cơ chế tải thêm khi cuộn.

Khung hội thoại

Khu vực trung tâm hiển thị:
  • Tên và ảnh đại diện của cuộc hội thoại.
  • Trạng thái chatbot.
  • Các thao tác với kênh.
  • Danh sách tin đã ghim.
  • Lịch sử tin nhắn.
  • Trạng thái đang nhập.
  • Ô soạn và gửi tin.

Thông tin khách hàng

Bảng thông tin bên phải được mở khi nhân viên chọn phần tiêu đề của hội thoại. Bảng này hiển thị thông tin khách hàng nếu kênh được tạo bởi một người dùng hợp lệ.

Trạng thái kết nối

Màn hình hiển thị ba trạng thái kết nối:
  • Đang kết nối.
  • Trực tuyến.
  • Ngoại tuyến.
Khi tải trang:
  1. Giao diện khởi tạo kết nối socket.
  2. Socket lấy access token dành cho phiên quản trị.
  3. Thực hiện handshake và đăng nhập.
  4. Truy cập ứng dụng chat realtime.
  5. Chuyển trạng thái giao diện sang trực tuyến.
Kết nối được cấu hình để tự động thử kết nối lại nhiều lần khi bị gián đoạn.
REST và socket vận hành độc lập. Vì vậy, danh sách kênh hoặc lịch sử tin nhắn vẫn có thể được hiển thị trong lúc socket đang kết nối hoặc đã mất kết nối. Tuy nhiên, gửi tin và nhận cập nhật realtime sẽ không hoạt động đầy đủ nếu socket chưa sẵn sàng.

Danh sách hội thoại đang hoạt động

Khi mở /chat, hệ thống tải tối đa 100 kênh đang hoạt động trong trang đầu.
Với mỗi kênh, giao diện tiếp tục lấy tin nhắn cuối để hiển thị:
  • Tên cuộc hội thoại.
  • Avatar.
  • Nội dung tin gần nhất.
  • Thời gian hoạt động gần nhất.
  • Số tin chưa đọc.
  • Dấu hiệu spam nếu có.
Kênh được sắp xếp theo thời gian chat gần nhất, sau đó theo ID. Cuộc hội thoại có hoạt động mới sẽ được đưa lên đầu danh sách.
Nếu nhân viên đang xem một hồ sơ chat cụ thể, danh sách có thể được giới hạn theo hồ sơ đó.

Danh sách hội thoại đã lưu trữ

Tab “Đã lưu trữ” được tải riêng khi nhân viên chọn tab lần đầu.
Mỗi mục vẫn hiển thị:
  • Tên kênh.
  • Avatar.
  • Tin nhắn cuối.
  • Thời gian hoạt động.
  • Trạng thái spam.
Danh sách đang hoạt động và danh sách lưu trữ có cursor phân trang độc lập. Khi chuyển tab, giao diện tải lại dữ liệu tương ứng từ máy chủ.
Số lượng hiển thị trên tiêu đề tab là số bản ghi đã được tải vào client, không nhất thiết là tổng số hội thoại trong toàn bộ hệ thống.

Tải thêm hội thoại

Danh sách sử dụng cuộn vô hạn. Khi nhân viên cuộn gần cuối:
  1. Giao diện lấy cursor trang tiếp theo.
  2. Yêu cầu thêm tối đa 100 kênh.
  3. Loại các kênh đã có khỏi kết quả.
  4. Lấy tin nhắn cuối của các kênh mới.
  5. Nối dữ liệu vào danh sách hiện tại.
Việc loại trùng là cần thiết vì một kênh có thể vừa nhận tin và được chuyển lên đầu trong lúc nhân viên đang duyệt các trang tiếp theo. Khi đó cursor có thể đi qua lại một kênh đã tải.

Mở trực tiếp một cuộc hội thoại

Màn hình hỗ trợ tham số channelId trên URL để mở trực tiếp một kênh.
Khi có ID kênh:
  • Giao diện chuyển sang vùng chat trên thiết bị di động.
  • Nếu kênh đã nằm trong danh sách, kênh được chọn ngay.
  • Nếu chưa có trong danh sách, giao diện yêu cầu kích hoạt và lấy thông tin kênh.
  • Nếu thao tác thất bại, giao diện quay về kênh đầu tiên có thể truy cập.
Hành vi kích hoạt có nghĩa một kênh lưu trữ được mở trực tiếp bằng URL có thể được chuyển lại sang trạng thái hoạt động.

Chọn một cuộc hội thoại

Khi nhân viên chọn kênh:
  1. Đặt kênh đó làm kênh hiện tại.
  2. Xóa trạng thái trả lời tin nhắn đang dang dở.
  3. Đóng bảng thông tin người dùng.
  4. Tải trang tin nhắn mới nhất.
  5. Tải danh sách tin đã ghim.
  6. Đặt số chưa đọc của kênh trên giao diện về 0.
  7. Cuộn xuống cuối lịch sử tin nhắn.
Ở phía máy chủ, thao tác tải tin nhắn đồng thời:
  • Đặt số tin chưa đọc của nhân viên về 0.
  • Cập nhật thời điểm đọc gần nhất.
  • Đánh dấu các tin vừa tải là đã xem đối với nhân viên đó.
Trạng thái đọc được lưu riêng theo từng thành viên. Việc một nhân viên đọc tin không làm mất số chưa đọc của nhân viên khác.

Hiển thị tin nhắn

Mỗi tin nhắn được phân biệt theo người gửi:
  • Tin do nhân viên hiện tại gửi.
  • Tin từ khách hàng.
  • Tin từ nhân viên khác.
  • Tin từ chatbot.
Tin chatbot có nhãn và biểu tượng riêng để nhân viên biết nội dung nào khách hàng đã được bot trả lời.
Màn hình hỗ trợ các dạng nội dung:
  • Văn bản.
  • Markdown.
  • Liên kết.
  • Hình ảnh.
  • Video.
  • Âm thanh.
  • Tệp đính kèm.
  • Một hoặc nhiều tài nguyên media.
  • Tin nhắn trả lời một tin trước đó.
Nếu dữ liệu cũ chỉ chứa một URL trong nội dung tin, giao diện cố gắng nhận diện loại tài nguyên từ URL để trình bày phù hợp.

Tải lịch sử tin nhắn

Khi mở kênh, giao diện tải trang tin mới nhất và đảo thứ tự để hiển thị theo dòng thời gian từ cũ đến mới.
Khi cuộn lên trên:
  1. Giao diện lấy cursor của trang cũ hơn.
  2. Tải thêm tin nhắn.
  3. Đảo thứ tự dữ liệu nhận được.
  4. Chèn các tin cũ vào đầu danh sách.
  5. Giữ thông tin cursor để tiếp tục tải.
Nếu nhân viên đang xem một đoạn lịch sử cũ, giao diện hiển thị nút quay về các tin nhắn mới nhất.

Gửi tin nhắn

Nhân viên gửi tin qua socket.
Một yêu cầu gửi tin có thể bao gồm:
  • Nội dung văn bản.
  • ID kênh.
  • ID tin nhắn đang được trả lời.
  • Danh sách ID media.
  • Danh sách liên kết được trích xuất từ nội dung.
Trước khi gửi, giao diện phát trạng thái ngừng nhập và sau đó:
  • Xóa lựa chọn trả lời.
  • Xóa danh sách media đang chờ.
  • Giữ việc hiển thị tin nhắn thực tế cho sự kiện trả về từ máy chủ.
Ở phía máy chủ, luồng gửi tin thực hiện:
  1. Kiểm tra dữ liệu tin nhắn.
  2. Kiểm tra nhân viên là thành viên kênh.
  3. Lưu tin nhắn.
  4. Lưu tài nguyên đính kèm và liên kết.
  5. Cập nhật thời gian chat gần nhất.
  6. Tăng số chưa đọc cho các thành viên khác.
  7. Tạo trạng thái gửi cho người nhận.
  8. Phát tin nhắn tới các thành viên qua socket.
sequenceDiagram
    participant S as Nhân viên hỗ trợ
    participant UI as Màn hình chat
    participant Socket as Dịch vụ realtime
    participant DB as Dữ liệu chat
    participant C as Khách hàng

    S->>UI: Nhập và gửi tin
    UI->>Socket: Gửi nội dung, media và thông tin trả lời
    Socket->>Socket: Kiểm tra quyền thành viên
    Socket->>DB: Lưu tin nhắn và tài nguyên
    Socket->>DB: Cập nhật kênh và số chưa đọc
    Socket-->>UI: Phát lại tin nhắn
    Socket-->>C: Phát tin nhắn realtime
Nếu socket chưa kết nối xong, lệnh gửi không được chuyển tới máy chủ. Hiện tại giao diện không có hàng đợi tin nhắn cục bộ để tự gửi lại sau khi kết nối phục hồi.

Soạn và gửi văn bản

Nhân viên có thể:
  • Nhập nội dung trong ô chat.
  • Nhấn Enter để gửi.
  • Nhấn nút gửi.
  • Gửi tin chỉ có media mà không cần văn bản.
Giao diện xử lý trạng thái nhập bằng bộ gõ, tránh gửi hai lần khi phím Enter chỉ dùng để hoàn tất quá trình composition, chẳng hạn khi nhập tiếng Việt.
Trước khi gửi, giao diện trích xuất các URL bắt đầu bằng HTTP hoặc HTTPS và gửi danh sách liên kết kèm theo tin nhắn. Các liên kết trùng nhau được loại bỏ.

Đính kèm hình ảnh và tệp

Nhân viên có thể thêm media bằng ba cách:
  • Chọn từ thư viện media.
  • Chọn một hoặc nhiều tệp từ máy.
  • Kéo và thả tệp vào khu vực chat.
Tệp được tải lên trước, sau đó giao diện giữ danh sách media tạm thời chờ gửi. Nhân viên có thể:
  • Xem trước hình ảnh.
  • Xem biểu tượng đối với tệp thông thường.
  • Xóa từng tệp khỏi danh sách chờ.
  • Gửi nhiều media trong một tin nhắn.
Khả năng tải media phụ thuộc vào quyền của tài khoản quản trị đối với chức năng thêm media. Nếu không có quyền, nút chọn tệp và luồng kéo thả sẽ bị vô hiệu hóa.
Các tệp được tải tuần tự. Nếu một tệp tải thất bại, giao diện bỏ qua lỗi đó và tiếp tục xử lý các tệp còn lại.

Trả lời tin nhắn

Nhân viên có thể chọn trả lời một tin cụ thể.
Giao diện hiển thị phần xem trước gồm:
  • Tên người gửi tin gốc.
  • Nội dung tin gốc.
  • Nút hủy trả lời.
Khi gửi, ID tin gốc được đính kèm vào yêu cầu. Tin nhắn mới sau đó hiển thị phần trích dẫn.
Nếu tin gốc đang có trong vùng dữ liệu đã tải, nhấn vào phần trích dẫn sẽ cuộn tới tin đó. Giao diện không tự tải thêm lịch sử chỉ vì tin được trích dẫn chưa có trong DOM.

Ghim tin nhắn

Nhân viên có thể ghim hoặc bỏ ghim từng tin.
Khi mở kênh, giao diện tải danh sách tin đã ghim. Nếu có ít nhất một tin, một thanh ghim xuất hiện phía trên lịch sử chat.
Thanh ghim hiển thị:
  • Người gửi.
  • Nội dung tóm tắt.
  • Thời gian.
  • Số lượng tin đã ghim.
  • Thao tác bỏ ghim.
Nếu có nhiều tin được ghim, nhân viên có thể mở danh sách đầy đủ.
Khi chọn một tin đã ghim:
  • Nếu tin đang có trên màn hình, giao diện cuộn trực tiếp tới tin đó.
  • Nếu chưa được tải, giao diện lấy một nhóm tin nhắn xung quanh ID đã chọn.
  • Sau khi nhận kết quả, giao diện thay lịch sử hiện tại bằng nhóm tin đó và cuộn tới vị trí cần xem.
  • Nút quay về tin mới nhất được hiển thị nếu còn dữ liệu mới hơn.
Các API ghim tin đều kiểm tra nhân viên có quyền trên kênh và tin nhắn thực sự thuộc kênh đó.

Trạng thái đang nhập

Khi nội dung ô soạn có ký tự không phải khoảng trắng, giao diện gửi sự kiện đang nhập. Khi nội dung được gửi hoặc xóa, giao diện gửi trạng thái ngừng nhập.
Nhân viên nhận sự kiện nhập của những thành viên khác qua socket. Sự kiện do chính phiên hiện tại gửi được bỏ qua.
Trạng thái nhập tự biến mất sau khoảng ba giây nếu không có cập nhật mới. Cơ chế timeout tránh để giao diện hiển thị “đang nhập” vĩnh viễn khi sự kiện dừng bị mất.

Nhận tin nhắn realtime

Khi nhận một tin nhắn mới, giao diện xử lý theo kênh.

Tin thuộc kênh đang mở

Tin được thêm vào cuối lịch sử và giao diện cuộn xuống dưới.
Số chưa đọc không tăng vì nhân viên đang xem kênh.

Tin thuộc kênh khác

Nếu kênh đã nằm trong danh sách:
  • Cập nhật tin nhắn cuối.
  • Tăng số chưa đọc, trừ tin do chatbot gửi.
  • Đưa kênh lên đầu danh sách.
Nếu kênh chưa được tải:
  • Giao diện yêu cầu kích hoạt kênh.
  • Thêm kênh mới vào đầu danh sách.
  • Đặt số chưa đọc ban đầu là 1.
Tin do chatbot gửi không tăng số chưa đọc của nhân viên vì hệ thống coi khách hàng đã được bot xử lý. Tin khách hàng gửi trong lúc chatbot đang bật vẫn tạo trạng thái bot đang chuẩn bị trả lời.

Điều khiển chatbot

Chatbot có trạng thái bật hoặc tắt riêng theo từng kênh.
Trên tiêu đề hội thoại, nhân viên có thể thay đổi trạng thái chatbot. Luồng xử lý gồm:
  1. Gửi yêu cầu lưu trạng thái ở máy chủ.
  2. Nếu thành công, cập nhật giao diện.
  3. Phát sự kiện socket để các client khác đồng bộ.
Khi bật:
  • Danh tính chatbot được thêm vào kênh nếu đã được cấu hình.
  • Chatbot được xem như một thành viên đặc biệt.
Khi tắt:
  • Chatbot bị loại khỏi kênh.
  • Các nhân viên khác nhận sự kiện thay đổi trạng thái.
Nếu không có cấu hình chatbot hợp lệ, yêu cầu bật không thể thêm bot vào kênh.

Hiển thị chatbot đang trả lời

Chatbot có thể tạo nội dung theo từng phần. Các phần nội dung được chuyển tới màn hình nhân viên qua sự kiện realtime.
Giao diện biểu diễn hai trạng thái:
  • Chatbot đang chuẩn bị: hiển thị dấu chấm động.
  • Chatbot đang sinh nội dung: hiển thị phần câu trả lời đã nhận được.
Khi câu trả lời hoàn chỉnh được lưu và phát như một tin nhắn thông thường, phần nội dung tạm thời biến mất.
Trạng thái tạm được tự xóa sau khoảng 60 giây nếu không nhận thêm dữ liệu. Điều này tránh để một câu trả lời dang dở tồn tại vô thời hạn trên giao diện.

Xem thông tin khách hàng

Nhân viên có thể chọn tiêu đề cuộc hội thoại để mở bảng thông tin.
Nếu người tạo kênh là người dùng, hệ thống tải:
  • Tên hiển thị.
  • Avatar.
  • Thời điểm tham gia kênh.
  • Số điện thoại.
  • Email.
  • Đường dẫn liên quan.
  • Tên đăng nhập.
  • Đường dẫn tới hồ sơ quản trị.
Thông tin được cache theo kênh trong phiên giao diện. Sau lần tải đầu tiên, việc đóng và mở lại bảng không gửi thêm yêu cầu.
Liên kết tới hồ sơ đầy đủ chỉ được hiển thị nếu:
  • Màn hình chạy trong khu vực quản trị.
  • Tài khoản có quyền xem chi tiết người dùng.
  • Phản hồi có tên đăng nhập hợp lệ.
Số điện thoại và email được trình bày dưới dạng liên kết gọi điện và gửi thư.

Đánh dấu spam

Nhân viên có thể đánh dấu hoặc bỏ đánh dấu spam cho cuộc hội thoại hiện tại.
Trạng thái spam là thiết lập riêng của từng quản trị viên, không phải trạng thái chung của kênh. Vì vậy:
  • Một nhân viên có thể đánh dấu kênh là spam.
  • Nhân viên khác không nhất thiết nhìn thấy cùng trạng thái.
  • Kênh không bị xóa hoặc lưu trữ chỉ vì bị đánh dấu spam.
Sau khi cập nhật thành công, giao diện thay đổi nhãn spam ở cả danh sách đang hoạt động và danh sách lưu trữ.
Hiện màn hình không có tab spam riêng và cũng không tự ẩn các hội thoại đã bị đánh dấu spam.

Lưu trữ hội thoại

Nhân viên có thể lưu trữ kênh đang hoạt động.
Trước khi thực hiện, giao diện mở hộp thoại xác nhận. Sau khi thành công:
  • Kênh bị loại khỏi bộ nhớ cục bộ.
  • Không còn kênh đang chọn.
  • Trên thiết bị di động, giao diện quay về danh sách.
  • Danh sách đang hoạt động được tải lại.
  • Danh sách lưu trữ được tải lại.
Lưu trữ chỉ thay đổi trạng thái kênh sang ARCHIVED. Tin nhắn và thành viên không bị xóa.

Khôi phục hội thoại

Trong tab lưu trữ, nhân viên có thể chuyển kênh về trạng thái hoạt động.
Sau khi khôi phục:
  • Thông tin kênh được cập nhật.
  • Trạng thái chatbot được đồng bộ lại.
  • Cả hai danh sách được tải lại từ máy chủ.
Việc tải lại toàn bộ danh sách giúp giao diện phản ánh đúng trạng thái máy chủ thay vì tự di chuyển phần tử giữa hai tab.

Xóa hội thoại

Thao tác xóa chỉ xuất hiện với kênh đã lưu trữ và khi màn hình chạy trong khu vực quản trị đầy đủ.
Sau khi xác nhận, hệ thống chuyển trạng thái kênh sang DELETED. Đây là xóa mềm:
  • Bản ghi kênh vẫn tồn tại.
  • Tin nhắn không bị xóa vật lý.
  • Quan hệ thành viên không bị xóa.
  • Kênh không còn xuất hiện trong các danh sách sử dụng trạng thái hoạt động hoặc lưu trữ.
Sau khi xóa, màn hình bỏ kênh hiện tại và tải lại danh sách.

Hỗ trợ thiết bị di động

Trên màn hình nhỏ, giao diện chuyển đổi giữa hai chế độ:
  • Danh sách hội thoại.
  • Nội dung chat.
Khi chọn một cuộc hội thoại, màn hình chuyển sang vùng chat. Nút quay lại trong tiêu đề đưa nhân viên về danh sách.
Bảng thông tin người dùng và các hộp thoại xác nhận được hiển thị phủ lên bố cục hiện tại.

Phân quyền theo chức năng

Màn hình áp dụng quyền ở nhiều mức:
Chức năngĐiều kiện
Mở /chatCó quyền truy cập tính năng quản lý chat
Xem kênhLà thành viên kênh
Đọc hoặc gửi tinLà thành viên kênh
Tải mediaCó quyền thêm media
Xem hồ sơ người dùngCó quyền xem chi tiết người dùng
Thay đổi trạng thái kênhLà thành viên kênh
Ghim tinLà thành viên kênh và tin thuộc đúng kênh
Bật hoặc tắt chatbotLà thành viên kênh
Kiểm tra phía giao diện chỉ dùng để ẩn hoặc vô hiệu hóa một số thao tác. Quyền quan trọng vẫn được kiểm tra lại ở máy chủ.

Luồng làm việc điển hình

sequenceDiagram
    participant Staff as Nhân viên
    participant UI as Màn hình /chat
    participant API as REST API
    participant RT as Socket
    participant Customer as Khách hàng

    Staff->>UI: Mở màn hình
    UI->>API: Tải danh sách kênh
    UI->>API: Tải tin nhắn cuối
    UI->>RT: Kết nối realtime

    Staff->>UI: Chọn hội thoại
    UI->>API: Tải tin nhắn mới nhất
    API->>API: Đánh dấu đã đọc
    UI->>API: Tải tin đã ghim

    Customer->>RT: Gửi tin
    RT-->>UI: Tin nhắn mới
    UI->>UI: Tăng chưa đọc hoặc hiển thị ngay

    Staff->>RT: Gửi phản hồi
    RT-->>Customer: Phát phản hồi
    RT-->>UI: Đồng bộ tin đã lưu

Giới hạn và điểm cần lưu ý

Ô tìm kiếm chưa được kết nối

Màn hình có hiển thị ô tìm kiếm nhưng hiện chưa truyền hàm xử lý thay đổi, nhấn Enter hoặc nhấn biểu tượng tìm kiếm. Vì vậy, nhập nội dung chưa lọc hoặc truy vấn danh sách hội thoại.

Số lượng trên tab không phải tổng toàn hệ thống

Con số trên tab đang hoạt động là số kênh đã tải vào client. Với dữ liệu vượt quá một trang, số này tăng khi nhân viên cuộn tải thêm.
Tab lưu trữ chưa hiển thị số lượng cho đến khi được tải lần đầu.

Không có hàng đợi gửi lại khi mất kết nối

Nếu nhân viên nhấn gửi trong lúc socket chưa sẵn sàng, client không lưu tin vào hàng đợi và không tự gửi lại. Giao diện cũng chưa hiển thị trạng thái gửi thất bại cho từng tin.

Không có xác nhận đã gửi ngay tại client

Tin do nhân viên gửi chỉ xuất hiện sau khi máy chủ lưu và phát lại qua socket. Đây là cách bảo đảm nội dung hiển thị đã được máy chủ chấp nhận, nhưng có thể tạo cảm giác trễ nếu kết nối chậm.

Hội thoại lưu trữ vẫn hiển thị ô nhập tin

Giao diện không ẩn hoặc vô hiệu hóa ô soạn khi đang xem kênh lưu trữ. Lớp kiểm tra socket của quản trị viên chủ yếu xác minh tư cách thành viên và chưa chặn rõ việc gửi tin chỉ dựa trên trạng thái ARCHIVED.
Điều này có thể cho phép phát sinh tin mới trong một kênh đã lưu trữ nếu máy chủ chấp nhận yêu cầu.

Kênh mới nhận được có thể bị kích hoạt tự động

Khi nhận sự kiện của một kênh chưa có trong danh sách, client gửi yêu cầu kích hoạt kênh trước khi thêm vào danh sách. Tương tự, mở trực tiếp một kênh bằng channelId cũng có thể kích hoạt lại kênh.
Cần xác nhận đây có phải quy tắc nghiệp vụ mong muốn đối với hội thoại đã lưu trữ hay không.

Số chưa đọc có thể lệch tạm thời

Client tự tăng số chưa đọc dựa trên sự kiện socket và đặt về 0 sau khi tải tin. Nếu nhiều phiên cùng đăng nhập hoặc sự kiện bị mất, con số cục bộ có thể tạm thời khác dữ liệu máy chủ cho tới lần tải lại.

Tin chatbot không tăng số chưa đọc

Giao diện chủ động không tăng số chưa đọc khi nhận tin do chatbot gửi. Đây là lựa chọn nghiệp vụ nhằm tránh yêu cầu nhân viên chú ý tới hội thoại mà bot đang xử lý, nhưng cũng có thể khiến nhân viên bỏ qua phản hồi quan trọng của bot.

Lỗi ở một số thao tác chưa được thông báo đầy đủ

Các thao tác spam, ghim và bật chatbot có thông báo lỗi. Tuy nhiên, một số luồng khác như:
  • Tải lịch sử cũ.
  • Tải tin đã ghim.
  • Tải thông tin người dùng.
  • Lưu trữ.
  • Xóa.
  • Nhận kênh mới.
đang bỏ qua lỗi hoặc chỉ đóng trạng thái chờ mà không giải thích nguyên nhân cho người dùng.

Tìm kiếm nội dung tin nhắn chưa có

Màn hình hỗ trợ nhảy tới tin đã ghim nhưng chưa có tính năng tìm kiếm toàn văn trong lịch sử hội thoại.

Không có trạng thái phân công người xử lý chính

Mọi thành viên kênh đều có thể cùng thấy và trả lời hội thoại. Màn hình chưa thể hiện:
  • Nhân viên chịu trách nhiệm chính.
  • Trạng thái đang xử lý.
  • Chuyển giao hội thoại.
  • Hàng đợi chưa nhận.
  • Giới hạn số hội thoại mỗi nhân viên.
  • SLA phản hồi.

Kết luận

Màn hình /chat là bảng điều khiển vận hành realtime cho nhân viên hỗ trợ. Nó bao phủ toàn bộ luồng làm việc cơ bản:
  • Theo dõi hội thoại đang hoạt động và đã lưu trữ.
  • Nhận và gửi tin realtime.
  • Quản lý số chưa đọc.
  • Gửi văn bản, liên kết và media.
  • Trả lời và ghim tin nhắn.
  • Theo dõi trạng thái nhập.
  • Quan sát và điều khiển chatbot.
  • Xem thông tin khách hàng.
  • Đánh dấu spam.
  • Lưu trữ, khôi phục và xóa mềm hội thoại.
Thiết kế tách REST và socket giúp lịch sử dữ liệu vẫn tải được khi realtime chưa sẵn sàng, đồng thời cho phép tin nhắn và trạng thái nhập được cập nhật tức thời khi kết nối hoạt động. Các phần còn thiếu chủ yếu nằm ở tìm kiếm, xử lý lỗi, khả năng làm việc khi mất kết nối và quy trình phân công hội thoại cho từng nhân viên.