Chiến dịch Telesale

I. Tổng quan

1. Vấn đề

  • Đội ngũ Telesale gọi điện tư vấn bán hàng nhưng thiếu công cụ tập trung: data KH nằm rải rác, agent phải mở nhiều tab (CRM, softphone, script), dẫn đến thao tác chậm và sai sót khi ghi chú kết quả.
  • Quản lý không biết agent đang gọi cho ai, mất bao nhiêu thời gian, tỷ lệ chốt đơn là bao nhiêu — không có dữ liệu để đánh giá hiệu suất và đào tạo.
  • Phân bổ data không công bằng hoặc không tối ưu: agent giỏi nhận data kém chất lượng, hoặc một KH bị nhiều agent gọi trùng.

2. Giải pháp

  • Xây dựng module Chiến dịch Telesale cung cấp:
    • Lead Distribution Engine: Tự động chia data KH cho agent theo quy tắc định sẵn.
    • Telesale Workspace: Giao diện làm việc hợp nhất: thông tin KH, kịch bản gọi, softphone, ghi chú — tất cả trong một màn hình.
    • Giám sát & Báo cáo: Dashboard KPI cho quản lý và agent.

3. Đối tượng

  • Admin / Sales Manager: Tạo chiến dịch, cấu hình quy tắc phân bổ data, giám sát KPI đội nhóm.
  • Agent Telesale (Sales / CSKH): Nhận data, gọi điện, ghi kết quả qua Workspace.
  • QA Team: Nghe lại ghi âm cuộc gọi để đánh giá chất lượng và đào tạo.

4. Tầm nhìn / Insight

  • Tích hợp AI coaching: gợi ý script theo thời gian thực dựa trên phân tích hội thoại.
  • Power Dialer / Predictive Dialer: tự động quay số để agent không phải chờ kết nối.
  • Tích hợp với Chiến dịch Callbot: sau khi bot gọi, tự động đẩy KH quan tâm sang hàng đợi Telesale.

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

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

| # | Tính năng | Mô tả | |:—|:—|:—| | 1 | Tạo / Sửa / Xóa chiến dịch | Quản lý vòng đời chiến dịch Telesale | | 2 | Phân bổ data (Lead Distribution) | Chia danh sách KH cho agent theo quy tắc | | 3 | Telesale Workspace | Giao diện làm việc tích hợp cho agent | | 4 | Ghi âm & Giám sát | Ghi âm cuộc gọi và nghe lại | | 5 | Ghi chú & Phân loại (Disposition) | Cập nhật kết quả cuộc gọi | | 6 | Báo cáo hiệu suất | KPI theo agent và theo chiến dịch | | 7 | Quản lý trạng thái chiến dịch | Draft → Active → Paused → Ended |

2. Đặc tả chi tiết


Tính năng 1: Tạo / Sửa / Xóa chiến dịch

User story: Là một [Sales Manager], tôi muốn [tạo chiến dịch telesale với đầy đủ thông tin về mục tiêu và thời gian] để [đội nhóm biết rõ họ đang làm gì và cần đạt KPI nào].

  • Use case 1.1 (Happy path): Nhập tên, chọn mục tiêu (Bán hàng mới / Upsell / Tái kích hoạt KH / Khảo sát), đặt thời gian chạy, nhập KPI mục tiêu → Tạo chiến dịch ở trạng thái Draft.
  • Use case 1.2 (Clone): Nhân bản chiến dịch đã kết thúc để tái sử dụng cấu hình → Hệ thống tạo bản Draft mới.

Cài đặt tạo chiến dịch:

Field Loại Bắt buộc Mô tả
Tên chiến dịch Text Tối đa 255 ký tự
Mục tiêu Dropdown Bán hàng mới, Upsell, Tái kích hoạt, Khảo sát
Thời gian chạy Date range Ngày bắt đầu → kết thúc
KPI mục tiêu Number Số đơn hàng / số cuộc gọi thành công mục tiêu
Script cuộc gọi Textarea / Editor Nội dung kịch bản tư vấn mẫu cho agent
Mô tả Textarea Ghi chú nội bộ

Tính năng 2: Phân bổ Data (Lead Distribution)

