Kiến trúc hệ thống giao tiếp khách hàng đa kênh là gì?
Kiến trúc hệ thống giao tiếp khách hàng đa kênh là cách các thành phần như channel, message, conversation, customer, agent, automation và analytics được chia thành các lớp có trách nhiệm rõ ràng và trao đổi dữ liệu với nhau.
Một kiến trúc cơ bản có thể hình dung như sau:
CHANNEL LAYER — Facebook | Zalo | WhatsApp | TikTok | Website
↓
INTEGRATION LAYER
↓
MESSAGE & CONVERSATION LAYER
↓
CUSTOMER & CONTEXT LAYER
↓
ORCHESTRATION LAYER — Routing | Assignment | Automation | SLA
↓
EXECUTION LAYER — Agent | Bot | AI
↓
DATA & ANALYTICS LAYER
Mục tiêu của kiến trúc không đơn giản là:
“Đưa tất cả tin nhắn về một màn hình.”
Mà là:
Biến những tương tác đến từ nhiều channel thành dữ liệu conversation có context, có owner, có workflow và có thể đo lường.
Nếu chưa hiểu các thành phần cấu tạo nên hệ thống, nên đọc trước Thành phần của hệ thống nhắn tin đa kênh.
Nếu muốn xem luồng xử lý cụ thể của một message, xem Hệ thống nhắn tin đa kênh hoạt động như thế nào?.

Vì sao hệ thống đa kênh nên được chia thành các lớp?
Nếu Facebook, Zalo, Inbox, Customer, Automation và Reports nằm trong một khối, việc thêm channel, đổi assignment, bổ sung AI hoặc KPI dễ làm các thành phần ảnh hưởng lẫn nhau.
Kiến trúc phân lớp giúp tách trách nhiệm:
- Channel Layer: nhận/gửi message.
- Conversation Layer: quản lý lifecycle.
- Customer Layer: quản lý identity và context.
- Orchestration Layer: quyết định ai/cái gì xử lý.
- Analytics Layer: đo kết quả.
Tên layer có thể khác nhau, nhưng mỗi lớp cần có trách nhiệm rõ ràng và giao tiếp qua dữ liệu có cấu trúc.
Lớp 1 — Channel Layer
Channel Layer tiếp xúc trực tiếp với các nền tảng khách hàng sử dụng như Facebook, Zalo, WhatsApp, Telegram, TikTok và Website Chat.
Một Channel Entity thường có: ID, Type, Account, Connection Status, Permissions và Credentials.
Lớp này cần trả lời: message đến từ đâu, thuộc account nào, connection còn hoạt động không, ai được phép sử dụng và channel hỗ trợ loại message nào.
Đọc thêm:
Lớp 2 — Integration & Normalization Layer
Mỗi channel có API, user ID, event và cấu trúc message khác nhau. Nếu toàn hệ thống phải hiểu từng format riêng, kiến trúc sẽ nhanh chóng phức tạp.
External Channel Event → Connector → Normalization → Internal Message Event
Event nội bộ có thể chuẩn hóa về: event_id, channel_id, sender_id, timestamp, message_type, content và attachments. Nhờ đó mọi channel dùng chung một Internal Message Model.
Đây là nền tảng để đồng bộ hội thoại nhiều kênh hiệu quả hơn.

Lớp 3 — Message & Conversation Layer
Sau khi message được chuẩn hóa, hệ thống tổ chức chúng thành conversation.
Channel → Message → Conversation
Một conversation thường gồm Conversation ID, Customer ID, Channel, Messages, Status, Assignee, Tags, Priority và SLA.
Conversation Layer chịu trách nhiệm tạo conversation, append message, đổi status, đóng/reopen và lưu history.
New → Assigned → In Progress → Pending → Resolved
Đây là lớp trung tâm của quản lý hội thoại khách hàng.

