TROISINH
Phát triển AgentChannels & Integration

Multi-channel Strategy: Cùng agent, nhiều kênh, context thống nhất

Thiết kế một agent duy trì context liên tục qua Zalo, Telegram, Email, Web chat—không để khách hàng phải kể lại từ đầu khi đổi kênh.

Tại sao khách hàng phải kể lại "Tôi đã đặt hàng màu xanh" khi chuyển từ Zalo sang Email? Đó là vì hầu hết chatbot hiện nay bị "mù" khi đổi kênh—mỗi cửa sổ chat là một thế giới riêng biệt. Multi-channel strategy giải quyết điều này bằng cách tách biệt "bộ não" (context thống nhất) khỏi "cái miệng" (giao diện từng kênh), biến agent từ công cụ đơn lẻ thành hệ thống omnichannel thực sự.

Vấn đề

Kênh đổi, trí nhớ mất

Khi khách hàng bắt đầu hỏi giá trên Facebook Messenger, chuyển sang Zalo để gửi file đính kèm, rồi gọi điện thoại để xác nhận—hầu hết hệ thống hiện nay xử lý đây là ba người dùng khác nhau. Kết quả: khách phải kể lại từ đầu, agent không nhớ đã hứa gì.

Nguyên nhân là kiến trúc channel-centric: mỗi kênh có database, context, và business logic riêng. Web chat widget lưu session trong Redis 30 phút. Zalo OA lưu ở cloud của Zalo. Facebook Messenger lại ở Meta Graph API. Không có "bộ não trung tâm" nào kết nối chúng.

N + 1 vấn đề

Triển khai agent trên N kênh đồng nghĩa với bảo trì N codebase. Một thay đổi logic ("thêm bước xác nhận trước khi gửi báo giá") phải implement N lần. Một bug bảo mật cần patch N lần. Đội ngũ 3 người developer sẽ bị overwhelmed chỉ với 3 kênh.

UX không nhất quán

Người dùng học cách dùng agent trên web chat: "Tôi muốn xem đơn hàng". Sang Zalo, câu lệnh giống hệt lại được xử lý bởi engine khác, trả về câu trả lời khác. Mental model bị phá vỡ—họ không tin agent nữa vì "nó không nhất quán".

Ý tưởng cốt lõi

Tách biệt Brain và Voice

Multi-channel kiến trúc gồm hai tầng:

  • Brain (Agent Core): Một instance duy nhất xử lý logic, memory, tool use. Không biết gì về Zalo hay Telegram.
  • Voice (Channel Adapters): Layer mỏng chuyển đổi protocol của từng kênh (Telegram webhook format, Zalo OA message format, WebSocket) thành unified message format gửi vào Brain.

Nguyên tắc Single Source of Truth: Context và lịch sử hội thoại phải lưu ở một nơi—thường là database của agent platform—không phải trong Zalo hay Telegram. Các kênh chỉ là "cửa sổ nhìn vào".

Universal Message Format

Thay vì xử lý raw format của từng kênh (Telegram's Update object, Zalo's webhook JSON), channel adapter chuyển đổi về unified format:

interface UniversalMessage {
  messageId: string;
  channel: 'telegram' | 'zalo' | 'web' | 'discord';
  userId: string;        // Universal user ID (linked across channels)
  sessionId: string;     // Shared session across channels
  content: string;
  attachments?: File[];
  timestamp: Date;
}

Brain chỉ biết về UniversalMessage. Nó không cần code riêng cho "Zalo có sticker, Telegram có voice message"—adapter xử lý phần đó, chỉ gửi về Brain content có ý nghĩa.

Cross-Channel Session

Khi user chuyển từ Zalo sang Email, system phải nhận ra đây là cùng một người. Cơ chế User Channel Linking:

  1. Implicit: Số điện thoại, email, hoặc account ID trùng nhau
  2. Explicit: Người dùng nói "Tôi là khách hàng có email abc@example.com" → Brain xác minh và link
  3. Token-based: Web chat generate QR, user scan bằng Zalo để link

Sau khi link, userId trong UniversalMessage là như nhau dù channel khác nhau.

Ví dụ thực tế

E-commerce Omnichannel

Một cửa hàng thời trang triển khai agent trên Website (chat widget), Facebook Messenger, và Zalo OA:

Scenario: Khách hàng An bắt đầu chat trên web:

  • 10:00 (Web): "Tôi thích cái áo khoác đen" → Agent gợi ý size, lưu vào wishlist
  • 10:15 (Messenger): Chuyển sang FB, hỏi "Áo đó còn size L không?" → Agent nhớ áo nào, check inventory
  • 10:30 (Zalo): Gửi ảnh thử áo qua Zalo, hỏi "Có ship hôm nay không?" → Agent biết áo L, địa chỉ từ web session

Kiến trúc:

Web Widget     Facebook       Zalo OA
     |              |              |
     v              v              v
  Adapter      Adapter       Adapter
     |              |              |
     +-------+------+--------------+
             |
             v
     Unified Brain (Agent Core)
             |
             v
     Shared Memory (Conversation DB)

Ứng dụng thực tế

Support Ticket Routing

Khi vấn đề kỹ thuật phức tạp phát sinh:

  • Tầng 1: Agent trả lời tự động trên Zalo/Telegram cho FAQ
  • Tầng 2: Vấn đề phức tạp → Agent tạo ticket trong Zendesk/Jira, báo người dùng "Check email để theo dõi"
  • Tầng 3: Support rep trả lời qua email → Email adapter inject reply vào cùng conversation thread, user thấy tiếp tục trên Zalo

Context không mất, dù người dùng đổi channel từ chat sang email.

Context Handoff với Human

Trong ngân hàng, chatbot AI xử lý 80% câu hỏi. Khi cần chuyển sang nhân viên:

  • Agent tóm tắt toàn bộ hội thoại (10 tin nhắn qua 3 kênh) thành 3 dòng context
  • Agent chuyển sang human với summary + link đến original conversation
  • Nhân viên có thể trả lời qua phone (voice channel) mà vẫn nắm context đầy đủ

So sánh

Kiến trúcChannel-SiloedMulti-ChannelOmnichannel (Agent Platform)
ContextMỗi kênh riêngPartial syncUniversal session
DevelopmentN codebase1 brain + adapters1 brain + 1 adapter framework
UXKhách kể lại từ đầuManual linkSeamless cross-channel
Cost$$$ (N teams)$$$ (shared infra)

Multi-Channel là bước tiến so với siloed, nhưng vẫn cần người dùng chủ động "link" account. Omnichannel Agent Platform là mục tiêu: context tự động theo user, không cần họ làm gì thêm.

Bài viết liên quan

On this page