Đa kênh (Omni-channel)

I. Tổng quan

1. Vấn đề

  • Nhân sự CSKH/Sales/Telesales đang phải theo dõi tin nhắn từ nhiều kênh, nhiều page và nhiều cuộc hội thoại cùng lúc, dễ bỏ sót khách chưa phản hồi hoặc khách đang cần xử lý gấp.
  • Dữ liệu chat, thông tin liên hệ và các đối tượng CRM liên quan thường bị tách rời, khiến người dùng phải chuyển qua nhiều màn hình để tra cứu Contact, Đơn hàng, Cơ hội hoặc Phiếu ghi.
  • Người dùng có nhu cầu lọc danh sách hội thoại theo cách làm việc cá nhân, nhưng nếu mỗi lần vào lại màn hình đều phải lọc và sắp xếp lại từ đầu thì tốn thời gian vận hành.
  • Trong quá trình xử lý hội thoại, team cần ghi chú nội bộ và cấu hình chatbot/thông báo/tự động liên kết để chuẩn hóa cách phối hợp giữa người và bot.

2. Giải pháp

  • Xây dựng màn hình làm việc đa kênh tập trung theo mô hình 3 cột:
    • Cột trái: danh sách hội thoại và bộ tìm kiếm/lọc.
    • Cột giữa: nội dung hội thoại, thao tác trả lời, ghi chú nội bộ.
    • Cột phải: các khối liên kết CRM như Liên hệ, Đơn hàng, Cơ hội, Phiếu ghi, Ghi chú.
  • Cho phép người dùng lọc hội thoại theo các tiêu chí vận hành quan trọng như trạng thái đọc, số điện thoại, email, liên hệ, nhãn, thời gian và nhân viên.
  • Hỗ trợ lưu cấu hình hiển thị mặc định để người dùng mở lại màn hình ở đúng bộ lọc, kênh hiển thị và bố cục liên kết CRM đã quen dùng.
  • Bổ sung trang cài đặt đa kênh để cấu hình thông báo, tự động liên kết liên hệ, quy tắc chatbot, nhãn dán và tin nhắn nhanh.

3. Đối tượng

  • Nhân viên CSKH / Chăm sóc inbox.
  • Nhân viên Sales / Telesales xử lý khách hàng từ kênh chat.
  • Trưởng nhóm/Quản lý cần theo dõi, gán xử lý hoặc chuẩn hóa cách vận hành đa kênh.
  • Admin/Owner cấu hình nhãn dán, mẫu tin nhắn nhanh và quy tắc tự động.

4. Tầm nhìn/insight

  • Mở rộng thêm nhiều kênh vào cùng một inbox hợp nhất thay vì chỉ một số nền tảng social.
  • Hỗ trợ nhiều saved view có tên riêng theo từng ngữ cảnh làm việc, không chỉ một cấu hình mặc định.
  • Bổ sung rule phân chia hội thoại tự động, SLA phản hồi, hàng đợi xử lý và báo cáo hiệu suất nhân viên.
  • Tích hợp AI cho các tác vụ như tóm tắt hội thoại, gợi ý trả lời, gợi ý gắn CRM object, phân loại nhãn và ưu tiên lead.

II. Yêu cầu chức năng

1. Danh sách tính năng

  • Xem danh sách hội thoại đa kênh tập trung trên một màn hình.
  • Tìm kiếm hội thoại theo từ khóa.
  • Chọn kênh/page hiển thị trong inbox.
  • Lọc hội thoại theo:
    • Trạng thái đọc tin nhắn.
    • Có/không có số điện thoại.
    • Có/không có email.
    • Có/không có liên hệ CRM.
    • Nhãn.
    • Khoảng thời gian.
    • Nhân viên phụ trách liên hệ.
  • Lưu cấu hình hiển thị mặc định của người dùng.
  • Sắp xếp thứ tự và chọn trường hiển thị của các khối liên kết CRM ở panel bên phải.
  • Xem và thao tác trên thông tin hội thoại:
    • Gán nhân viên.
    • Gắn nhãn/tag.
    • Xem lịch sử chat.
    • Trả lời khách hàng.
  • Thêm ghi chú nội bộ ngay trong luồng hội thoại.
  • Quản trị cài đặt đa kênh:
    • Danh sách người nhận thông báo.
    • Điều kiện thông báo khi có tin nhắn mới.
    • Tự động tạo/liên kết Liên hệ.
    • Tự động cập nhật thông tin liên hệ.
    • Bật lại chatbot AI sau một khoảng thời gian.
    • Quản lý nhãn dán.
    • Quản lý tin nhắn nhanh/mẫu trả lời nhanh.