Unified Inbox nằm ở lớp nào?
Unified Inbox thường là presentation/operational interface nằm trên Conversation Layer: Conversation Data → Inbox API/Query → Unified Inbox → Agent.
Inbox không phải nơi duy nhất lưu dữ liệu.
Nó là giao diện để:
- Xem conversation
- Filter
- Search
- Reply
- Assign
- Tag
- Xem customer context
Xem thêm:
Lớp 4 — Customer Identity & Context Layer
Lớp này trả lời hai câu hỏi: “người đang nhắn là ai và hệ thống đã biết gì về người đó?”
Một Customer Entity có thể là:
Customer
├── Customer ID
├── Name
├── Phone
├── Email
├── Social IDs
├── Channels
├── Tags
├── History
├── Orders
└── Owner
Quan hệ quan trọng:
Customer
1
↓
n Conversations
Ví dụ:
Customer Nguyễn A
├── Facebook Conversation #101
├── Zalo Conversation #205
└── Website Conversation #309
Nếu dữ liệu cho phép, hệ thống có thể thực hiện Identity Resolution:
Facebook ID ─┐
Phone ───────┤
Email ───────┼→ CUSTOMER #1024
Zalo ID ─────┘
Đọc thêm:

Customer Context được hình thành từ đâu?
Context không phải một field duy nhất mà là tập hợp dữ liệu liên quan đến conversation hiện tại: Profile + Conversation History + Tags + Orders + Previous Issues + Assigned Owner.
Context càng đầy đủ, Routing và Automation càng có nhiều dữ liệu để ra quyết định.
Lớp 5 — Orchestration Layer
Orchestration quyết định conversation đi đâu và hệ thống cần làm gì tiếp theo. Lớp này thường gồm Tagging, Routing, Assignment, Queue, Priority, SLA, Automation và Escalation.
Đây là một trong những lớp quan trọng nhất.
Nó có thể bao gồm:
- Tagging
- Routing
- Assignment
- Queue
- Priority
- SLA
- Automation
- Escalation
Ví dụ:
Conversation → Evaluate Context → Routing Rule → Team → Agent
Một rule có thể là:
IF
Customer.Tag = VIP
AND
Conversation.Tag = Khiếu nại
THEN
- Priority = High
- Assign = Priority Support
- SLA = 3 phút
Orchestration biến dữ liệu thành quyết định vận hành.

Routing Architecture
Routing có thể phát triển theo ba mức: Channel-based → Rule-based → Context-aware.
- Level 1 — Channel-based: Facebook → Facebook Team.
- Level 2 — Rule-based: Channel + Tag → Team.
- Level 3 — Context-aware: Channel + Tag + Customer Type + Priority + Workload → Best Agent.
Ví dụ: IF Channel = Zalo AND Customer = VIP AND Intent = Complaint THEN Priority CSKH Team.
Đọc thêm:
Automation Architecture
Automation không nên là một tập hợp các rule rời rạc. Nó cần có cấu trúc rõ ràng để dễ quản lý và tránh xung đột.
Cấu trúc cơ bản:
EVENT → TRIGGER → CONDITIONS → ACTIONS
Ví dụ:
EVENT
New Message
↓
TRIGGER
Conversation Updated
↓
CONDITION
Outside Working Hours
↓
ACTION
Send Message
Add Tag
Queue Conversation
Ngoài ra, một hệ thống automation tốt cần có:
- Priority: xác định rule nào được ưu tiên.
- Conflict Handling: xử lý khi nhiều rule cùng chạy.
- Timeout: tránh workflow bị treo hoặc chờ quá lâu.
- Logging: ghi lại các hoạt động để dễ kiểm tra và debug.
- Human Handoff: chuyển sang nhân viên khi automation không thể xử lý.
Mục tiêu là xây dựng automation dễ hiểu, dễ kiểm soát và hoạt động ổn định.
Đọc thêm:

Queue và SLA nằm ở đâu trong kiến trúc?
Conversation chưa được xử lý ngay có thể vào Queue và được sắp theo priority, waiting time, customer type hoặc SLA remaining.
Conversation → Queue → Priority → Agent
SLA: Conversation Created → SLA Timer Starts → First Response → Resolution
Đọc thêm:
Lớp 6 — Execution Layer: Agent, Bot và AI
Sau Orchestration, conversation đi vào Execution Layer với ba actor chính: Agent, Rule-based Bot và AI.
- Agent: con người trực tiếp tương tác.
- Rule-based Bot: xử lý flow đã xác định trước.
- AI: hiểu intent, truy xuất knowledge hoặc tạo response.
Có thể thiết kế:
Conversation
↓
Can Automation Resolve?
│
├── Yes → Bot/Automation
│
└── No
↓
Can AI Assist?
│
├── Yes → AI + Agent
│
└── No → Agent
Hoặc:
AI
↓
Confidence ≥ Threshold?
│
├── Yes → Respond
└── No → Human Handoff
Đọc thêm:

