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
Draftmớ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:
- Vào danh sách KH → Nhấn “Gọi tiếp theo” hoặc chọn KH cụ thể.
- Softphone tự động quay số → Agent nghe chuông và chờ kết nối.
- Trong lúc nói chuyện: Xem thông tin KH bên trái, tham khảo script bên phải.
- Sau cuộc gọi: Chọn Disposition Code (kết quả cuộc gọi) và điền ghi chú.
- 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_DISPOSITIONvà 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.