2. Đặc tả chi tiết

User Story 1: Là một nhân viên CSKH/Sales, tôi muốn xem và xử lý hội thoại của khách trên một màn hình tập trung để không bỏ sót tin nhắn và không phải chuyển nhiều tab.

  • Use case 1.1 (Xem danh sách hội thoại):
    • Tiền điều kiện: User đã đăng nhập và có quyền truy cập module Đa kênh.
    • Luồng chính (Main flow):
      1. User truy cập màn Đa kênh.
      2. Hệ thống hiển thị danh sách hội thoại ở cột trái, gồm avatar, tên khách, preview tin nhắn gần nhất, thời gian và badge chưa đọc.
      3. User click một hội thoại bất kỳ.
      4. Hệ thống tải nội dung hội thoại ở cột giữa và các khối CRM liên quan ở cột phải.
      5. User xem lịch sử chat, người phụ trách, nhãn/tag và các object CRM đã liên kết.
  • Use case 1.2 (Trả lời khách hàng trong hội thoại):
    • Luồng chính (Main flow):
      1. User chọn hội thoại cần xử lý.
      2. User nhập nội dung trả lời tại vùng composer cuối màn hình.
      3. User có thể đính kèm file/ảnh hoặc dùng các icon hỗ trợ tại thanh công cụ composer.
      4. User bấm Gửi.
      5. Hệ thống đẩy tin nhắn ra kênh tương ứng và hiển thị message mới ngay trên luồng chat.
  • Use case 1.3 (Gán người phụ trách và nhãn trong hội thoại):
    • Luồng chính (Main flow):
      1. Tại header hội thoại, user bấm khu vực Gán nhân viên.
      2. User chọn nhân sự phụ trách.
      3. User có thể thêm nhãn/tag cho hội thoại bằng icon thêm nhãn.
      4. Hệ thống cập nhật header hội thoại ngay lập tức.

User Story 2: Là một nhân viên vận hành inbox, tôi muốn lọc hội thoại theo tiêu chí làm việc của mình để xem đúng nhóm khách cần xử lý.

  • Use case 2.1 (Lọc theo trạng thái và dữ liệu liên hệ):
    • Luồng chính (Main flow):
      1. User mở các popover filter trên top bar của inbox.
      2. User chọn một hoặc nhiều điều kiện:
        • Đọc tin nhắn: Chưa đọc / Đã đọc nhưng chưa phản hồi / Đã phản hồi.
        • Số điện thoại: Đã có số điện thoại / Chưa có số điện thoại.
        • Email: Đã có email / Chưa có email.
        • Liên hệ: Đã có liên hệ / Chưa có liên hệ.
      3. User bấm Bộ lọc hoặc thao tác lưu tại popover tương ứng.
      4. Hệ thống cập nhật danh sách hội thoại theo điều kiện đã chọn.
  • Use case 2.2 (Lọc theo nhãn, thời gian và nhân viên):
    • Luồng chính (Main flow):
      1. User mở filter Lọc theo nhãn, chọn một hoặc nhiều nhãn.
      2. User mở filter thời gian và chọn theo preset nhanh (Hôm nay, Hôm qua, 7 ngày trước, 30 ngày trước) hoặc chọn ngày chính xác trên calendar.
      3. User mở filter nhân viên phụ trách liên hệ và chọn một hoặc nhiều nhân viên.
      4. Hệ thống làm mới danh sách hội thoại theo toàn bộ điều kiện đang active.
  • Use case 2.3 (Bỏ lọc):
    • Luồng chính (Main flow):
      1. User mở lại popover của filter đang active.
      2. User bấm Bỏ lọc.
      3. Hệ thống xóa điều kiện của filter đó và tải lại danh sách.

User Story 3: Là một nhân viên thường xuyên làm việc theo cùng một bộ lọc và bố cục màn hình, tôi muốn lưu cấu hình hiển thị mặc định để lần sau vào lại không phải setup lại.

  • Use case 3.1 (Lưu cấu hình hiển thị mặc định):
    • Luồng chính (Main flow):
      1. User mở popup Cấu hình hiển thị mặc định.
      2. User chọn các kênh/page sẽ hiển thị.
      3. User chọn bộ lọc mặc định:
        • Đọc tin nhắn.
        • Số điện thoại.
        • Email.
        • Nhãn.
        • Liên hệ.
        • Thời gian tạo.
        • Thời gian cập nhật.
        • Nhân viên.
      4. User cấu hình khối Liên kết với CRM:
        • Kéo thả để đổi thứ tự các nhóm liên kết.
        • Chọn các trường cần hiển thị trong từng nhóm, ví dụ Số điện thoại, Nhân viên phụ trách, Email.
      5. User bấm Cập nhật.
      6. Hệ thống lưu cấu hình cá nhân và áp dụng cho các lần truy cập tiếp theo.
  • Use case 3.2 (Hủy cập nhật cấu hình):
    • Luồng chính (Main flow):
      1. User mở popup cấu hình.
      2. User thay đổi dữ liệu nhưng bấm Hủy hoặc đóng popup.
      3. Hệ thống không lưu thay đổi mới.