User story: Là một [Sales Manager], tôi muốn [hệ thống tự động phân bổ data KH công bằng và đúng người] để [tối đa tỷ lệ chuyển đổi và tránh xung đột data giữa các agent].

  • Use case 2.1 (Round-Robin): Danh sách KH được chia đều theo vòng cho tất cả agent trong chiến dịch. Ví dụ: 100 KH / 5 agent = mỗi agent nhận 20 KH.
  • Use case 2.2 (Phân bổ theo agent phụ trách cũ): Hệ thống tra cứu lịch sử tương tác → KH đã từng làm việc với agent nào thì ưu tiên giao lại cho agent đó.
  • Use case 2.3 (Chỉ định trực tiếp): Manager giao toàn bộ hoặc một phần danh sách cho agent cụ thể.
  • Use case 2.4 (Phân bổ theo kỹ năng): Agent được gắn tag kỹ năng (ví dụ: “Chốt deal cao cấp”) → KH theo tiêu chí nhất định được ưu tiên phân bổ cho agent phù hợp.

Quy tắc phân bổ:

Phương thức Mô tả Khi nào dùng
Round-Robin Chia vòng đều Data lạnh, không có lịch sử
Theo Agent cũ Ưu tiên agent từng follow-up Tái kích hoạt, upsell
Chỉ định thủ công Manager giao trực tiếp Chiến dịch đặc biệt, KH VIP
Theo kỹ năng Match tag kỹ năng agent Data cần chuyên biệt hóa

Nghiệp vụ: Một KH chỉ được phân bổ cho đúng 1 agent trong cùng chiến dịch. Nếu agent bị xóa khỏi chiến dịch, data của họ được phân bổ lại tự động.


Tính năng 3: Telesale Workspace

User story: Là một [Agent Telesale], tôi muốn [có một màn hình duy nhất để xem thông tin KH, gọi điện và ghi kết quả] để [làm việc nhanh hơn mà không phải chuyển đổi qua lại giữa nhiều ứng dụng].

Bố cục giao diện Workspace (3 vùng):

┌─────────────────────────────────────────────────────────┐
│  [Hàng đợi KH] ← Danh sách KH được phân bổ             │
├──────────────────────────┬──────────────────────────────┤
│  [Thông tin KH]          │  [Script & Ghi chú]          │
│  - Tên, SĐT, Email       │  - Kịch bản tư vấn          │
│  - Lịch sử tương tác     │  - Ô ghi chú cuộc gọi       │
│  - Deals đang mở         │  - Disposition Code          │
├──────────────────────────┴──────────────────────────────┤
│  [Softphone Bar] ← Nút Gọi / Kết thúc / Giữ máy / Chuyển│
└─────────────────────────────────────────────────────────┘

Luồng làm việc của Agent:

  1. Vào danh sách KH → Nhấn “Gọi tiếp theo” hoặc chọn KH cụ thể.
  2. Softphone tự động quay số → Agent nghe chuông và chờ kết nối.
  3. Trong lúc nói chuyện: Xem thông tin KH bên trái, tham khảo script bên phải.
  4. Sau cuộc gọi: Chọn Disposition Code (kết quả cuộc gọi) và điền ghi chú.
  5. Nhấn “Lưu & Gọi tiếp” → KH tiếp theo trong hàng đợi hiện lên.
  • Use case 3.1 (Click-to-call): Agent nhấn nút “Gọi” → Hệ thống tự động kết nối qua softphone WebRTC, không cần quay số tay.
  • Use case 3.2 (Xem lịch sử): Trong lúc chờ KH bắt máy, agent xem lịch sử cuộc gọi và giao dịch trước đây của KH.
  • Use case 3.3 (Chuyển cuộc gọi): Agent không xử lý được → Chuyển cho agent khác hoặc supervisor mà không cần cúp máy.

Tính năng 4: Ghi âm & Giám sát

