Bối cảnh và vấn đề nghiên cứu
Trong bối cảnh bùng nổ của mạng Internet và công nghệ thông tin, mô hình kinh doanh trực tuyến và thương mại điện tử đã trở thành phương thức giao dịch phổ biến của các doanh nghiệp. Việc giao tiếp và chăm sóc khách hàng trực tiếp trên website đóng vai trò quan trọng trong việc thu thập khách hàng tiềm năng, nắm bắt thị hiếu người tiêu dùng và tối ưu hóa chi phí vận hành. Tuy nhiên, việc duy trì đội ngũ tư vấn viên trực tuyến 24/7 đòi hỏi nguồn nhân lực lớn. Chatbot xuất hiện như một giải pháp tự động hóa quy trình chăm sóc khách hàng, hỗ trợ giải đáp thắc mắc và tiếp cận người mua ngay cả khi nhân sự không có mặt trực tuyến.
Khảo sát thực tiễn các giải pháp chatbot xây dựng theo kịch bản trên thị trường ghi nhận một số hạn chế nhất định:
- Hệ thống NovaonX (Việt Nam): Hỗ trợ xây dựng và quản lý chatbot theo kịch bản nhằm tự động hóa bán hàng, nhưng phạm vi tích hợp còn hạn chế (chỉ hoạt động trên fanpage Facebook) và giao diện quản trị còn phức tạp, đòi hỏi người dùng mất nhiều thời gian làm quen và thiết lập.
- Hệ thống Tidio (Quốc tế): Nền tảng chat đa kênh có giao diện trực quan, cho phép tạo kịch bản bot và chạy thử nghiệm. Tuy nhiên, tính năng thử nghiệm kịch bản yêu cầu mở ra một cửa sổ trình duyệt mới, làm gián đoạn quy trình làm việc và giảm trải nghiệm người dùng.
Để giải quyết các vấn đề trên, đề tài tập trung nghiên cứu và phát triển một hệ thống xây dựng chatbot theo kịch bản tích hợp vào Subiz — nền tảng chat trực tuyến đa kênh (Website, Facebook Fanpage, Zalo) hoạt động theo mô hình SaaS (Software as a Service). Hệ thống chatbot được định hướng trở thành một tính năng trực tiếp trong Subiz, hỗ trợ tư vấn viên (agent) tự động tiếp cận khách hàng tiềm năng và phân phối hội thoại.
Mục tiêu nghiên cứu của đề tài được xác định cụ thể qua 4 nhiệm vụ:
- Tìm hiểu công nghệ Docker, tìm hiểu công nghệ vận hành các Docker Container là Kubernetes (k8s); tìm hiểu hệ quản trị cơ sở dữ liệu phân tán Cassandra, công nghệ Message Queue Apache Kafka và giao thức truyền thông gRPC.
- Thiết kế, xây dựng và cài đặt môi trường chạy bot.
- Thiết kế, xây dựng và cài đặt các hành động (action) cho Chatbot.
- Thử nghiệm và đánh giá hiệu năng hệ thống.
Đối tượng và phạm vi nghiên cứu:
- Đối tượng nghiên cứu: Kiến trúc hệ thống, quy trình điều phối và các thành phần chức năng của Chatbot theo kịch bản dạng cây phân cấp quyết định.
- Phạm vi không gian và hệ thống: Tích hợp trực tiếp trên nền tảng chat trực tuyến Subiz, phục vụ các kênh giao tiếp gồm cửa sổ chat website, fanpage Facebook và Zalo. Mục tiêu vận hành kỹ thuật đặt ra là phục vụ trên 1.000.000 người dùng mỗi ngày (> 1.000.000 users/day) và chịu tải trên 10.000 request trong thời gian cao điểm.
- Phạm vi thời gian: Quá trình phân tích thiết kế, xây dựng các ca sử dụng và hoàn thiện hệ thống được tiến hành từ tháng 12/2020 đến tháng 01/2021.
Cơ sở lý thuyết và phương pháp
Khung lý thuyết và mô hình tiếp cận
Đề tài dựa trên cơ sở phân loại chatbot theo chất lượng trải nghiệm người dùng gồm ba nhóm: chatbot theo kịch bản, chatbot nhận dạng từ khóa và chatbot trò chuyện theo ngữ cảnh (sử dụng Machine Learning và Trí tuệ nhân tạo). Hệ thống trong đồ án thuộc nhóm Chatbot theo kịch bản.
Bản chất của chatbot theo kịch bản là một hệ thống phân cấp cây quyết định (decision tree):
- Mỗi nút (node) biểu diễn một hành động (Action) cụ thể của bot.
- Mỗi cạnh nối biểu diễn một điều kiện (Condition) kích hoạt. Phản hồi của người dùng tại nút trước sẽ quyết định nhánh rẽ tiếp theo. Trường hợp phản hồi không khớp với bất kỳ điều kiện nào của các nút con, hệ thống quy định nút con nằm ngoài cùng bên trái phù hợp sẽ được lựa chọn để thực thi.
- Mô hình thực thể bao gồm: đối tượng Bot (định nghĩa kịch bản) và ExecBot (một thể hiện - instance cụ thể của Bot được khởi tạo khi thỏa mãn điều kiện kích hoạt).
Công nghệ nền tảng và cơ sở dữ liệu
Hệ thống sử dụng tổ hợp các công nghệ phân tán chuyên dụng:
- Apache Cassandra: Hệ quản trị cơ sở dữ liệu NoSQL phân tán theo mô hình mạng ngang hàng (P2P), phát triển bằng Java. Dữ liệu lưu trữ dạng key-value store trong các keyspace. Cơ chế ghi tuần tự ưu tiên qua bộ nhớ đệm Memtable trước khi ghi xuống đĩa cứng SSTable, mang lại thông lượng ghi cao với độ trễ thấp (khoảng 0.5 ms), trong khi độ trễ truy vấn đọc khoảng 2.5 ms.
- Apache Kafka: Nền tảng truyền luồng dữ liệu phân tán (distributed streaming platform) viết bằng Scala và Java theo mô hình Publish - Subscribe. Hệ thống bao gồm 4 thành phần chính: Producer, Broker, Consumer và Zookeeper quản lý cụm. Dữ liệu truyền tải dưới dạng các mảng byte (hỗ trợ String, JSON, Avro) lưu trữ trong các Topic được chia nhỏ thành các Partition.
- Docker và Kubernetes (k8s): Docker cung cấp nền tảng ảo hóa mức hệ điều hành thông qua Image, Container và Dockerfile theo nguyên lý "build once, run anywhere". Kubernetes đóng vai trò điều phối container, cấu thành từ API Server, Master Node và Worker Node, quản lý các đơn vị triển khai Pods nhằm tự động hóa cân bằng tải, mở rộng và tự phục hồi khi có sự cố.
- Giao thức gRPC (gRPC Remote Procedure Call): Giao thức truyền thông liên dịch vụ (server-to-server) do Google phát triển trên nền HTTP/2, sử dụng Protocol Buffers (
.proto) làm ngôn ngữ định nghĩa giao diện (IDL) và định dạng tuần tự hóa nhị phân. Tốc độ truyền tin nhanh hơn từ 20 đến 100 lần so với các định dạng dựa trên văn bản như XML hay JSON.
Phương pháp nghiên cứu
- Phương pháp phân tích và thiết kế phần mềm: Áp dụng mô hình hướng đối tượng, phân tích chức năng thông qua biểu đồ ca sử dụng (Use Case Diagram), mô tả tuần tự qua biểu đồ tương tác (Sequence Diagram) và tổ chức mã nguồn theo mô hình 3 lớp (3-layer architecture).
- Phương pháp thực nghiệm và đo lường: Triển khai cài đặt hệ thống trên môi trường cụm container, sử dụng công cụ đo tải chuẩn ApacheBench để phát sinh tải (các phương thức HTTP POST và GET), thu thập số liệu độ trễ phản hồi và tỷ lệ yêu cầu thành công.
Thiết kế và triển khai hệ thống
Kiến trúc tổng thể hệ thống (Microservices)
Hệ thống xây dựng theo mô hình kiến trúc Microservices, phân chia thành các service độc lập đảm nhận nhiệm vụ chuyên biệt:
- API Service: Cổng định tuyến trung tâm (API Gateway), tiếp nhận request HTTP từ phía người dùng/client và chuyển đổi thành request nội bộ theo giao thức gRPC.
- Conversation Service: Chịu trách nhiệm khởi tạo, lưu trữ và điều phối toàn bộ luồng tin nhắn, trạng thái của các cuộc hội thoại (conversation).
- ChatBot Service: Thành phần xử lý cốt lõi, quản lý cấu trúc kịch bản bot, điều phối vòng đời các thể hiện ExecBot và thực thi chuỗi hành động (Action).
- User Service: Xử lý và lưu trữ hồ sơ thông tin thuộc tính của người dùng (user).
- Cassandra Cluster: Phân tầng lưu trữ cơ sở dữ liệu phân tán dùng chung cho các service.
Kiến trúc lõi ChatBot Service
Nội bộ ChatBot Service được thiết kế theo cấu trúc module hóa:
- Cổng tiếp nhận giao tiếp: Gồm 3 module định tuyến đầu vào tương ứng với 3 giao thức:
ServeGrpc (xử lý lời gọi thủ tục từ xa đồng bộ), ServeHttp (xử lý các kết nối HTTP trực tiếp) và ServeAsync (tiếp nhận sự kiện bất đồng bộ qua Message Queue Kafka).
- ChatBot Core & BotMgr: Tiếp nhận API, quản lý dữ liệu cấu hình bot và thực hiện các thao tác truy vấn cơ sở dữ liệu.
- Runner: Quản lý vòng đời và điều phối luồng thực thi của các đối tượng Bot thực thi (ExecBot).
- Action Module: Quản lý logic nghiệp vụ và thi hành các hành động cụ thể trong cây quyết định.
- Schedule & LoadJob: Cung cấp cơ chế lập lịch tĩnh phục vụ các tác vụ chạy nền định kỳ (LoadJob dọn bộ nhớ cache, giải phóng tài nguyên) và lập lịch động điều khiển thời gian hoạt động của bot.
- DB: Tầng trừu tượng hóa giao tiếp cơ sở dữ liệu Cassandra.
Thiết kế điều kiện kích hoạt (Trigger) và hành động (Action)
Hệ thống cho phép cấu hình bộ lọc trigger đa chiều nhằm tự động hóa việc mở cửa sổ chat và bắt đầu kịch bản:
| Nhóm Trigger |
Chi tiết điều kiện kích hoạt trong văn bản |
| Thời điểm kích hoạt |
- Khách vừa truy cập website. - Khách chủ động gửi tin nhắn. - Khách có ý định thoát trang (di chuyển chuột chéo từ góc trái sang góc phải màn hình). - Khách nhấp chuột vào một thẻ HTML <div> cụ thể. - Khách cuộn trang đạt tỷ lệ x%. - Khách lưu lại trên trang sau khoảng thời gian x giây. - Khách ở trên trang x giây nhưng không có tương tác. |
| Đối tượng áp dụng |
- Khách truy cập mới (chưa có session trước) hoặc khách quay lại. - Nguồn gốc truy cập (referrer). - Vị trí địa lý (quốc gia, thành phố chỉ định hoặc loại trừ). - Loại thiết bị (máy tính, điện thoại, máy tính bảng). - Trình duyệt web (Google Chrome, Mozilla Firefox, IE, Safari, Microsoft Edge). - Thuộc tính người dùng đã tồn tại (email, số điện thoại, tên). |
| Lên lịch thời gian |
- Kích hoạt theo các ngày cụ thể trong tuần. - Kích hoạt theo khung giờ trong ngày (ví dụ: ban đêm từ 19h00 đến 07h00 sáng hôm sau). - Kích hoạt vào một ngày ấn định cụ thể. |
Hệ thống cung cấp 7 loại hành động (Action) cho phép ghép nối trong kịch bản:
- Gửi tin nhắn: Gửi một hoặc nhiều thông điệp; đính kèm hình ảnh, video, tệp âm thanh hoặc tài liệu văn bản; gắn biến thuộc tính người dùng (ví dụ:
{user.email}); hỗ trợ tùy chọn chờ phản hồi và hiệu ứng đang nhập tin nhắn (typing).
- Hỏi câu hỏi: Gửi câu hỏi và tiếp nhận phản hồi; trích xuất dữ liệu lưu vào biến người dùng; kiểm tra định dạng dữ liệu (email, số điện thoại, ngày tháng, số học, URL); tự động bỏ qua nếu đã có thông tin; gửi tin nhắn yêu cầu nhập lại nếu sai định dạng; rẽ nhánh khi nhập lỗi; gửi tin nhắc nhở khi người dùng không phản hồi; nhận diện ý định từ chối cung cấp thông tin (chứa các từ "no", "không", "nope", "never") để tự động chuyển tiếp kịch bản.
- Gắn tag cuộc hội thoại: Phân loại, đánh dấu cuộc trò chuyện cho tư vấn viên theo dõi, có tùy chọn hoàn thành cuộc hội thoại.
- Kết thúc cuộc hội thoại: Đóng luồng kịch bản và hoàn tất phiên giao tiếp của bot.
- Phân phối tới tư vấn viên: Chuyển giao phiên chat sang nhân viên tư vấn và dừng bot. Hỗ trợ 5 cơ chế điều phối: phân phối theo luật định sẵn (rule - ví dụ chia theo vùng miền Bắc/Nam), phân phối chỉ định đích danh agent, phân phối tới tất cả agent, phân phối tới một nhóm agent, hoặc phân phối vòng tròn đồng đều (round robin).
- Nhảy tới hành động khác: Chuyển hướng luồng thực thi đến một nút bất kỳ trong cây kịch bản.
- Gửi request HTTP: Gửi yêu cầu HTTP kèm biến thuộc tính người dùng đến domain bên ngoài của agent, hỗ trợ tính năng chạy thử để kiểm tra gói tin phản hồi.
Nội dung chính theo từng chương
Chương 1. Đặt vấn đề và định hướng giải pháp
Chương 1 thiết lập cơ sở thực tiễn của đề tài dựa trên xu thế chuyển đổi số và phát triển của thương mại điện tử. Tác giả phân tích nhu cầu cấp thiết về khả năng chăm sóc khách hàng tự động trên website nhằm giảm thiểu chi phí nhân lực trực đêm hoặc giờ cao điểm. Đồ án đưa ra định nghĩa về chatbot, hệ thống hóa 3 mô hình chatbot dựa trên trải nghiệm người dùng, đồng thời so sánh ưu - nhược điểm của hai hệ thống tiêu biểu trên thị trường là NovaonX và Tidio.
Từ các phân tích trên, chương 1 xác định giải pháp xây dựng hệ thống chatbot theo kịch bản tích hợp trực tiếp trên nền tảng chat SaaS của Subiz. Văn bản quy định các khái niệm then chốt trong hệ sinh thái (Account, Account Owner, Agent, User, Conversation, Bot, ExecBot, Trigger, Action, Condition, Event). Tác giả chi tiết hóa toán học cấu trúc cây phân cấp quyết định của bot, nguyên tắc chọn nhánh con bên trái nhất khi không khớp điều kiện, đồng thời đặc tả chi tiết tập hợp các điều kiện trigger (thời điểm, đối tượng, lịch biểu) và 7 loại hành động cơ bản của hệ thống.
Chương 2. Các công nghệ sử dụng
Chương 2 tập trung khảo sát các công nghệ nền tảng tạo nên hạ tầng kỹ thuật của hệ thống:
- Hệ quản trị CSDL Cassandra: Trình bày lịch sử phát triển, mô hình kiến trúc phân tán P2P, cơ chế phân tách không gian lưu trữ bộ nhớ Memtable và không gian đĩa cứng SSTable. Văn bản làm rõ các chỉ số vận hành: độ trễ ghi 0.5 ms, độ trễ đọc 2.5 ms, cấu trúc dữ liệu Keyspace và Table không có khóa ngoại, phù hợp cho dịch vụ tin nhắn.
- Nền tảng truyền thông điệp Apache Kafka: Trình bày mô hình cấu trúc hệ thống gồm Producer, Broker, Consumer và Zookeeper; cơ chế phân vùng Partition trong các Topic và định dạng byte array (String, JSON, Avro).
- Công nghệ ảo hóa Docker: Trình bày quy trình đóng gói qua Dockerfile, Image và Container; mô hình 3 thành phần Docker Client, Docker Host (Daemon) và Docker Registry (Docker Hub).
- Hệ thống điều phối Kubernetes: Trình bày kiến trúc gồm API Server, Master Node, Worker Node và khái niệm Pods, phân tích năng lực tự động cân bằng tải, mở rộng và giám sát vòng đời ứng dụng.
- Giao thức gRPC: Phân tích giao thức truyền thông nhị phân trên nền HTTP/2 sử dụng Protocol Buffers, dẫn chứng ưu thế tốc độ nhanh hơn XML/JSON từ 20 đến 100 lần, song cũng nêu rõ các nhược điểm: dữ liệu nhị phân không thân thiện với việc đọc trực tiếp của con người, hạn chế tương tác trực tiếp với giao diện Frontend và số lượng công cụ kiểm thử API còn giới hạn.
Chương 3. Các kết quả đạt được
Chương 3 trình bày toàn bộ kết quả phân tích, thiết kế, hiện thực hóa và kiểm thử hệ thống:
- Phân tích chức năng: Mô tả 2 tác nhân chính (Agent, User) và 8 ca sử dụng tổng thể (UC-01 đến UC-08). Văn bản cung cấp tài liệu đặc tả ca sử dụng chi tiết cho từng trường hợp: Quản lý danh sách bot (UC-01), Thêm bot mới với thư viện template (UC-02), Chỉnh sửa bot (UC-03), Xóa bot (UC-04), Xem thống kê hoạt động bot (UC-05), Thử kịch bản bot trực tiếp trên giao diện (UC-06), Thử hành động bot gửi request HTTP (UC-07) và Tương tác với Bot dành cho User (UC-08).
- Phân tích cấu trúc: Thiết kế hệ thống theo mô hình 3 lớp (3-layer architecture):
- Tầng giao diện (Presentation Layer - GUI): Gồm các lớp
GUI_Login, GUI_QLDanhsachBot, GUI_CreateBot, GUI_Report, GUI_Bot, GUI_Try, GUI_CuasoChat.
- Tầng logic nghiệp vụ (Business Logic Layer - BLL): Gồm
BLL_QLDanhsachBot, BLL_StartBot, BLL_Action, BLL_Report, BLL_BotRevision.
- Tầng truy cập dữ liệu (Data Access Layer - DAL): Gồm các lớp tương tác thực thể cơ sở dữ liệu
Bot, ExecBot, ExecBotIndex, BotTag.
- Thiết kế cơ sở dữ liệu: Xây dựng danh mục các bảng lưu trữ trên Cassandra gồm 4 bảng chính:
Bot (lưu cấu hình kịch bản), BotExec (lưu trạng thái phiên chạy bot), BotTag (lưu nhãn phân loại) và ExecBotIndex (lưu chỉ mục tìm kiếm).
- Kiểm thử hiệu năng: Tiến hành thực nghiệm bằng công cụ ApacheBench nhằm khảo sát độ trễ phản hồi và độ ổn định của hệ thống dưới các mức tải request POST và GET khác nhau.
Chương 4. Kết luận và định hướng phát triển
Chương tổng kết đánh giá mức độ hoàn thành so với mục tiêu đề ra ban đầu: xây dựng thành công phân hệ chatbot theo kịch bản trên nền tảng Subiz, bảo đảm tính năng chạy thử kịch bản trực tiếp không cần mở trình duyệt mới và kiểm soát được các loại hành động phân phối cuộc trò chuyện. Đồng thời, chương trình bày các định hướng phát triển trong tương lai bao gồm việc mở rộng thêm các hành động mới, tích hợp công nghệ AI/ML để tăng độ thông minh và phát triển các giải pháp hỗ trợ chuyển đổi khách hàng tiềm năng.
Kết quả và đóng góp
Kết quả kỹ thuật và số liệu thực nghiệm
Hệ thống đã triển khai thành công 8 ca sử dụng nghiệp vụ, thiết lập đầy đủ giao diện quản trị kịch bản bằng cây phân cấp và tích hợp chức năng "Xem thử" nội tuyến trực tiếp trên cửa sổ chat.
Về mặt kiểm thử tải, tác giả sử dụng công cụ ApacheBench để đánh giá hiệu năng các endpoint xử lý với hai phương thức HTTP POST và GET. Kết quả được hệ thống hóa qua danh mục các bảng và biểu đồ đo lường:
| Bảng số liệu trong văn bản |
Nội dung chỉ số đo lường qua ApacheBench |
| Bảng 3.16 |
Thời gian phản hồi trung bình của mỗi request ứng với số lượng request gửi đến (kịch bản POST). |
| Bảng 3.17 |
Thời gian phản hồi trung bình của mỗi request ứng với số lượng request gửi đến (kịch bản GET). |
| Bảng 3.18 |
Phần trăm số lượng request hoàn thành trong một khoảng thời gian nhất định (kịch bản POST). |
| Bảng 3.19 |
Phần trăm số lượng request hoàn thành trong một khoảng thời gian nhất định (kịch bản GET). |
| Bảng 3.20 |
Tỷ lệ phần trăm số request được xử lý thành công trên tổng số request phát sinh. |
Các biểu đồ tương ứng (từ Hình 3.42 đến Hình 3.46 trong văn bản) phản ánh trực quan quy luật phản hồi: hệ thống duy trì được tính ổn định, thời gian trễ nằm trong ngưỡng kiểm soát khi nâng số lượng request đồng thời, đáp ứng mục tiêu kiến trúc chịu tải cho dịch vụ nhắn tin.
Giải pháp và kiến trúc đề xuất
- Đề xuất kiến trúc dịch vụ phân tán kết hợp xử lý đồng bộ tốc độ cao qua gRPC và xử lý hàng đợi bất đồng bộ qua Apache Kafka, giúp giảm tải trực tiếp cho các dịch vụ nền tảng.
- Tận dụng cơ chế lưu trữ kết hợp Memtable/SSTable của Cassandra để tối ưu hóa năng lực ghi dữ liệu hội thoại với độ trễ ghi thực tế đạt mức 0.5 ms.
- Xây dựng mô hình cây quyết định linh hoạt với cơ chế tự động chuyển tiếp kịch bản khi nhận diện từ chối ("no", "không", "nope", "never") hoặc rẽ nhánh mặc định về nút bên trái nhất khi người dùng nhập dữ liệu không xác định.
Đóng góp so với các hệ thống đi trước
Theo công bố của tác giả, hệ thống đạt được các cải tiến cụ thể:
- Khắc phục nhược điểm của NovaonX: Không bị giới hạn trong phạm vi Facebook Fanpage mà hoạt động đa kênh đồng thời trên Website, Facebook và Zalo thông qua kiến trúc Subiz SaaS. Giao diện thiết lập kịch bản được chuẩn hóa dạng cây trực quan, rút ngắn thời gian làm quen cho người quản trị.
- Khắc phục nhược điểm của Tidio: Tính năng chạy thử kịch bản (dry-run) và thử hành động gửi HTTP request được tích hợp trực tiếp ngay trên trang cấu hình, hiển thị cửa sổ chat tương tác tại chỗ mà không cần mở tab trình duyệt mới, giữ liền mạch trải nghiệm của tư vấn viên.
Hạn chế và hướng nghiên cứu tiếp
Hạn chế của hệ thống
Căn cứ trên phạm vi thiết kế và phân tích công nghệ được văn bản đề cập:
- Hệ thống hoạt động hoàn toàn dựa trên kịch bản cây quyết định tĩnh (deterministic rule-based). Khả năng xử lý phản hồi của người dùng chỉ dừng lại ở việc so khớp từ khóa cơ bản và kiểm tra định dạng dữ liệu (regular expressions), chưa có khả năng hiểu ngữ nghĩa ngôn ngữ tự nhiên phức tạp.
- Giao thức gRPC tuy mang lại hiệu năng cao nhưng dữ liệu định dạng nhị phân gây khó khăn cho việc giám sát, gỡ lỗi thủ công; đồng thời việc thiếu hỗ trợ toàn diện ở tầng trình duyệt khiến hệ thống buộc phải phụ thuộc vào API Service trung gian để chuyển đổi từ HTTP sang gRPC.
Hướng phát triển tiếp theo
Văn bản xác định 3 định hướng mở rộng hệ thống trong tương lai:
- Phát triển thêm các hành động cho Bot: Bổ sung các loại action chuyên sâu nhằm mở rộng khả năng tương tác với các hệ sinh thái bên ngoài.
- Phát triển sự "thông minh" cho Bot: Nghiên cứu tích hợp các mô hình Trí tuệ nhân tạo (AI), Học máy (Machine Learning) và Xử lý ngôn ngữ tự nhiên (NLP) để chuyển đổi từ chatbot kịch bản thuần túy sang chatbot nhận dạng ngữ cảnh.
- Thu hút thêm khách hàng tiềm năng: Bổ sung các công cụ phân tích dữ liệu hành vi chuyên sâu nhằm tối ưu hóa tỷ lệ chuyển đổi khách hàng truy cập website thành khách hàng thực tế.
Giá trị tham khảo
Tài liệu đồ án mang lại giá trị tham khảo thực tiễn cho nhiều nhóm đối tượng:
- Sinh viên ngành Công nghệ thông tin và Kỹ thuật phần mềm: Là tài liệu tham khảo chi tiết về quy trình công nghệ xây dựng một dịch vụ phân tán hoàn chỉnh; cung cấp mẫu đặc tả ca sử dụng (Use Case Specification) chuẩn mực, biểu đồ tuần tự và phương pháp phân rã hệ thống theo kiến trúc 3 lớp kết hợp Microservices.
- Kỹ sư phát triển phần mềm Backend: Cung cấp mô hình kiến trúc tham chiếu hữu ích trong việc tích hợp đồng thời các giải pháp công nghệ phân tán: Apache Kafka (hàng đợi xử lý bất đồng bộ), Apache Cassandra (tối ưu hóa ghi dữ liệu tốc độ cao) và gRPC (giao tiếp nội bộ giữa các service trên nền HTTP/2).
- Nhà phát triển giải pháp MarTech/Chăm sóc khách hàng: Cung cấp bản thiết kế nghiệp vụ đầy đủ về các điều kiện kích hoạt hành vi (trigger) trên website (nhận diện ý định thoát trang, cuộn trang, thời gian trên trang) và các thuật toán phân phối hội thoại cho tư vấn viên (rule-based, round robin).
Câu hỏi thường gặp
1. Hệ thống xử lý như thế nào nếu phản hồi của người dùng không khớp với bất kỳ điều kiện nào của các nút con trong cây kịch bản?
Theo quy tắc điều hướng được tác giả xây dựng tại mục kiến trúc kịch bản, nếu câu trả lời hoặc phản hồi của người dùng không thỏa mãn bất kỳ điều kiện (condition) nào được định nghĩa trên các cạnh rẽ nhánh, hệ thống sẽ tự động chọn nút con nằm ngoài cùng bên trái phù hợp để làm hành động tiếp theo.
2. Hành động "Hỏi câu hỏi" nhận biết và xử lý tình huống người dùng từ chối cung cấp thông tin ra sao?
Hệ thống cài đặt sẵn bộ nhận diện từ chối: nếu tin nhắn phản hồi đầu tiên của người dùng chứa các từ khóa như "no", "không", "nope", "never", hệ thống sẽ xác định người dùng từ chối chia sẻ thông tin. Khi đó, bot sẽ tự động bỏ qua hành động hỏi hiện tại và lập tức chuyển tiếp sang hành động kế tiếp trong kịch bản để tránh gây phiền hà cho khách hàng.
3. Hệ thống hỗ trợ những phương thức nào để phân phối cuộc hội thoại từ Chatbot sang tư vấn viên (agent)?
Văn bản đặc tả 5 phương thức phân phối cuộc hội thoại:
- Phân phối theo luật định sẵn (rule), ví dụ: phân chia cuộc chat của khách hàng miền Bắc cho tư vấn viên miền Bắc, khách hàng miền Nam cho tư vấn viên miền Nam.
- Phân phối chỉ định đích danh một hoặc một số agent cụ thể.
- Phân phối đồng thời tới tất cả các agent có trong hệ thống.
- Phân phối tới một nhóm agent cụ thể.
- Phân phối xoay vòng đồng đều theo thuật toán Round Robin.
4. Điều kiện kích hoạt "Khách có ý định thoát web" (exit-intent) được xác định bằng thuật toán nào?
Hệ thống nhận diện hành vi thoát trang dựa trên thao tác chuột: khi người dùng di chuyển con trỏ chuột theo đường chéo từ góc trái màn hình sang góc phải màn hình (hướng tới biểu tượng tắt trình duyệt/tab), hệ thống nhận định khách hàng có ý định rời trang, từ đó tự động bật cửa sổ chat và kích hoạt kịch bản bot tương ứng.
5. Tại sao ChatBot Service lại triển khai đồng thời 3 cổng tiếp nhận: ServeGrpc, ServeHttp và ServeAsync?
Đây là thiết kế phục vụ kiến trúc Microservices đa kênh:
ServeGrpc phục vụ các cuộc gọi thủ tục nội bộ đồng bộ có yêu cầu phản hồi tức thời với tốc độ cao giữa các service (nhanh hơn từ 20 đến 100 lần so với JSON).
ServeHttp tiếp nhận trực tiếp các request HTTP tiêu chuẩn từ các thành phần bên ngoài hoặc client.
ServeAsync lắng nghe các sự kiện truyền qua Message Queue Apache Kafka để xử lý bất đồng bộ các tác vụ nền, giúp phân tách tải và đảm bảo hệ thống không bị tắc nghẽn khi lưu lượng thông điệp tăng đột biến.
Kết luận
Đồ án tốt nghiệp "Hệ thống xây dựng Chatbot theo kịch bản" đã giải quyết trọn vẹn bài toán tự động hóa chăm sóc khách hàng bằng cách xây dựng thành công một dịch vụ chatbot kịch bản hoàn chỉnh tích hợp vào nền tảng chat SaaS Subiz. Hệ thống được tổ chức theo kiến trúc Microservices hiện đại, khai thác hiệu quả sức mạnh của các công nghệ phân tán tiên tiến gồm Apache Cassandra, Apache Kafka, gRPC và Kubernetes nhằm đảm bảo năng lực chịu tải cao và tính sẵn sàng. Các kết quả kiểm thử thực nghiệm bằng ApacheBench đã chứng minh tính khả thi kỹ thuật của giải pháp, thiết lập nền tảng vững chắc cho các nghiên cứu ứng dụng trí tuệ nhân tạo chuyên sâu trong tương lai.