Knowledge Base nằm ở đâu?
Knowledge Base thuộc lớp Knowledge/Intelligence, đóng vai trò là nơi lưu trữ và cung cấp thông tin cho:
- AI Bot
- Agent
- Quick Reply
- Automation
Ví dụ:
Knowledge Base
├── Product
├── Pricing
├── Policies
├── Shipping
├── Troubleshooting
└── FAQ
Luồng xử lý cơ bản:
Customer Question
↓
AI / Search
↓
Knowledge Base
↓
Relevant Knowledge
↓
Answer
Một hệ thống tốt cũng cần có fallback:
Knowledge found + Confidence high
→ Answer
Knowledge uncertain
→ Human Handoff
Điều này giúp AI chỉ trả lời khi có đủ thông tin và chuyển cho nhân viên khi không chắc chắn.
Đọc thêm:
Lớp 7 — Data & Analytics Layer
Mọi hoạt động trong hệ thống đều tạo ra dữ liệu. Data & Analytics Layer có nhiệm vụ thu thập, chuẩn hóa và phân tích các dữ liệu này.
Ví dụ:
- Channel → Channel Events
- Conversation → Lifecycle Events
- Customer → Customer Attributes
- Agent → Handling Events
- Automation → Rule Execution
- SLA → Timing Events
Một số event quan trọng:
- Conversation Created
- Conversation Assigned
- First Response Sent
- Tag Added
- Conversation Resolved
- Automation Executed
- Handoff Triggered
Từ những dữ liệu này, hệ thống có thể tính toán các KPI như:
- Conversation Volume
- First Response Time
- Resolution Time
- Pending Rate
- Handoff Rate
- Agent Performance
- Channel Performance
Nói đơn giản, Data Layer biến các hoạt động trong hệ thống thành dữ liệu có thể đo lường, từ đó giúp doanh nghiệp theo dõi hiệu suất và đưa ra quyết định.
Đọc thêm:

Data Flow và Control Flow khác nhau thế nào?
Đây là hai luồng khác nhau nhưng luôn đi cùng nhau trong một hệ thống.
Data Flow
Trả lời câu hỏi: Dữ liệu đi đâu?
Ví dụ: Channel → Message → Conversation → Customer History → Analytics
Control Flow
Trả lời câu hỏi: Hệ thống quyết định làm gì tiếp theo?
Ví dụ: Conversation → Check Tag → Check Priority → Routing → Automation → Agent
Có thể hiểu đơn giản:
Data Flow = Dữ liệu di chuyển
Control Flow = Quyết định được thực thi
Một kiến trúc tốt cần thiết kế cả Data Flow và Control Flow để hệ thống vừa quản lý dữ liệu tốt, vừa xử lý đúng logic.