User Story 4: Là một nhân viên cần trao đổi nội bộ trong khi xử lý khách, tôi muốn thêm ghi chú vào luồng hội thoại để đội ngũ cùng theo dõi nhưng không gửi ra ngoài cho khách.

  • Use case 4.1 (Thêm ghi chú nội bộ):
    • Luồng chính (Main flow):
      1. User chọn hội thoại.
      2. User nhập nội dung tại ô Nhập ghi chú nội bộ.
      3. User chuyển composer sang chế độ Nhắn tin nội bộ/Ghi chú.
      4. User bấm Gửi.
      5. Hệ thống hiển thị ghi chú dưới dạng block khác biệt trong timeline, có tên người tạo và thời gian tạo.

User Story 5: Là một quản trị viên hoặc người được phân quyền, tôi muốn cấu hình vận hành đa kênh để hệ thống hoạt động thống nhất giữa người, bot và CRM.

  • Use case 5.1 (Cấu hình thông báo):
    • Luồng chính (Main flow):
      1. User truy cập màn Cài đặt đa kênh.
      2. User chọn danh sách nhân viên nhận thông báo khi có tất cả tin nhắn đến.
      3. User bật/tắt các lựa chọn thông báo khi có tin nhắn mới, ví dụ thông báo cho nhân viên phụ trách hội thoại hoặc nhân viên phụ trách liên hệ.
      4. User lưu cấu hình.
  • Use case 5.2 (Tự động tạo/liên kết Liên hệ):
    • Luồng chính (Main flow):
      1. User bật cấu hình áp dụng liên kết liên hệ.
      2. User chọn điều kiện tự động liên kết:
        • Khách hàng mới bắt đầu nhắn tin.
        • Tin nhắn có chứa số điện thoại.
        • Tin nhắn có chứa email.
      3. User lưu cấu hình.
  • Use case 5.3 (Tự động cập nhật thông tin liên hệ):
    • Luồng chính (Main flow):
      1. User chọn rule tự động cập nhật contact khi tin nhắn chứa số điện thoại hoặc email.
      2. Hệ thống dùng dữ liệu hội thoại để bổ sung dữ liệu vào contact đã liên kết.
  • Use case 5.4 (Cấu hình chatbot):
    • Luồng chính (Main flow):
      1. User bật tùy chọn Tự động bật lại chatbot AI sau.
      2. User nhập số giờ chờ.
      3. User cấu hình điều kiện liên kết contact bổ sung sau khi chatbot xử lý.
      4. Hệ thống lưu rule để áp dụng cho các hội thoại phù hợp.
  • Use case 5.5 (Quản lý nhãn dán và tin nhắn nhanh):
    • Luồng chính (Main flow):
      1. User truy cập bảng Nhãn dán.
      2. User thêm, sửa, xóa nhãn và chọn màu hiển thị cho từng nhãn.
      3. User truy cập bảng Tin nhắn nhanh.
      4. User thêm, sửa, xóa mẫu tin nhắn nhanh gồm: ký tự tắt, nội dung, hình ảnh đi kèm.

3. Danh sách nghiệp vụ

  • Danh sách hội thoại là điểm vào chính của user; mọi thao tác filter/tìm kiếm phải tác động trực tiếp đến cột danh sách bên trái.
  • Bộ lọc được chia thành từng popover độc lập; mỗi popover phải có khả năng Bỏ lọc riêng.
  • Một hội thoại có thể đồng thời mang nhiều metadata vận hành như:
    • Nhân viên phụ trách.
    • Nhãn ưu tiên.
    • Trạng thái liên hệ CRM.
    • Kênh/page nguồn.
  • Ghi chú nội bộ phải hiển thị khác biệt với tin nhắn gửi khách và không được đẩy ra kênh bên ngoài.
  • Cấu hình hiển thị mặc định là cấu hình cá nhân của user dùng để tái sử dụng ở các lần truy cập sau.
  • Trong cấu hình hiển thị mặc định:
    • User được chọn các kênh/page mặc định.
    • User được chọn tập filter mặc định.
    • User được kéo thả sắp xếp thứ tự các nhóm Liên hệ, Đơn hàng, Cơ hội, Phiếu ghi, Ghi chú.
    • User được chọn các field con hiển thị trong từng nhóm liên kết CRM.
  • Khu vực liên kết CRM ở panel phải cần hỗ trợ thêm object mới tại ít nhất một số nhóm, theo thiết kế hiện có thấy nút + Thêm.
  • Trang cài đặt đa kênh cần lưu được rule vận hành dài hạn, không phải chỉ thay đổi cục bộ trên một hội thoại.
  • Nhãn dán phải có màu để hỗ trợ nhận diện nhanh trong màn hình hội thoại/danh sách.
  • Tin nhắn nhanh phải hỗ trợ ít nhất nội dung text; theo thiết kế hiện tại có cả ảnh đi kèm trong bảng quản trị mẫu.

