Bỏ qua nội dung

Hội thoại (Conversations)

Hội thoại là trái tim của EmberX. Khi khách quét mã QR, một cuộc hội thoại được tạo và định tuyến đến Division phù hợp. Nhân viên có thể trả lời thời gian thực, tạo đơn hàng và đóng chat khi xong.

Cách Hội Thoại Được Tạo

  1. Khách quét Mã QR (đặt tại bàn, phòng, hoặc lễ tân).
  2. Khách được chuyển đến /chat/{token} — trang chat công khai.
  3. Hệ thống tạo bản ghi Conversation liên kết với:
    • Token QR Code
    • Division mà QR code thuộc về
    • Location (phòng, bàn, v.v.)
  4. Hội thoại xuất hiện trong dashboard nhân viên ở Hội thoại → Đang mở.

Danh Sách Hội Thoại (/conversations)

Bộ Lọc

TabHiển thị
Đang mởHội thoại đang hoạt động cần xử lý (mặc định)
Tất cảToàn bộ hội thoại bất kể trạng thái
Đã đóngHội thoại đã giải quyết / kết thúc

Danh sách tự động làm mới mỗi 10 giây bằng polling, và cập nhật ngay lập tức khi có tin nhắn Socket.IO mới.

Mỗi Thẻ Hiển Thị

  • Tên Location + Badge Division
  • Badge chưa đọc (đỏ) — số tin nhắn chưa đọc từ khách
  • Xem trước tin nhắn mới nhất — tin nhắn khách được hiển thị đã dịch sang ngôn ngữ của nhân viên
  • Ngôn ngữ khách (tên ngôn ngữ)
  • Thời gian — tương đối (“2 phút trước”) hoặc ngày tuyệt đối

Chi Tiết Hội Thoại (/conversations/{id})

Nhấn vào hội thoại để mở giao diện chat đầy đủ:

Header Chat

Hiển thị Location, Division, Ngôn ngữ Khách, và Badge Trạng thái (Đang mở / Đã đóng).

Khu Vực Tin Nhắn

  • Tin nhắn từ Agent (nhân viên) hiển thị bên phải (màu xanh).
  • Tin nhắn từ Customer (khách) hiển thị bên trái (màu xám).
  • Tự động cuộn đến tin nhắn mới nhất.
  • Khi nhân viên gửi tin, cập nhật lạc quan (optimistic update) hiển thị ngay lập tức — sau đó xác nhận (hoặc hoàn tác) khi server phản hồi.

Gửi Tin Nhắn

Gõ vào thanh nhập liệu và nhấn Enter hoặc nút Gửi. Tin nhắn của bạn sẽ:

  1. Được lưu vào cơ sở dữ liệu.
  2. Phát sóng qua Socket.IO đến tất cả nhân viên đang xem hội thoại này.
  3. Tự động dịch sang ngôn ngữ của khách trước khi gửi.

Cập Nhật Thời Gian Thực (Socket.IO)

EmberX dùng Socket.IO để gửi tin nhắn tức thì:

  • Nhân viên tham gia phòng (room) theo ID hội thoại khi mở trang.
  • Tin nhắn trùng lặp được loại bỏ client-side theo message.id.
  • Khi thoát trang, socket ngắt kết nối sạch sẽ.

Tự Động Dịch

EmberX phát hiện ngôn ngữ của khách từ tin nhắn đầu tiên (trường primaryLanguage). Tất cả tin nhắn khách tiếp theo được:

  • Lưu nguyên bản (content)
  • Dịch sang tiếng Anh cho nhân viên (translatedContent)

Tin nhắn nhân viên được dịch sang ngôn ngữ của khách trước khi gửi đi.

Số Tin Nhắn Chưa Đọc

unreadCount được tính phía server cho mỗi hội thoại. Nó đặt lại về 0 mỗi khi nhân viên mở trang chi tiết hội thoại.

Tính Năng Liên Quan

  • Đơn hàng — Nhân viên có thể tạo đơn hàng trong ngữ cảnh hội thoại
  • Mã QR — Mỗi hội thoại bắt nguồn từ một token QR cụ thể
  • Division — Hội thoại được định tuyến đến và hiển thị bởi nhân viên trong Division được gán