User story: Là một [QA Manager], tôi muốn [nghe lại ghi âm cuộc gọi của từng agent] để [đánh giá chất lượng tư vấn và có dữ liệu đào tạo].

  • Use case 4.1: Mọi cuộc gọi trong chiến dịch được tự động ghi âm → Lưu vào hệ thống, liên kết với hồ sơ KH và chiến dịch.
  • Use case 4.2 (Supervisor nghe ngầm): Supervisor kết nối ngầm vào cuộc gọi đang diễn ra để giám sát mà agent và KH không biết.
  • Use case 4.3 (Whisper coaching): Supervisor nói với agent trong lúc gọi nhưng KH không nghe thấy.

Cài đặt ghi âm:

Setting Mô tả
Bật/Tắt ghi âm Toggle cho từng chiến dịch
Thông báo ghi âm Phát audio thông báo KH trước khi ghi âm (theo quy định pháp lý)
Thời hạn lưu trữ Cấu hình theo gói: 30/60/90/180 ngày
Phân quyền nghe Chỉ QA, Manager, hoặc toàn bộ team

Tính năng 5: Ghi chú & Phân loại kết quả (Disposition Codes)

User story: Là một [Agent], tôi muốn [phân loại kết quả cuộc gọi bằng các nhãn chuẩn] để [hệ thống tự động cập nhật trạng thái KH mà không cần tôi nhập tay từng trường].

Danh sách Disposition Code mặc định (có thể tùy chỉnh):

Code Ý nghĩa Hành động hệ thống
INTERESTED Khách hàng quan tâm, cần follow-up Tạo Task follow-up sau 2 ngày
DEAL_CLOSED Đã chốt đơn hàng Tạo Deal, cập nhật trạng thái KH
NOT_INTERESTED Không quan tâm Đánh dấu, không gọi lại trong 30 ngày
NO_ANSWER Không bắt máy Lên lịch gọi lại tự động
BUSY Máy bận Gọi lại sau 1 giờ
WRONG_NUMBER Số điện thoại sai Đánh dấu để loại khỏi danh sách
CALLBACK_REQUESTED KH yêu cầu gọi lại vào giờ khác Tạo Task gọi lại đúng giờ KH yêu cầu
DNC KH yêu cầu không gọi nữa Thêm vào danh sách DNC

Tính năng 6: Báo cáo Hiệu suất

Báo cáo theo Agent:

Chỉ số Mô tả
Tổng cuộc gọi Số cuộc gọi đã thực hiện
Tỷ lệ kết nối % cuộc gọi KH bắt máy
Thời gian thoại Tổng / trung bình thời gian đàm thoại
Tỷ lệ chốt đơn (Conversion) % cuộc gọi dẫn đến Deal
Tốc độ gọi Số cuộc gọi/giờ làm việc

Báo cáo theo Chiến dịch:

Chỉ số Mô tả
Tổng data / Đã gọi / Chưa gọi Tiến độ tổng thể
Doanh thu từ chiến dịch Tổng giá trị Deal được tạo
Phân phối Disposition Code Biểu đồ tỷ lệ các kết quả
Hiệu suất theo từng Agent So sánh các agent trong chiến dịch

3. Danh sách nghiệp vụ

  • Agent chỉ nhìn thấy data KH đã được phân bổ cho mình, không xem data của agent khác.
  • Supervisor và Manager có quyền xem toàn bộ data trong chiến dịch.
  • Sau khi agent chọn Disposition Code DNC, số điện thoại đó tự động được thêm vào danh sách DNC toàn hệ thống.
  • Một KH chỉ có thể được gọi bởi 1 agent trong cùng một chiến dịch tại cùng thời điểm (tránh xung đột đồng thời).
  • Ghi âm phải có thông báo rõ cho KH theo quy định pháp lý Việt Nam.
  • KPI báo cáo được chốt theo múi giờ GMT+7.