4. Giao diện

  • Link Figma màn hình chính Omni-channel: https://www.figma.com/design/tBBrdtHlG1LAYJUfJsvyS3/UCALL-2026–Ant-Design-5.10.1-?node-id=32138-117673&m=dev
  • Link Figma nội dung bộ lọc: https://www.figma.com/design/tBBrdtHlG1LAYJUfJsvyS3/UCALL-2026–Ant-Design-5.10.1-?node-id=28029-27495&m=dev
  • Link Figma cấu hình hiển thị mặc định / lưu view: https://www.figma.com/design/tBBrdtHlG1LAYJUfJsvyS3/UCALL-2026–Ant-Design-5.10.1-?node-id=32174-89288&m=dev
  • Link Figma phần cài đặt: https://www.figma.com/design/tBBrdtHlG1LAYJUfJsvyS3/UCALL-2026–Ant-Design-5.10.1-?node-id=32174-90455&m=dev
  • Link Figma tính năng ghi chú: https://www.figma.com/design/tBBrdtHlG1LAYJUfJsvyS3/UCALL-2026–Ant-Design-5.10.1-?node-id=32174-83318&m=dev
  • Bố cục màn hình chính:
    • Cột trái rộng cho danh sách hội thoại.
    • Cột giữa cho header khách, timeline chat, composer trả lời/ghi chú.
    • Cột phải cho các khối object CRM liên quan.
  • Bộ lọc thể hiện dưới dạng popover nhỏ, thao tác nhanh, ít chiếm diện tích màn hình.
  • Popup Cấu hình hiển thị mặc định là popup lớn, ưu tiên thao tác nhiều nhóm dữ liệu trong một lần lưu.
  • Màn Cài đặt đa kênh là màn cấu hình dài dạng form + table quản trị.

Ảnh tham chiếu

Màn chính Omni-channel

Màn chính Omni-channel Node Figma 32138:117673

Bộ lọc hội thoại

Bộ lọc hội thoại Node Figma 28029:27495

Cấu hình hiển thị mặc định / lưu view

Cấu hình hiển thị mặc định / lưu view Node Figma 32174:89288

Cài đặt đa kênh

Cài đặt đa kênh Node Figma 32174:90455

Ghi chú nội bộ

Ghi chú nội bộ Node Figma 32174:83318


III. Yêu cầu phi chức năng

  • Danh sách hội thoại phải hỗ trợ tải nhanh trong điều kiện có số lượng cuộc hội thoại lớn; cần có phân trang hoặc cơ chế lazy load/infinite scroll ở mức implementation.
  • Thao tác lọc và tìm kiếm cần phản hồi đủ nhanh để user dùng như một màn vận hành real-time.
  • Ghi chú nội bộ và tin nhắn gửi khách phải được phân biệt rõ về mặt hiển thị và dữ liệu để tránh gửi nhầm ra ngoài.
  • Các thay đổi cấu hình mặc định và cài đặt đa kênh cần được lưu bền vững theo user hoặc theo phạm vi cấu hình được xác định.
  • Các thao tác cấu hình như sửa/xóa nhãn dán, sửa/xóa mẫu tin nhắn nhanh nên có log hoặc audit trail nếu hệ thống có yêu cầu quản trị.

IV. Dependency (liên quan & phụ thuộc)

  • Module Chat/Inbox đa kênh.
  • Module Contact (Liên hệ).
  • Module Order (Đơn hàng).
  • Module Deal/Cơ hội.
  • Module Ticket/Phiếu ghi.
  • Cơ chế phân quyền người dùng và vai trò.
  • Kết nối các kênh social/chat ngoài hệ thống.
  • Dịch vụ chatbot AI.
  • Dịch vụ thông báo nội bộ/push/in-app notification.
  • Cơ chế upload file/ảnh cho composer và mẫu tin nhắn nhanh.