Kiến trúc quan hệ Entity–Attribute–Value
Một cách đơn giản để thiết kế Data Model là mô tả mỗi đối tượng bằng 3 thành phần:
Entity → Attribute → Value
Ví dụ:
Channel
Type = Zalo
Status = Connected
Conversation
Status = New
Priority = High
Assignee = Agent A
Customer
Segment = VIP
Tag = Đã mua
SLA
First Response = 5 phút
Từ các thuộc tính này, hệ thống có thể xây dựng Rule:
IF
Conversation.Status = New
AND
Customer.Segment = VIP
THEN
Conversation.Priority = High
Có thể hình dung Data Model như sau:
| Entity | Attribute | Value |
|---|---|---|
| Channel | Type | Zalo |
| Conversation | Status | New |
| Conversation | Priority | High |
| Customer | Segment | VIP |
| Agent | Workload | 8 |
| SLA | First Response | 5 phút |
| Automation | Action | Assign Team |
EAV giúp hệ thống mô hình hóa dữ liệu linh hoạt và kết nối trực tiếp:
Data Model → Rule Engine → Workflow
Nhờ đó, dữ liệu không chỉ được lưu trữ mà còn có thể được sử dụng để ra quyết định và kích hoạt các workflow tự động.
Kiến trúc quan hệ thực thể
Các cardinality cơ bản: Channel 1→n Messages; Customer 1→n Conversations; Conversation 1→n Messages; Conversation n→1 Assignee.
Một số mô hình có Conversation 1→n Supporters; Customer và Conversation có thể n↔n Tags.
Các relationship này ảnh hưởng trực tiếp đến database model, search/filter, routing và analytics.
Kiến trúc đồng bộ hay Event-driven?
Ở mức khái niệm, có thể hình dung hai cách hệ thống phản ứng.
Direct Processing
Message → Process → Result
Phù hợp với các hành động cần phản hồi trực tiếp.
Event-driven
Một thay đổi tạo event:
Conversation Created → EVENT
Nhiều hệ thống có thể cùng phản ứng:
ConversationCreated
├── Automation
├── SLA Timer
├── Assignment
├── Notification
└── Analytics
Ưu điểm của tư duy event-driven là một event có thể kích hoạt nhiều hành động mà các module không cần gắn quá chặt vào nhau.
Ví dụ:
ConversationResolved
├── Stop SLA
├── Update Analytics
├── Update Customer History
└── Trigger Follow-up
Đối với người triển khai nghiệp vụ, điều cần quan tâm không phải thuật ngữ kỹ thuật mà là:
Một thay đổi quan trọng trong hệ thống cần tạo ra những hành động tiếp theo nào?
Kiến trúc trạng thái Conversation
Conversation nên được thiết kế như một state machine, trong đó mỗi hành động hoặc sự kiện sẽ làm thay đổi trạng thái của conversation.
Ví dụ:
NEW
↓
ASSIGNED
↓
IN_PROGRESS
↓
PENDING
↓
RESOLVED
Conversation cũng có thể quay lại trạng thái mới:
RESOLVED
↓
New Customer Message
↓
REOPENED
Mỗi state transition cần được định nghĩa rõ:
| Current State | Event | Next State |
|---|---|---|
| New | Assign | Assigned |
| Assigned | Agent Reply | In Progress |
| In Progress | Wait Customer | Pending |
| Pending | Customer Reply | In Progress |
| In Progress | Solve | Resolved |
| Resolved | New Message | Reopened |
Điều này giúp các hệ thống khác dựa trên trạng thái chính xác để xử lý SLA, Queue, Automation và Analytics.
Nếu state model không rõ ràng, các dữ liệu và workflow phía trên cũng dễ bị sai:
- SLA tính sai
- Queue phân bổ sai
- Analytics không chính xác
- Workload của Agent bị sai
Nói đơn giản:
State = Conversation đang ở đâu
Event = Điều gì vừa xảy ra
Transition = Conversation sẽ đi đâu tiếp theo
Đọc thêm: Trạng thái hội thoại là gì?
Kiến trúc phân quyền
Một hệ thống có nhiều Agent cần xác định rõ ai được làm gì và trên tài nguyên nào.
Ví dụ:
- Ai được xem Channel nào?
- Ai được xem Customer nào?
- Ai được thay đổi Assignee?
- Ai được chỉnh Automation?
- Ai được xem Analytics?
Có thể tổ chức phân quyền theo cấu trúc:
Workspace → Team → Role → Permission → Resource
Ví dụ:
Role: Agent
✓ Được xem conversation được giao
✓ Được trả lời khách hàng
✓ Được thêm tag
✕ Không được chỉnh Automation
✕ Không được quản lý Billing
Nguyên tắc quan trọng là phân quyền dựa trên trách nhiệm vận hành thực tế, thay vì tạo quá nhiều role không cần thiết.
Nói đơn giản:
Role = Ai
Permission = Được làm gì
Resource = Được làm trên cái gì
Xem thêm: Phân quyền nhân viên CSKH
Reference Architecture cho SME
SME không cần triển khai toàn bộ kiến trúc ngay. Có thể phát triển theo từng giai đoạn: Foundation → Operations → Automation → Intelligence → Optimization.
- Foundation: Channels → Unified Inbox → Conversation → Customer.
- Operations: Tags + Assignment + Team + SLA.
- Automation: Trigger + Condition + Action.
- Intelligence: Knowledge Base + AI + Human Handoff.
- Measurement: Events → Analytics → Optimization.