4. Giao diện

  • Trang danh sách chiến dịch: Bảng Tên, Mục tiêu, Trạng thái, Số agent, Tiến độ, KPI.
  • Trang quản lý data: Bảng danh sách KH, trạng thái phân bổ, số lần gọi, kết quả gần nhất.
  • Telesale Workspace: Layout 3 vùng như mô tả ở trên, tối ưu cho màn hình 1920×1080.
  • Dashboard báo cáo: Bảng tổng hợp có thể export PDF/Excel.

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

  • Tốc độ load Workspace: Thông tin KH phải hiển thị trong vòng ≤ 2 giây khi agent chuyển sang KH tiếp theo.
  • Chất lượng VoIP: Packet loss ≤ 1%, Jitter ≤ 30ms, MOS ≥ 4.0 để đảm bảo chất lượng thoại.
  • Ghi âm: Ghi âm đồng thời tối đa 200 cuộc gọi mà không ảnh hưởng hiệu năng hệ thống.
  • Bảo mật: Ghi âm được mã hóa AES-256 khi lưu trữ. Log access ghi âm phải được lưu đầy đủ.
  • Concurrent users: Hỗ trợ ≥ 500 agent dùng Workspace đồng thời.

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

  • UCALL PBX Module: Xử lý cuộc gọi VoIP, softphone WebRTC, ghi âm.
  • CRM – Contact Management: Nguồn data KH, nơi ghi nhận Disposition Code và kết quả.
  • Task Module: Tạo task follow-up tự động từ Disposition Code.
  • Deal Module (Sales): Tạo Deal khi disposition là DEAL_CLOSED.
  • DNC List Service: Kiểm tra và cập nhật danh sách DNC.
  • Chiến dịch Callbot: Có thể tiếp nhận KH từ chiến dịch Callbot chuyển sang.

V. API Contract (Dev viết)

API 1: Tạo chiến dịch Telesale

  • Method & Endpoint: POST /api/v1/campaigns/telesale
  • Request Body:
    {
      "name": "Upsell Gói Pro - Q3/2026",
      "objective": "upsell",
      "start_date": "2026-07-01",
      "end_date": "2026-07-31",
      "target_kpi": 200
    }
    
  • Response 201: { "id": "camp_ts_001", "status": "draft" }

API 2: Phân bổ data cho chiến dịch

  • Method & Endpoint: POST /api/v1/campaigns/telesale/{campaign_id}/distribute
  • Request Body:
    {
      "method": "round_robin",
      "agent_ids": ["agent_001", "agent_002", "agent_003"],
      "contact_ids": ["cid_1", "cid_2", "..."]
    }
    

API 3: Cập nhật disposition sau cuộc gọi

  • Method & Endpoint: PATCH /api/v1/campaigns/telesale/{campaign_id}/calls/{call_id}
  • Request Body:
    {
      "disposition_code": "INTERESTED",
      "note": "KH quan tâm gói Pro, gọi lại thứ 3 tuần sau",
      "callback_at": "2026-07-08T10:00:00+07:00"
    }
    

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

Phân bổ data:

  • TC1.1: Phân bổ round-robin 100 KH cho 5 agent → Mỗi agent nhận đúng 20 KH.
  • TC1.2: Agent bị xóa khỏi chiến dịch → 20 KH của agent đó được chia lại cho 4 agent còn lại (5 KH/agent).
  • TC1.3: KH đã được phân bổ cho Agent A → Không thể phân bổ cho Agent B trong cùng chiến dịch.

Telesale Workspace:

  • TC2.1: Agent nhấn “Gọi tiếp theo” → Softphone kết nối, thông tin KH hiển thị trong ≤ 2 giây.
  • TC2.2: Agent nhấn “Kết thúc cuộc gọi” → Màn hình Disposition xuất hiện yêu cầu chọn kết quả.
  • TC2.3: Agent không chọn Disposition trong 60 giây → Hệ thống tự động lưu NO_DISPOSITION và cảnh báo.

Disposition & Ghi chú:

  • TC3.1: Chọn DEAL_CLOSED → Hệ thống tự động tạo Deal với thông tin KH.
  • TC3.2: Chọn DNC → SĐT được thêm vào DNC list, không xuất hiện trong chiến dịch nào khác.
  • TC3.3: Chọn NO_ANSWER → Hệ thống lên lịch gọi lại sau 1 giờ (nếu trong khung giờ cho phép).

Ghi âm:

  • TC4.1: Cuộc gọi kết thúc → File ghi âm xuất hiện trong hồ sơ KH trong ≤ 30 giây.
  • TC4.2: Agent không có quyền nghe ghi âm → Nút nghe bị vô hiệu hóa.