V. API Contract (dev viết)


VI. Test case (BA hoặc tester viết)

  • TC1 (Happy path): Mở màn Đa kênh -> click một hội thoại -> hệ thống hiển thị đúng lịch sử chat, header khách và panel CRM bên phải.
  • TC2 (Search): Nhập từ khóa tại ô tìm kiếm danh sách hội thoại -> danh sách được lọc theo từ khóa.
  • TC3 (Filter - trạng thái đọc): Chọn Chưa đọc trong filter Đọc tin nhắn -> chỉ hiển thị hội thoại chưa đọc.
  • TC4 (Filter - dữ liệu liên hệ): Chọn Đã có số điện thoạiĐã có email -> danh sách chỉ còn hội thoại đủ dữ liệu tương ứng.
  • TC5 (Filter - thời gian): Chọn preset 7 ngày trước hoặc chọn ngày chính xác -> danh sách cập nhật theo khoảng thời gian đã chọn.
  • TC6 (Filter - nhân viên): Chọn nhiều nhân viên phụ trách liên hệ -> danh sách chỉ hiển thị hội thoại thuộc nhóm nhân viên được chọn.
  • TC7 (Saved view): Mở Cấu hình hiển thị mặc định -> chỉnh bộ lọc, kênh hiển thị, thứ tự khối CRM -> bấm Cập nhật -> tải lại màn hình -> cấu hình vẫn được giữ nguyên.
  • TC8 (Cancel saved view): Mở popup cấu hình -> thay đổi dữ liệu -> bấm Hủy -> mở lại popup -> không ghi nhận thay đổi vừa rồi.
  • TC9 (Ghi chú nội bộ): Nhập ghi chú nội bộ -> bấm gửi -> hệ thống hiển thị note trong timeline với style khác tin nhắn khách, không đẩy ra kênh ngoài.
  • TC10 (Cấu hình thông báo): Chỉnh danh sách nhân viên nhận thông báo -> lưu -> hệ thống áp dụng đúng danh sách đã chọn.
  • TC11 (Nhãn dán): Thêm mới nhãn dán và màu nhãn -> nhãn hiển thị đúng trong danh sách quản trị.
  • TC12 (Tin nhắn nhanh): Thêm mới mẫu tin nhắn nhanh có shortcut và nội dung -> mẫu mới xuất hiện trong bảng sau khi lưu.

VII. Các điểm cần kiểm tra lại / bổ sung

  • Saved view ở phiên bản đầu là:
    • chỉ có 01 cấu hình mặc định cho mỗi user,
    • hay cho phép tạo nhiều view có tên riêng? Theo Figma hiện tại tôi mới thấy modal Cấu hình hiển thị mặc định, chưa thấy danh sách nhiều view.
  • Cần xác nhận phạm vi lưu cấu hình:
    • theo từng user,
    • theo vai trò,
    • hay theo toàn bộ workspace/page.
  • Cần xác nhận chính xác các kênh hỗ trợ ở V1:
    • Figma đang thể hiện icon của social/chat channel,
    • nhưng chưa đủ để kết luận đầy đủ danh sách kênh chính thức.
  • Cần xác nhận logic đọc/chưa đọc/đã phản hồi:
    • tính theo tin nhắn cuối,
    • theo trạng thái của agent,
    • hay theo trạng thái toàn cuộc hội thoại.
  • Cần xác nhận quyền của từng vai trò:
    • ai được sửa cài đặt đa kênh,
    • ai được quản lý nhãn dán,
    • ai được quản lý tin nhắn nhanh,
    • ai được sửa cấu hình hiển thị mặc định.
  • Cần xác nhận ghi chú nội bộ hiển thị cho:
    • chỉ người tạo,
    • toàn bộ team phụ trách,
    • hay toàn bộ user có quyền xem hội thoại.
  • Cần xác nhận hành vi + Thêm ở panel CRM bên phải:
    • thêm object mới,
    • liên kết object có sẵn,
    • hay hỗ trợ cả hai.
  • Cần xác nhận rule auto-link contact khi cùng lúc tìm thấy:
    • cả số điện thoại và email,
    • hoặc phát hiện nhiều contact trùng tiêu chí.
  • Cần xác nhận rule chatbot:
    • khi nào bot dừng,
    • khi nào bot được bật lại,
    • ưu tiên giữa agent và bot khi cả hai cùng có thể phản hồi.
  • Cần xác nhận phạm vi nhãn dán và tin nhắn nhanh:
    • dùng chung toàn hệ thống,
    • theo kênh/page,
    • hay theo user/team.