Ví dụ kiến trúc: khách VIP gửi khiếu nại qua Zalo
Khách gửi: “Tôi đã thanh toán hai lần nhưng đơn vẫn chưa được xác nhận.”
- Channel Layer: Zalo → Message.
- Integration Layer: Zalo Event → Internal Message.
- Customer Layer: xác định Customer Nguyễn A, Tag = VIP.
- Conversation Layer: tạo Conversation #5502, Status = New.
- Classification: Intent = Payment Issue, Tag = Khiếu nại.
- Orchestration: VIP + Khiếu nại → Priority = High.
- Assignment: Priority CSKH Team → Agent A.
- SLA: First Response ≤ 3 phút.
- Execution: Agent xử lý conversation.
- Analytics: ghi Channel = Zalo, Type = Complaint, Customer = VIP, FRT = 2m15s, Resolution = 25m, Agent = A.
Một interaction đơn giản có thể đi xuyên gần như toàn bộ kiến trúc.
OmniChat có thể map vào Reference Architecture này như thế nào?
Ở cấp độ sản phẩm, có thể biểu diễn:
CHANNEL LAYER (Facebook / Zalo / Telegram / WhatsApp / TikTok / Website) → INBOX / CONVERSATION → CUSTOMER → TAGS / ASSIGNMENT → AUTOMATION → AI / KNOWLEDGE BASE / HUMAN HANDOFF → STATISTICS
Các trang feature liên quan:
- Kết nối đa kênh OmniChat
- Hộp thư đa kênh OmniChat
- Quản lý hội thoại OmniChat
- Quản lý khách hàng OmniChat
- Tag khách hàng OmniChat
- Automation OmniChat
- AI Bot OmniChat
- Knowledge Base OmniChat
- Báo cáo và thống kê OmniChat
Điểm quan trọng là:
Kiến trúc sản phẩm không nên được đánh giá chỉ bằng việc feature tồn tại hay không, mà bằng việc dữ liệu và context có đi xuyên được giữa các feature hay không.
Ví dụ:
- Inbox → có biết Customer?
- Customer → có biết History?
- Tag → có dùng cho Automation?
- Automation → có Assignment?
- Assignment → có liên quan SLA?
- SLA → có đi vào Analytics?
Nếu câu trả lời cho các relationship này là “có”, hệ thống có tính liên kết cao hơn.
10 nguyên tắc khi thiết kế kiến trúc hệ thống đa kênh
1. Channel không nên là trung tâm dữ liệu
Channel là entry point.
Customer và Conversation mới nên là các entity vận hành quan trọng.
2. Tách Message khỏi Conversation
Message là event giao tiếp.
Conversation là đơn vị xử lý.
3. Tách Customer khỏi Conversation
Một customer có thể có nhiều conversation.
4. Context phải được dùng lại
Customer history không nên chỉ để xem.
Nó nên có thể hỗ trợ:
- Routing
- Segmentation
- Automation
5. Workflow phải có State rõ
Nếu trạng thái không rõ, KPI sẽ sai.
6. Assignment phải có Owner
Mỗi conversation đang hoạt động cần trách nhiệm rõ nếu workflow yêu cầu.
7. Automation phải có Rule Priority
Không để nhiều automation cùng chạy không kiểm soát.
8. AI phải có Fallback
AI không chắc chắn phải có đường chuyển sang người thật.
9. Analytics phải dựa trên Event chuẩn
Không nên tính KPI từ dữ liệu không nhất quán.
10. Kiến trúc phải có khả năng mở rộng Channel
Thêm channel mới không nên buộc viết lại toàn bộ hệ thống.
Những sai lầm kiến trúc thường gặp
1. Xây hệ thống xoay quanh từng Channel
- Facebook Module
- Zalo Module
- WhatsApp Module
Nhưng không có Customer/Conversation Layer chung.
Kết quả: Multichannel nhưng dữ liệu phân mảnh.
2. Xem Inbox là toàn bộ hệ thống
Inbox là UI.
Nếu backend không có:
- Customer Model
- Assignment
- Workflow
- Event
- Analytics
thì khả năng vận hành vẫn hạn chế.
3. Customer Identity không rõ
Duplicate customer làm history bị phân mảnh.
4. Automation gắn cứng vào từng Channel
Điều này khiến workflow khó tái sử dụng.
Tốt hơn:
Conversation Context
↓
Automation
khi use case cho phép.
5. Không có State Model
Open, Pending, Resolved bị dùng không nhất quán.
6. Không lưu Event History
Khi KPI sai, không thể truy lại:
- Assignment thay đổi lúc nào?
- Bot handoff lúc nào?
- SLA breach vì sao?
7. AI đứng độc lập khỏi Knowledge Base
AI không có nguồn tri thức được kiểm soát sẽ khó duy trì consistency.
Checklist kiến trúc dành cho Product/Dev
Channel Layer
- Có adapter/connector riêng cho từng channel.
- Có connection status.
- Có account/channel ID.
- Có retry/error handling.
Message Layer
- Có internal message model.
- Lưu timestamp và channel.
- Hỗ trợ attachment.
Conversation Layer
- Có Conversation ID.
- Có State Model, history và reopen logic.
Customer Layer
- Có Customer ID, identifier mapping, duplicate handling và history.
Context Layer
- Có tags, customer attributes và conversation attributes.
Orchestration
- Có Routing, Assignment, Queue, SLA và Automation priority.
Agent Layer
- Có Team, Role, Permission và Workload.
Intelligence
- Có Quick Reply, Knowledge Base, AI confidence và Human Handoff.
Data
- Có Event logging, Metrics, Audit trail và Dashboard.
Câu hỏi thường gặp
Hệ thống nhắn tin đa kênh có bắt buộc dùng kiến trúc 7 lớp không?
Không. Đây là reference model để dễ hiểu và phân chia trách nhiệm; hệ thống thực tế có thể chia module khác.
Thành phần nào nên là trung tâm?
Với giao tiếp khách hàng, Conversation và Customer thường là hai entity quan trọng; Channel nên là entry point.
Unified Inbox thuộc kiến trúc backend hay frontend?
Thường là giao diện vận hành dùng dữ liệu từ Conversation, Customer và Assignment phía sau.
Automation thuộc Conversation Layer hay Orchestration Layer?
Trong reference model này, Automation thuộc Orchestration vì quyết định hành động tiếp theo dựa trên event và context.
AI Bot nên nằm ở đâu?
AI thuộc Execution/Intelligence Layer, nhận context và có thể dùng Knowledge Base để trả lời.
Analytics nên lấy dữ liệu trực tiếp từ UI không?
Nên dựa trên dữ liệu/event có cấu trúc để giảm phụ thuộc vào giao diện.
SME có cần Event-driven Architecture không?
Không cần bắt đầu từ thuật ngữ kỹ thuật. Quan trọng là xác định: khi event X xảy ra, module nào cần phản ứng?
Kết luận
Kiến trúc hệ thống giao tiếp khách hàng đa kênh có thể nhìn như chuỗi: Channel → Integration → Conversation → Customer → Context → Orchestration → Agent/AI → Analytics.
- Channel: kết nối khách hàng.
- Integration: chuẩn hóa dữ liệu.
- Conversation: tổ chức hội thoại.
- Customer: nhận diện người dùng.
- Context: bổ sung lịch sử và thuộc tính.
- Orchestration: quyết định workflow.
- Execution: Agent / Automation / AI xử lý.
- Analytics: đo hiệu quả.
Thiết kế tốt không có nghĩa hệ thống phải phức tạp. Mục tiêu là tách đúng trách nhiệm để mở rộng mà vẫn giữ customer context và tính nhất quán của workflow.
Với SME, nên phát triển theo thứ tự Foundation → Operations → Automation → Intelligence → Optimization thay vì triển khai mọi layer cùng lúc.
Các bài nên đọc tiếp:
