TỔNG QUAN
Khảo sát hiện trạng
Hiện nay, Chatbot đã trở thành một ứng dụng phổ biến với nhiều quy mô và độ phức tạp khác nhau Dưới đây là một số số liệu cụ thể để minh chứng cho sự phát triển và ứng dụng rộng rãi của Chatbot trong các lĩnh vực khác nhau.
Hình 2.1 Dữ liệu Google Trend cho cụm từ "chatbot" trong vòng 5 năm trở lại đây
Dữ liệu Google Trend cho cụm từ “Chat bot” có xu hướng tăng dần theo từng năm và hiện tại đang ở mức khá ổn định
• 1.4 tỷ người đang sử dụng Chatbot (theo như Chatbot.Net)
• 56% doanh nghiệp tin rằng chatbot là một trong những nhân tố đột phá trong việc kinh doanh của họ (theo như Accenture)
Gần 60% các giám đốc doanh nghiệp cho rằng Chatbot có khả năng nâng cao hiệu suất tổ chức trong việc xử lý yêu cầu khách hàng thông qua việc kết nối với các bot khác Theo Accenture, Chatbot có thể cung cấp sự chăm sóc cá nhân hóa cho từng người dùng trên trang web.
Về mặt trải nghiệm, ta có những số liệu sau
• 265 tỷ yêu cầu từ khách hàng được đưa ra, tiêu tốn 1,3 nghìn tỷ USD mỗi năm (theo như Chatbots Journal)
• 30% khách hàng sẽ rời bỏ một nhãn hàng và không bao giờ trở lại vì trải nghiệm không tốt (theo như OpenText)
• 1 trong 5 yêu cầu trò chuyện trực tiếp từ khách hàng không bao giờ được trả lời (theo như SuperOffice)
Đến năm 2022, theo Lauren Foye từ Juniper Research, các ngân hàng sẽ tự động hóa tới 90% giao tiếp với khách hàng thông qua việc sử dụng Chatbot, theo thông tin từ Chatbots Magazine.
Về ảnh hưởng đến nhân viên chăm sóc khách hàng truyền thống, ta có những số liệu sau
• 64% thời gian AI Chatbot giao tiếp với khách hàng sẽ dùng để giải quyết các vấn đề phức tạp (theo như Salesforce 2)
• Khả năng định hình lại hệ thống nhân sự của một công ty là ảnh hưởng ít được nhắc đến nhất của Chatbot (khoảng 1 phần 10)
Về ý thích của người dùng, ta có những số liệu sau
• 54% khách hàng cho rằng công ty cần phải chuyển đổi cách mà họ tiếp cận khách hàng (theo như Salesforce)
• Chỉ 38% người tiêu dùng có nhu cầu trò chuyện trực tiếp với người thật khi tiếp xúc với một nhãn hàng (theo như Drift)
• 77% người tiêu dùng cho rằng Chatbot thay đổi kì vọng của họ lên công ty trong 5 năm tới (theo như Salesforce)
• 70% khách hàng thuộc thế hệ millennials (8x, 9x) có trải nghiệm tích cực với Chatbot (theo như Forbes)
• Số khách hàng sử dụng nắn tin trực tuyến thay vì thông qua điện thoại hay thư điện từ đã tăng 50% kể từ năm 2012 (theo như Forrester)
Hơn 64% người dùng Facebook tại Brazil, Ấn Độ, Anh và Mỹ cho biết họ muốn giao tiếp với các doanh nghiệp qua Facebook Messenger, vì họ cảm thấy khả năng nhận được phản hồi cao hơn so với các phương thức khác, theo thông tin từ Facebook Business.
Về tiềm năng phát triển của Chatbot, ta có những số liệu sau:
Thị trường Chatbot dự kiến sẽ đạt 9.4 tỷ USD vào năm 2024, tăng từ 2.6 tỷ USD trong năm 2019, với tỷ lệ tăng trưởng hàng năm 29.7% theo báo cáo của Business Insider.
Đến năm 2023, dự báo rằng 30% dịch vụ chăm sóc khách hàng sẽ được thực hiện một cách chủ động thông qua các hệ thống điều hành bởi trí tuệ nhân tạo (AI) và các hệ thống tích hợp thông minh khác, theo báo cáo của Gartner.
Chatbot đang trở thành một yếu tố quan trọng trong sự phát triển của doanh nghiệp, với tiềm năng lớn trong tương lai Để hiểu rõ hơn về tình hình thực tế của Chatbot và nhu cầu tìm kiếm thông tin, chúng ta sẽ khảo sát hai dịch vụ cụ thể.
2.1.1 CleverBot – Chatbot trò chuyện nổi tiếng nhất thế giới
Hình 2.2 Một giao diện của CleverBot
CleverBot là phần mềm chatbot ứng dụng trí tuệ nhân tạo, cho phép thiết lập cuộc trò chuyện tự nhiên với con người Được phát triển bởi nhà khoa học chuyên nghiên cứu về AI, CleverBot có khả năng học hỏi từ các cuộc trò chuyện trước đó để cải thiện khả năng giao tiếp.
AI tên là Rollo Carpenter Người tiền nhiệm của nó là Jabberwacky Dự án được bắt
Cleverbot, được ra mắt vào năm 1996 và chính thức hoạt động trên mạng vào năm 1997, đã học cách giao tiếp bằng cách lắng nghe hàng nghìn cuộc trò chuyện giữa nhà sáng lập Rollo Carpenter và các đồng nghiệp Đến nay, sau hơn một thập kỷ phát triển, Cleverbot đã thu thập được khoảng 150 triệu cuộc hội thoại.
Cleverbot đã đạt được nhiều thành tích ấn tượng, đặc biệt trong bài thử Turing chính thức diễn ra tại ngày hội Techniche 2011 tại Học viện công nghệ Guwahati, Ấn Độ Trong sự kiện này, Cleverbot có tỷ lệ 59.3% người tham gia đồng ý rằng nó là con người, dựa trên 1,334 phiếu bầu, so với tỷ lệ 63.3% của con người thật Điểm số trên 50.5% được coi là đạt yêu cầu của bài kiểm tra này.
Cleverbot không dựa vào kịch bản hay quy định cố định, mà sử dụng logic mở để tìm kiếm phản hồi phù hợp từ dữ liệu, chủ yếu là các cuộc trò chuyện trước đây với người dùng.
2.1.2 Google – Nền tảng tra cứu thông tin lớn nhất thế giới
Hình 2.3 Giao diện tra cứu thông tin của Google
Google là công cụ tìm kiếm lớn nhất thế giới, chiếm 92% lưu lượng tìm kiếm và là trang web được truy cập nhiều nhất Một trong những tính năng quan trọng của Google là Google Knowledge Graph, dịch vụ thu thập thông tin từ nhiều nguồn để cung cấp cho người dùng ngay trên trang kết quả tìm kiếm Thông tin này có thể liên quan đến cá nhân, tổ chức, thời tiết, chứng khoán, và hơn thế nữa Google Knowledge Graph cũng là nền tảng cho các trợ lý ảo như Google Home và Google Assistant trong việc trả lời câu hỏi của người dùng.
Nhận xét về hiện trạng
2.2.1 Các vấn đề còn tồn tại
Vấn đề còn tồn tại của các dịch vụ này bao gồm nhưng không hạn chế ở các vấn đề sau:
• Hỗ trợ cho tiếng Việt còn hạn chế
• Khả năng thực hiện các cuộc đối thoại bình thường (Small talk) còn hạn chế (đối với Google Assistant)
• Không nắm bắt được cảm xúc của người dùng
• Thiếu cơ chế nắm bắt ngữ cảnh
• Giao diện chưa được thân thiện
Các vấn đề nêu ra xuất phát từ nhiều nguyên nhân, trong đó nguyên nhân chủ yếu là các dịch vụ này chưa chú trọng đến người dùng tại Việt Nam Đây là sự khác biệt quan trọng so với định hướng của đề tài.
2.2.2 Các vấn đề được tập trung trong đề tài
Nhóm chúng tôi muốn tập trung vào việc giải quyết những vấn đề phát sinh từ việc thiếu giải pháp Chatbot ngôn ngữ tự nhiên dành riêng cho tiếng Việt, bao gồm các giải pháp cụ thể nhằm cải thiện trải nghiệm người dùng và nâng cao hiệu quả giao tiếp.
• Nâng cao khả năng phản hồi của Chatbot trong ngữ cảnh đối thoại bình thường
• Phân tích cảm xúc người dùng thông qua đoạn Chat để phục vụ việc cải thiện chất lượng Chatbot
• Bổ sung cơ chế nắm bắt ngữ cảnh có tổ chức ở mức cơ bản
• Đưa Chatbot vào một giao diện dễ sử dụng
Nhóm thực hiện luận án hướng đến việc phát triển một Chatbot có khả năng hiểu và xử lý ngôn ngữ tiếng Việt, nhằm ứng dụng trong các trợ lý ảo Sản phẩm cuối cùng sẽ giải quyết hiệu quả các vấn đề hiện tại trong lĩnh vực này.
NGHIÊN CỨU LÝ THUYẾT
Giới thiệu về bài toán Chatbot
Bài toán Chatbot có thể được hiểu đơn giản là nhận đầu vào từ tin nhắn của người dùng và trả về nội dung mà họ cần hoặc muốn Thách thức lớn nhất nằm ở việc xác định chính xác nhu cầu của người dùng Chatbot hoạt động như một hệ thống tương tác giữa con người và máy, với mục tiêu giải quyết một vấn đề cụ thể mà người dùng đang gặp phải.
Hình 3.1 Cấu trúc cơ bản của một hệ thống Chatbot
Tùy thuộc vào mục đích của Chatbot mà chúng ta có thể có một số các thước đo phi hình thức cho Chatbot Một số ví dụ bao gồm:
• Phép thử Turing (sẽ được giới thiệu ở phần sau)
• Khối lượng Chat (số tin nhắn trao đổi)
• Số người dùng mua hàng Chatbot khuyến nghị
Nhìn chung thì các thước đo này sẽ được chia ra làm 5 loại thước đo chính Cụ thể như sau:
• Khía cạnh trải nghiệm người dùng o Độ khả dụng (Usability) o Hiệu năng (Performance) o Tính tác động (Affect) o Độ hài lòng (Satisfactory)
• Khía cạnh thu thập thông tin
49 o Độ chính xác (Accuracy) o Dễ tiếp cận (Accessibility) o Độ hiệu quả (Efficiency)
• Khía cạnh ngôn ngữ o Chất lượng (Quality) o Định lượng (Quantity) o Tính liên quan (Relation) o Thái độ (Manner) o Chính xác về mặt ngữ pháp (Grammatical Accuracy)
• Khía cạnh công nghệ o Tính giống người (Humanity)
• Khía cạnh kinh doanh o Giá trị kinh tế (Business Value)
Đã có nhiều nỗ lực nhằm chuẩn hóa việc đánh giá hiệu quả của Chatbot thông qua các bộ khung như TRAINS-95, PARADISE, SASSI, MIMIC, v.v Tuy nhiên, mặc dù các bộ khung này đã tổ chức các thang đo một cách có cấu trúc hơn, chúng vẫn dựa vào các thang đo phi hình thức và mang tính chủ quan của người đánh giá.
Bài toán Chatbot kết hợp hai vấn đề lớn trong lĩnh vực xử lý ngôn ngữ tự nhiên, đó là thấu hiểu ngôn ngữ tự nhiên (Natural Language Understanding) Hệ thống máy tính cần hiểu các chuỗi ký tự thuộc ngôn ngữ tự nhiên và trích xuất dữ liệu có thể tổ chức trong máy Để giải quyết thấu hiểu ngôn ngữ tự nhiên, các bài toán con cần được xử lý bao gồm tiền xử lý, phân tích hình thái, phân tích cú pháp, phân tích ngữ nghĩa, phân tích ngữ dụng và phân tích diễn ngôn.
Hình 3.2 Ví dụ về bài toán thấu hiểu ngôn ngữ tự nhiên
Phần còn lại của bài toán cấu tạo ngôn ngữ tự nhiên (Natural Language Generation) liên quan đến việc hệ thống máy tính tổ chức dữ liệu và chuyển đổi chúng thành chuỗi ký tự ngôn ngữ tự nhiên để hiển thị cho người dùng Các bài toán con cần giải quyết bao gồm xác định nội dung, cấu trúc thông tin, tổng hợp thông tin, lựa chọn từ vựng, tạo cú pháp tham chiếu và hiện thực hóa.
Hình 3.3 Ví dụ về bài toán cấu tạo ngôn ngữ tự nhiên
Lý thuyết xây dựng Chatbot
3.2.1 Các hướng tiếp cận xây dựng Chatbot
3.2.1.1 Hướng tiếp cận ngây thơ
Một Chatbot cơ bản sẽ gồm 2 thành phần chính
• Một hệ thống xử lý đầu vào
• Một hệ thống biên soạn đầu ra (phản hồi) của Chatbot
Ví dụ cơ bản nhất có thể được mô tả như sau:
Người dùng: Bạn khỏe không?
Thời tiết ở Hà Nội ngày mai như thế nào Ý định: Hỏi thời tiết Địa điểm: Hà Nội
Khi người dùng nhập câu hỏi "Bạn khỏe không?", Chatbot sẽ phản hồi "Tôi khỏe" Hệ thống có thể được lập trình để so khớp dữ liệu đầu vào với câu hỏi này và nếu khớp, sẽ trả về phản hồi tương ứng Tuy nhiên, phương pháp này tồn tại nhiều vấn đề, sẽ được thảo luận trong phần 3.2.2.
3.2.1.2 Hướng tiếp cận tìm kiếm mờ Để hiểu về hướng tiếp cận tìm kiếm mờ Ta xét bài toán sửa lỗi chính tả Một trong những cách thức để xác định lỗi chính tả đó là tính toán khoảng cách chỉnh sửa (Edit distance) Với hai xâu ký tự nguồn source và xâu ký tự đích target, khoảng cách chỉnh sửa để biến xâu source thành xâu target được tính như sau
Khoảng cách chỉnh sửa(source, target) = w_a * a + w_d * d + w_s * s
Khoảng cách chỉnh sửa giữa hai xâu được xác định bởi số lượng tác vụ thêm, xóa và thay thế ký tự, với a là số tác vụ thêm, d là số tác vụ xóa, s là số tác vụ thay thế, và w_a, w_d, w_s là trọng số tương ứng (thường bằng 1) Khoảng cách chỉnh sửa nhỏ hơn (nhưng không bằng 0) cho thấy hai xâu gần giống nhau hơn, trong đó xâu nguồn có thể là xâu đích bị sai chính tả Một trong những thuật toán phổ biến để tính khoảng cách chỉnh sửa nhỏ nhất là thuật toán Levenshtein, được biểu diễn qua công thức cụ thể.
Hình 3.4 Mô tả thuật giải Levenshtein
Bằng cách áp dụng phương pháp quy hoạch động Wagner–Fischer, chúng ta có thể xây dựng một ma trận có kích thước (m + 1) × (n + 1), trong đó m là số từ của nguồn và n là số từ của đích Tiếp theo, chúng ta sẽ thực hiện các bước theo trình tự để hoàn thành quá trình.
• Từ xâu rỗng, ta có thể thêm từng ký tự vào cho đến khi đạt đến xâu mục tiêu
• Từ xâu gốc, ta có thể xóa từng ký tự đi cho đến khi xâu rỗng
• Từ trên xuống (j), trái qua phải (i), thực hiện các bước sau o Nếu source[i - 1] = target[j - 1] sub_cost = 0, o Nếu không sub_cost = 1 o Lấy m[i, j] min (m[i – 1, j] + 1, m[i, j - 1] + 1, m[i - 1, j - 1] + sub_cost)
• Giá trị m[m, n] chính là khoảng cách chỉnh sửa
Hình 3.5 Bảng minh họa phương pháp quy hoạch động của Wagner-Fischer (So sánh xâu Integration và Intelligent)
Thuật toán này không chỉ áp dụng cho chữ cái mà còn cho bất kỳ thực thể nào có thể phân chia thành các phần tử nhỏ hơn, gọi là token Bằng cách thay thế chữ cái bằng từ và từ bằng câu, cùng với một tập hợp câu và phản hồi lớn, chúng ta có thể cải thiện đáng kể hiệu suất Sử dụng cấu trúc dữ liệu như Trie giúp tối ưu hóa quá trình tìm kiếm, từ đó khắc phục được những hạn chế lớn của phương pháp tiếp cận đơn giản.
Hình 3.6 Cấu trúc dữ liệu Trie để lưu trữ từ điển cho phép so sánh mờ
3.2.1.3 Hướng tiếp cận mạng nơ-ron Để có thể hiểu được hướng tiếp cận này, ta cần phải hiểu về mạng nơ-ron (Ở đây ta sẽ nhắc đến mạng nơ-ron truyền thằng – Feed-forward Neural Network) Nguyên lý cơ bản của một mạng nơ-ron truyền thẳng đó là hệ thống sẽ bao gồm một lớp dữ liệu đầu vào, một số lớp dữ liệu ẩn, và một lớp dữ liệu đầu ra Mỗi lớp sẽ có một số nút (hay còn gọi là nút nơ-ron) là một hàm số (thường là các hàm có đồ thị hình chữ S như hàm sigmoid, hàm tanh, …) và một trọng số Mạng nơ-ron sẽ được huấn luyện bằng cách đưa một tập dữ liệu đầu vào, và kết quả mong đợi ở đầu ra Nhiệm vụ của mạng nơ-ron là điều chỉnh các trọng số trong mỗi nút ẩn để đưa ra được kết quả như mong đợi trong tập huấn luyện sử dụng truyền ngược sai số (Backpropagation)
Hình 3.7 Hình minh họa cho mạng nơ-ron truyển thẳng
Để huấn luyện mạng nơ-ron hiệu quả, cần thiết lập đầu vào là các biểu diễn từ ngữ và đầu ra là trọng số tương ứng với ý niệm người dùng Nhà phát triển nên thực hiện các bước tiền xử lý dữ liệu đầu vào trước khi tiến hành huấn luyện.
Chuẩn hóa (Normalization) là quá trình chuyển đổi các ký tự về một biểu diễn thống nhất, chẳng hạn như việc chuyển đổi ký tự hoa thành ký tự thường hoặc chuyển đổi giữa các bộ mã hóa khác nhau.
He has multiple candies -> he has multiple candies
Tuỳ trường hợp -> Tùy trường hợp
Câu tiếng việt (TCVN) -> Câu tiếng việt (Unicode)
• Phân tách từ (Tokenization): Phân tách xâu ký tự thành các token Cần đảm bảo thuật toán phân tách từ có thể xử lý được dấu câu
He does have multiple candies -> [“He”, “does”, “have”,
Tôi phải đi đây Cho tôi mượn 3.000 đồng được không? -> [“Tôi”,
“phải”, “đi”, “đây”, “.”, “Cho”, “tôi”, “mượn”, “3.000”, “đồng”,
Loại bỏ từ nghỉ là quá trình loại bỏ các token không ảnh hưởng đến nghĩa của câu, như những từ không mang ý nghĩa trong tiếng Việt, ví dụ "Đây" hay "Nhé", thường xuất hiện trong ngữ cảnh văn nói.
[“He”, “does”, “have”, “multiple”, “candies”]
[“Tôi”, “phải”, “đi”, “đây”, “.”, “Cho”, “tôi”, “mượn”, “3.000”,
“đồng”, “được”, “không”, “?”] -> [“Tôi”, “đi”, “.”, “tôi”,
Xác định từ gốc (Word Stemming) là quá trình xác định dạng cơ bản của một từ Phương pháp này thường được áp dụng cho các ngôn ngữ hòa kết, chẳng hạn như tiếng Anh, trong đó từ "has" sẽ được chuyển thành "have".
Ghép nối từ, hay còn gọi là phân đoạn từ, là quá trình kết hợp các token lại với nhau để tạo thành một từ có nghĩa Phương pháp này chủ yếu áp dụng cho các ngôn ngữ thuộc nhóm ngôn ngữ đơn lập, chẳng hạn như tiếng Việt.
“những con người” -> “Những con_người”
3.2.1.4 Hướng tiếp cận sử dụng mô hình đơn ngữ đa dụng
Mô hình ngôn ngữ đa dụng hiện nay, chủ yếu dựa trên nền tảng Transformer, đang là xu hướng hiện đại nhất trong lĩnh vực học máy Transformer, với sự cải tiến so với mạng nơ-ron hồi quy (RNN), nổi bật nhờ vào khái niệm self-attention, cho phép mô hình tập trung vào các thành phần quan trọng trong tập dữ liệu đầu vào mà vẫn duy trì độ chính xác cao Hiện tại, có nhiều mô hình đã được huấn luyện sẵn dựa trên Transformer, và chúng có thể được phân loại thành hai nhóm chính.
Nhóm mô hình chỉ có encoder có khả năng tiếp nhận dữ liệu đầu vào và tạo ra một tập hợp các tham số gọi là đặc trưng Các lập trình viên có thể sử dụng các phương pháp như Grid Search hoặc Random Search để lựa chọn những tham số phù hợp, từ đó xác định tập giá trị đặc trưng tối ưu cho tác vụ cụ thể mà họ đang thực hiện.
Nhóm mô hình có encoder và decoder không chỉ chuyển đổi từ ngữ thành các giá trị đặc trưng mà còn có khả năng tái tạo từ ngữ từ các giá trị đặc trưng đó Điều này cho phép tạo ra mô hình có khả năng phục hồi xâu ký tự từ các xâu ký tự đầu vào.
Các mô hình huấn luyện sẵn theo kiến trúc Transformer bao gồm XLNet, T5, MT5, nhưng nổi bật nhất là BERT và GPT-n BERT (Bi-Directional Encoder Representation from Transformer) là một mô hình encoder được sử dụng rộng rãi cho nhiều ngôn ngữ, với các phiên bản như PhoBERT cho tiếng Việt Trong khi đó, GPT-n là mô hình decoder chuyên biệt cho tiếng Anh, được huấn luyện trên tập dữ liệu lớn để tạo ra văn bản mới dựa trên văn bản trước đó Phiên bản mới nhất, GPT-3, đã đạt được những tiến bộ đáng kể trong việc mô phỏng phong cách nói và viết của con người.
Cấu trúc hệ thống Chatbot
Để cải thiện khả năng phản hồi của Chatbot, việc xây dựng một cơ sở kiến thức phong phú là rất quan trọng Các ví dụ đã chỉ ra rằng một số trường hợp có thể khiến Chatbot đưa ra phản hồi không thuyết phục Do đó, việc áp dụng các phương pháp đa dạng để mở rộng kiến thức cho Chatbot sẽ giúp nó đáp ứng tốt hơn với các yêu cầu từ người dùng.
• Nhà phát triển tự soạn ra các từ khóa và phản hồi tương ứng dựa theo mục đích của Chatbot
• Gợi ý người dùng các đầu vào có thể sử dụng để duy trì cuộc thảo luận giữa người dùng và Chatbot
Khi hệ thống gặp chuỗi đầu vào không khớp với từ khóa nào, nó sẽ đưa ra phản hồi chung và lưu trữ đầu vào đó vào cơ sở dữ liệu các đầu vào không thể xử lý Nhà phát triển có thể quyết định thêm đầu vào này thành từ khóa với phản hồi tương ứng hoặc chọn bỏ qua nó.
Máy có khả năng tự học có thể cải thiện hiệu suất của chatbot Chẳng hạn, khi không tìm thấy từ khóa phù hợp, chatbot sẽ hỏi người dùng: “Tôi phải trả lời thế nào?” Phản hồi của người dùng sẽ được lưu lại và sử dụng khi gặp lại từ khóa đó Tuy nhiên, cần thận trọng khi áp dụng phương pháp này, chỉ nên sử dụng trong môi trường kiểm soát để tránh tác động tiêu cực.
Mặc dù Chatbot ngày càng thông minh và hiệu quả, vẫn có những tình huống mà sự can thiệp của con người là cần thiết Do đó, việc tạo điều kiện cho một người thực có thể điều khiển Chatbot khi cần thiết là rất quan trọng.
Tóm lại, đối với một Chatbot hoàn chỉnh, cấu trúc của nó có thể được biểu diễn như sau
Hình 3.9 Cấu trúc đầy đủ của một Chatbot
Các thành phần được mô tả trong bảng dưới đây
Bảng 3.1 Bảng danh sách các thành phần trong một Chatbot
STT Tên thành phần Mô tả Mức độ cần thiết
Platform – Nền tảng nhắn tin Đây chính là giao diện giữa việc người dùng giao tiếp với Chatbot
Cần thiết, người dùng cần phải biết họ đang nhắn gì và nhận về phản hồi gì từ Chatbot
Xử lý ngôn ngữ tự nhiên là quá trình tách biệt và phân tích các từ trong câu, nhằm áp dụng nhiều phương pháp khác nhau để xác định các đặc tính như ý định và tham số của câu.
Cần thiết, dù đơn giản hay phức tạp, Chatbot phải có khả năng này để có thể xác định được yêu cầu của người dùng
Logic của Chatbot là thành phần trung tâm, nơi xử lý các đặc tính câu đã được trích xuất từ bộ phận xử lý ngôn ngữ tự nhiên Bộ phận này đảm nhận việc đưa ra phản hồi chính xác và nhanh chóng cho người dùng, giúp cải thiện trải nghiệm tương tác.
Cần thiết, đây là thành phần quan trọng nhất của Chatbot, phải có nó Chatbot mới có thể đưa ra được phản hồi cho người dùng
Máy học là thành phần quan trọng giúp Chatbot học hỏi từ các cuộc hội thoại với người dùng, đặc biệt trong những trường hợp không có từ khóa nào được xác định.
Không cần thiết, việc cải thiện quy trình biên soạn phản hồi hay xử lý đầu vào có thể được thực hiện bởi nhà phát triển
5 Hành động - Đây là yếu tố quan trọng giúp Chatbot thực hiện các nhiệm vụ ngoài việc phản hồi người dùng Các hành động này có thể bao gồm việc thu thập thông tin, thực hiện các chức năng bổ sung và nhiều hoạt động khác.
Không cần thiết, tuy nhiên có thể sử dụng để cá nhân hóa trải nghiệm sử dụng Chatbot
Nguồn thông tin là thành phần quan trọng giúp Chatbot thu thập dữ liệu từ bên ngoài hệ thống, từ đó tạo ra phản hồi chính xác và phù hợp.
Không cần thiết, tuy nhiên thành phần này trở nên cần thiết nếu ta muốn xây dựng một Chatbot cung cấp thông tin thay vì
Thông tin có thể được thu thập từ nhiều nguồn khác nhau, bao gồm cơ sở dữ liệu bên ngoài, API từ các đối tác, hoặc trực tiếp từ con người, tạo nên một Chatbot giao tiếp hiệu quả và bình thường.
Ứng dụng của Chatbot
Phép thử Turing, được phát triển bởi Alan Turing vào năm 1950, là một bài kiểm tra trí tuệ máy tính Trong bài kiểm tra này, một người làm giám khảo sẽ đánh giá xem máy tính hay con người nào có khả năng tương tác giống con người hơn Giám khảo sẽ đặt câu hỏi trong một khoảng thời gian nhất định, và nếu máy tính có cách trả lời gần gũi với con người hơn, nó sẽ được coi là vượt qua phép thử Turing; ngược lại, nếu không, máy tính sẽ bị đánh giá là thất bại.
Giải thưởng Loebner đã tạo ra một thách thức lớn cho các hệ thống Chatbot, yêu cầu chúng phải đánh lừa được đa số giám khảo trong ít nhất 5 phút để giành giải thưởng 100.000 Đô la Mỹ Tuy nhiên, cho đến nay, vẫn chưa có hệ thống nào đạt được thành công này.
Phép thử Turing đã nhận nhiều chỉ trích từ các nhà nghiên cứu trí tuệ nhân tạo do những hạn chế của nó Alan Turing không nhận ra rằng có những hành vi “không thông minh” từ con người và những hành vi “thông minh” có thể không xuất phát từ con người Hơn nữa, phép thử này hoàn toàn phụ thuộc vào phán xét của giám khảo, một con người có thể bị ảnh hưởng và đưa ra quyết định không chính xác Nhiều ý kiến cho rằng việc “bắt chước con người” để vượt qua phép thử Turing là lãng phí tiềm năng của trí tuệ nhân tạo và không nên trở thành trọng tâm nghiên cứu trong lĩnh vực này.
3.4.2 Ứng dụng của Chatbot trong thực tế
Trong thực tế tuy không thể hoàn toàn thay thế được con người, Chatbot đã được ứng dụng trong rất nhiều ứng dụng, điển hình như:
• Nền tảng nội bộ của doanh nghiệp:
Mặc dù Chatbot ngày càng trở nên hoàn thiện và phổ biến, nhưng một số tác nhân đã lợi dụng công nghệ này cho những mục đích xấu, như spam, huấn luyện sai cách và phát tán tin giả Điều này đặt ra những thách thức cần giải quyết để đảm bảo sự phát triển bền vững của Chatbot trong cuộc sống.
Sử dụng thư viện NLP.js vào tác vụ nhận diện ý niệm
3.5.1 Giới thiệu thư viện NLP.js
NLP.js, trước đây được biết đến với tên gọi node-nlp, là một bộ công cụ xử lý ngôn ngữ tự nhiên dành cho Node.js, được phát triển bởi Axa Group từ năm 2016 Phiên bản hiện tại, 4.14.2, cung cấp nhiều tính năng hữu ích cho người dùng.
• Đoán ngôn ngữ của một đoạn văn bản
• So sánh Levenshtein nhanh giữa 2 xâu ký tự
• Tìm kiếm xâu con gần với xâu đầu vào nhất sử dụng khoảng cách Levenshtein
• Hỗ trợ xác định từ gốc và tách từ cho một số ngôn ngữ
• Phân tích tính trạng (Sentiment Analysis) cho đoạn văn bản (với hỗ trợ cho phủ định)
• Quản lý thực thể đặt tên với nhiều ngôn ngữ khác nhau
• Phân tích được đoạn văn bản thành ý niệm
• Lớp quản lý NLP: hỗ trợ các thực thể NLP.js trên hiều ngôn ngữ, với ý niệm, thực thể đặt tên cũng như tính trạng
• 40 ngôn ngữ được hỗ trợ mặc định (104 ngôn ngữ được hỗ trợ thông qua việc tích hợp với BERT)
• Chấp nhận bất kỳ ngôn ngữ nào có thể thực hiện tách từ, kể cả ngôn ngữ giả tưởng
3.5.2 Các khái niệm sử dụng trong NLP.js
Entity: Entity là tất cả mọi thứ trong mô hình xử lý ngôn ngữ của NLP.js Cấu tạo của một entity cơ bản như sau
Bảng 3.2 Bảng danh sách thuộc tính trong một Entity
STT Tên thuộc tính Mô tả Ví dụ
1 name Tên của entity temparature
2 score Độ tự tin của chương trình về entity này phạm vi từ 0-1
Ý định (Intent) là một loại thực thể đặc biệt dùng để xác định ý định chung của toàn bộ câu Ví dụ, khi phân tích ngữ nghĩa, việc nhận diện ý định giúp hiểu rõ hơn về mục đích giao tiếp trong văn bản.
“Thời tiết ở Hà Nội như thế nào?”
Ý định trong trường hợp này được gọi là "get_weather", phản ánh mong muốn của người dùng tìm hiểu về thời tiết, cụ thể tại Hà Nội Cấu trúc của một intent bao gồm các thành phần cần thiết để xác định và xử lý yêu cầu của người dùng.
Bảng 3.3 Bảng danh sách thuộc tính trong một Intent
STT Tên thuộc tính Mô tả Ví dụ
1 name Tên của entity get_weather
2 confidence Độ tự tin của chương trình về entity này phạm vi từ 0-1
Wit.ai không chỉ cho phép nhà phát triển tự tạo các intent mà còn cung cấp một số intent có sẵn, giúp dễ dàng áp dụng vào chatbot mà không cần quá trình huấn luyện phức tạp Dưới đây là bảng mô tả các intent có sẵn tính đến ngày 1/5/2021.
Entity parameter: Là một loại entity để xác định tham số trong một câu đã cho Ta trở lại với ví dụ ta đã lấy intent
Thời tiết ở Hà Nội thường thay đổi theo mùa, với mùa hè nóng ẩm và mùa đông lạnh khô Để biết thông tin chính xác về thời tiết tại Hà Nội, người dùng có thể tra cứu trực tuyến hoặc sử dụng ứng dụng dự báo thời tiết Việc nắm rõ tình hình thời tiết sẽ giúp bạn lên kế hoạch cho các hoạt động ngoài trời một cách hiệu quả.
“Thời tiết ở Đồng Hới ngày mai như thế nào?”
Đồng Hới là một địa điểm quan trọng, trong khi "ngày mai" là chuỗi con cần phân giải Giả sử hôm nay là 15/4/2021, mục tiêu là chuyển đổi "ngày mai" thành giá trị "16/4/2021" NLP.js cung cấp công cụ cho nhà phát triển để thiết lập và huấn luyện Chatbot nhận diện các tham số này Cấu trúc cơ bản của một entity parameter có thể bao gồm nhiều thuộc tính khác nhau tùy theo loại parameter.
Bảng 3.4 Bảng danh sách thuộc tính của một Entity Parameter
STT Tên thuộc tính Mô tả Ví dụ
1 id Tên định danh của một entity movie_0
2 name Tên của entity movie
3 role Vai trò của parameter trong câu seen
4 start Vị trị bắt đầu của chuỗi con đang trích xuất
5 end Vị trí kết thúc của chuỗi con đang trích xuất
6 body Chuỗi con đang được trích xuất tomorrow
7 accuracy Độ tự tin của chương trình về entity này phạm vi từ 0-1
8 entities Danh sách entity trong entity đó Danh sách entity
9 value Giá trị trích xuất được từ parameter
10 type Loại giá trị trích xuất được từ parameter interval
NLP.js hỗ trợ 3 loại Entity chính
NLP.js stores entities as a dictionary along with their corresponding values When an input string contains a substring that closely matches a word in the enum using Edit Distance, NLP.js returns the position of that word along with its value.
NLP.js supports the use of Regular Expressions to identify entities defined by specific syntax patterns This feature allows for enhanced entity recognition, enabling more precise data extraction from text By leveraging Regular Expressions, users can effectively capture and analyze structured information within their natural language processing tasks.
NLP.js hỗ trợ việc sử dụng các từ ngữ làm Delimiter để xác định Entity, giúp loại bỏ delimiter và hiển thị giá trị phù hợp với quy tắc của trim entity Hiện tại, NLP.js đang cung cấp các quy tắc hỗ trợ cho tính năng này.
Giữa hai xâu và , có các vị trí như sau: Sau xâu , sau xâu đầu tiên xuất hiện trong câu, và sau xâu cuối cùng xuất hiện trong câu Ngoài ra, còn có vị trí trước xâu , trước xâu đầu tiên và trước xâu cuối cùng trong câu.
NLP.js không chỉ hỗ trợ người dùng trong việc cài đặt các Entity mà còn tích hợp sẵn một số Entity built-in được hỗ trợ bởi Duckling Dưới đây là danh sách một số Entity built-in mà NLP.js cung cấp.
Bảng 3.5 Bảng các Entity được hỗ trợ bởi Duckling
STT Tên thuộc tính Mô tả Ví dụ
1 Email Xác định một xâu con là Email
My email is something@somehost.com please write me
Xác định một xâu con là số điện thoại (hỗ trợ mã vùng)
So here is my number +1 541-
3 URL Xác định một xâu con là một đường dẫn
The url is https://something.com
4 Number Xác định một xâu con là một số (hỗ trợ số biểu diễn bằng chữ nhưng chỉ với một số ngôn ngữ)
This is 12 This is twelve
5 Ordinal Xác định một xâu con là một số thứ tự (chỉ với một số ngôn ngữ)
6 Dimenstion Xác định một xâu con là một thước đo trong không gian (độ dài, diện tích, thời tiết, …)
7 Quantity Xác định một xâu con là định lượng của một vật thể three cups of sugar
Xác định một xâu con là một số tiền
9 Date Xác định một xâu con là một điểm thời gian
3.5.3 Thực hiện tác vụ nhận diện ý niệm
Sử dụng thư viện NLP.js, chúng ta có thể dễ dàng phát triển một mô hình mạng nơ ron truyền thẳng cho nhiệm vụ nhận diện ý niệm (Intent Classification) Tuy nhiên, cần chú ý đến một số vấn đề quan trọng trong quá trình triển khai.
NLP.js hiện không hỗ trợ tiếng Việt trong danh sách ngôn ngữ chính thức của thư viện Do đó, chúng ta cần thực hiện các bước tiền xử lý trước khi tiến hành huấn luyện và áp dụng mô hình.
Việc phân chia các ý niệm nhận diện thành các hạng mục (Domain) sẽ giúp tối ưu hóa quá trình quản lý dữ liệu huấn luyện và xác thực.
Chúng ta sẽ tiếp tục xử lý đoạn Chat bằng các công cụ khác nếu mô hình NLP.js không đạt độ tin cậy cao Để thể hiện sự không chắc chắn về ý niệm của đoạn Chat vừa phân tích, chúng ta cần sử dụng ý niệm None được cung cấp trong thư viện NLP.js.
Tinh chỉnh mô hình PhoBERT vào tác vụ phân tích cảm xúc
3.6.1 Giới thiệu về mô hình PhoBERT
Mô hình ngôn ngữ huấn luyện từ trước, đặc biệt là BERT, đã đạt được nhiều tiến bộ trong xử lý ngôn ngữ tự nhiên Tuy nhiên, khi áp dụng BERT cho tiếng Việt, có hai trở ngại lớn cần được khắc phục.
Bộ dữ liệu tiếng Việt phổ biến nhất hiện nay là từ Wikipedia tiếng Việt, tuy nhiên, nó có một số hạn chế Đầu tiên, kích thước của bộ dữ liệu này khá khiêm tốn, chỉ khoảng 1 GB, điều này ảnh hưởng đến độ phong phú của thông tin Thứ hai, phong cách viết trong các bài trên Wikipedia không phản ánh chính xác cách người Việt sử dụng ngôn ngữ trong giao tiếp hàng ngày.
Hầu hết các mô hình huấn luyện trước đây không chú trọng đến đặc điểm ngôn ngữ đơn lập của tiếng Việt Ví dụ, từ "worker" trong tiếng Anh có nghĩa là "công nhân" trong tiếng Việt, được cấu thành từ hai âm tiết "công" và "nhân" Tuy nhiên, các mô hình hiện tại mã hóa hai âm tiết này thành hai token riêng biệt thay vì một token duy nhất, dẫn đến việc giảm hiệu quả trong quá trình huấn luyện.
Nhóm nghiên cứu tại VinAI đã nhận diện vấn đề và tiến hành huấn luyện mô hình máy học đơn ngôn ngữ quy mô lớn dựa trên mô hình BERT đầu tiên Mô hình này được phát triển từ BERT-large và được đánh giá qua bốn tác vụ xử lý ngôn ngữ tự nhiên: phân tích từ loại, phân tích phụ thuộc từ vựng, nhận diện thực thể đặt tên và suy luận ngôn ngữ Nhóm nghiên cứu đã thực hiện các biện pháp cần thiết để giải quyết những vấn đề đã nêu.
Nhóm nghiên cứu đã sử dụng bộ ngữ liệu từ các bài báo tiếng Việt, loại bỏ các bài lặp để thu thập 20 GB dữ liệu Bộ ngữ liệu này được kết hợp với dữ liệu từ Wikipedia tiếng Việt nhằm huấn luyện mô hình hiệu quả hơn.
Nhóm nghiên cứu đã áp dụng công cụ tách từ VNCoreNLP để phân tách câu văn thành từng từ, thay vì tách theo âm tiết Với độ chính xác lên đến 97%, công cụ này không chỉ nâng cao chất lượng ngữ liệu mà còn giúp tiết kiệm nguồn nhân lực đáng kể cho việc thực hiện tác vụ này.
Mô hình PhoBERT đã đạt được kết quả tối tân nhất trong 4 tác vụ đánh giá, bao gồm phân tích từ loại, phân tích phụ thuộc từ vựng, nhận diện thực thể đặt tên và suy luận ngôn ngữ Vì vậy, nhóm nghiên cứu quyết định tinh chỉnh mô hình này để áp dụng cho tác vụ phân tích cảm xúc.
3.6.2 Thực hiện tác vụ phân tích cảm xúc Để sử dụng mô hình PhoBERT vào tác vụ phân tích cảm xúc Nhóm phát triển phải giải quyết một số vấn đề sau:
Để đạt được kết quả tốt trong phân loại cảm xúc của người viết, cần thu thập một nguồn ngữ liệu đã được dán nhãn với quy mô tương đối lớn, khoảng hàng chục nghìn câu Điều này giúp tránh việc phải sử dụng các phương pháp cải thiện dữ liệu như Data Augmentation.
• Tiền xử lý dữ liệu để tận dụng hiệu quả nhất tập ngữ liệu trong quá trình tinh chỉnh mô hình
Để thực hiện phân tích cảm xúc hiệu quả, cần xác định số lượng nhãn phù hợp cho tập ngữ liệu và số nút đầu ra của mô hình đã được tinh chỉnh, nhằm đảm bảo chính xác trong việc dự đoán nhãn của mô hình.
• Lưu lại mô hình đã tinh chỉnh và sử dụng mô hình này để thực hiện tác vụ phân tích cảm xúc trong hệ thống Chatbot
Tinh chỉnh mô hình BARTpho vào tác vụ cấu tạo ngôn ngữ tự nhiên
3.7.1 Giới thiệu về mô hình BARTpho
Mô hình BERT và PhoBERT đã đạt kết quả tốt trong các tác vụ thấu hiểu ngôn ngữ tự nhiên (NLU) cho tiếng Việt, nhưng gặp khó khăn khi áp dụng vào các tác vụ tạo ngôn ngữ tự nhiên (NLG) do không có phần giải mã Giải pháp là sử dụng mô hình seq2seq, nhưng hiện tại chỉ có kết quả khả quan cho tiếng Anh Nhóm nghiên cứu tại VinAI đã sử dụng bộ dữ liệu từ quá trình huấn luyện PhoBERT và công cụ tách từ VNCoreNLP để huấn luyện mô hình seq2seq BART, tạo ra hai mô hình BARTpho-word và BARTpho-syllable Kết quả cho thấy mô hình BARTpho-word vượt trội hơn trong tác vụ tóm tắt văn bản so với mBART, đạt thành tích tối tân nhất, đồng thời khẳng định tầm quan trọng của việc tách từ trong quá trình tiền xử lý dữ liệu.
Mô hình BARTpho được chọn để tinh chỉnh cho tác vụ cấu tạo ngôn ngữ tự nhiên của Chatbot nhờ khả năng đạt được kết quả tối ưu.
3.7.2 Thực hiện tác vụ cấu tạo ngôn ngữ tự nhiên Để tinh chỉnh mô hình BARTpho-word cho tác vụ cấu tạo ngôn ngữ tự nhiên, nhóm cần phải giải quyết các vấn đề sau:
BARTpho là một mô hình quy mô lớn với 420 triệu tham số, do đó, nhóm nghiên cứu cần tìm kiếm phần cứng phù hợp để tinh chỉnh mô hình trong giới hạn thời gian và ngân sách của khóa luận.
Nhóm cần xác định cấu trúc dữ liệu huấn luyện phù hợp cho mô hình tinh chỉnh, nhằm nâng cao hiệu quả trong việc tạo phản hồi cho Chatbot.
• Thu thập nguồn ngữ liệu thỏa mãn cấu trúc dữ liệu nhóm đã xác định ở mức độ đủ để tinh chỉnh mô hình BARTpho
• Tiền xử lý dữ liệu để tận dụng hiệu quả nhất tập ngữ liệu trong quá trình tinh chỉnh mô hình
• Lưu lại mô hình đã tinh chỉnh và sử dụng mô hình này để thực hiện tác vụ cấu tạo ngôn ngữ tự nhiên trong hệ thống Chatbot
CHATBOT TRỢ LÝ ẢO - YOURCHATSTARTER
Xác định yêu cầu hệ thống
4.1.1 Sơ đồ ca sử dụng
Sơ đồ ca sử dụng cấp cao được thể hiện dưới đây, với các ca sử dụng được tổng quát hóa nhằm phù hợp với quy mô của báo cáo.
Gửi tin nhắn Đăng nhập Đăng ký
Gửi tin nhắn âm thanh
Tra cứu bài viết Xem bài viết
Xem hồ sơ người dùng
Xem lịch sử giao dịch
Chỉnh sửa hồ sơ người dùng
Hệ thống quản lý Push Notification
Truy vấn thông tin thời tiết
Chỉnh sửa nội dung bài viết
Chỉnh sửa thiết lập cá nhân
Đăng ký thông báo mới
Hủy đăng ký thông báo
Truy vấn thông tin kinh tế
Truy vấn thông tin dịch COVID-19
Truy vấn thông tin thường thức
Tra cứu đơn thanh toán
Chỉnh sửa dịch vụ người dùng
Tra cứu thông tin người dùng
Xóa thông tin người dùng
Xem thông tin đơn thanh toán
Chỉnh sủa đơn thanh toán
Truy vấn thông tin bên thứ 3
Truy vấn thông tin trong hệ thống Trợ lý ảo
Nhận tin nhắn âm nhanh
Xem danh sách dịch vụ thông báo
Gửi tin nhắn hình ảnh
Truy vấn thông tin địa lý
Gửi thông báo định kỳ
Gửi tin báo định kỳ
Hình 4.1 Sơ đồ ca sử dụng Bảng 4.1 Bảng mô tả sơ lược các Actor trong sơ đồ ca sử dụng
STT Tên Actor Mô tả Actor
Quản trị viên có quyền chỉnh sửa thông tin người dùng, đăng tải bài viết công cộng và quản lý quyền truy cập thông tin của người dùng.
2 Người dùng Người dùng giao tiếp với hệ thống thông qua chatbot và giao diện hệ thống trên nền tảng Web và ứng dụng di động
Hệ thống chatbot được thiết kế để xử lý các yêu cầu của người dùng bằng ngôn ngữ tự nhiên, giúp cung cấp thông tin một cách nhanh chóng và hiệu quả Chatbot không chỉ đáp ứng nhu cầu của người dùng mà còn cải thiện trải nghiệm tương tác, tạo ra sự thuận tiện trong việc tìm kiếm thông tin.
Hệ thống quản lý Push Notification có vai trò quan trọng trong việc lên lịch gửi thông báo đến người dùng, đồng thời quản lý việc đăng ký và hủy đăng ký nhận thông báo của người dùng.
4.1.2 Đặc tả ca sử dụng
4.1.2.1 Module 1: Hệ thống xác thực người dùng
Người tạo Nguyễn Ngọc Đăng
Tác nhân chính Người dùng Tác nhân phụ Không có
Mô tả Là người dùng, tôi muốn đăng nhập vào hệ thống
Khi người dùng có thông tin tài khoản để đăng nhập, hệ thống sẽ tạo ra một session đăng nhập mới cho họ Điều này xảy ra khi không có điều kiện trước UC và sau UC POST-1, nếu người dùng thực hiện đăng nhập vào hệ thống.
Dòng sự kiện cơ bản
1 Từ màn hình chính, người dùng chọn màn hình đăng nhập
2 Người dùng nhập thông tin đăng nhập vào biểu mẫu đăng nhập (Bao gồm tên đăng nhập và mật khẩu)
3 Người dùng chọn Đăng nhập để xác nhận gửi thông tin đăng nhập cho hệ thống
4 Hệ thống gửi thông báo đăng nhập thành công và điều hướng người dùng trở về màn hình chính
Dòng sự kiện thay thế
1-1.1 Người dùng chưa có tài khoản
1 Nếu người dùng chưa có tài khoản, hệ thống gợi ý người dùng đăng ký
2 Người dùng chọn đăng ký
3 Thực hiện ca sử dụng Đăng kí (Tham khảo UC1-2)
Dòng sự kiện ngoại lệ
1-1.0E1 Thông tin đăng nhập bị thiếu
1 Hệ thống thông báo trường nhập liệu bị thiếu 2a Nếu người dùng chọn chỉnh sửa, trở lại bước 2 của 1-1.0 2b Nếu không, kết thúc ca sử dụng
1-1.0E2 Thông tin đăng nhập không hợp lệ
1 Hệ thống thông báo thông tin đăng nhập không hợp lệ 2a Nếu người dùng chọn chỉnh sửa, trở lại bước 2 của 1-1.0 2b Nếu không, kết thúc ca sử dụng Độ ưu tiên Cao
Tần suất sử dụng Ít nhất 10 lần trong 1 ngày
Thông tin bổ sung Không có
Người tạo Nguyễn Ngọc Đăng
Tác nhân chính Người dùng Tác nhân phụ Không có
Mô tả Là người dùng, tôi muốn đăng ký một tài khoản mới cho hệ thống
Khi người dùng chưa có tài khoản hoặc muốn đăng ký một tài khoản mới, họ cần ở màn hình đăng ký Sau khi hoàn tất quy trình, hệ thống sẽ tạo ra một tài khoản mới cho người dùng.
Dòng sự kiện cơ bản
1 Từ màn hình đăng nhập, người dùng chọn màn hình đăng ký
2 Người dùng nhập thông tin đăng ký vào biểu mẫu đăng nhập (Bao gồm tên đăng nhập, mật khẩu, xác nhận và email)
3 Người dùng chọn Đăng ký để xác nhận gửi thông tin đăng ký cho hệ thống
4 Hệ thống gửi thông báo đăng ký thành công và điều hướng người dùng trở về màn hình đăng nhập
Dòng sự kiện thay thế
Dòng sự kiện ngoại lệ
1-2.0E1 Thông tin đăng nhập bị thiếu
1 Hệ thống thông báo trường nhập liệu bị thiếu 2a Nếu người dùng chọn chỉnh sửa, trở lại bước 2 của 1-1.0 2b Nếu không, kết thúc ca sử dụng
1-2.0E2 Tên tài khoản trùng với tài khoản có sẵn
1 Hệ thống thông báo tên tài khoản trùng đăng ký với tài khoản có sẵn 2a Nếu người dùng chọn chỉnh sửa, trở lại bước 2 của 1-2.0 2b Nếu không, kết thúc ca sử dụng
1-2.0E2 Mật khẩu xác nhận không trùng với mật khẩu đã nhập
1 Hệ thống thông báo mật khẩu xác nhận không trùng với mật khẩu đã nhập
2a Nếu người dùng chọn chỉnh sửa, trở lại bước 2 của 1-2.0 2b Nếu không, kết thúc ca sử dụng Độ ưu tiên Cao
Tần suất sử dụng Tùy người dùng
Thông tin bổ sung Không có
Người tạo Nguyễn Ngọc Đăng
Tác nhân chính Người dùng Tác nhân phụ Không có
Mô tả Là người dùng, tôi muốn đổi mật khẩu tài khoản
Xảy ra khi Người dùng có nhu cầu đổi tài khoản Điều kiện trước UC PRE-1: Người dùng đã đăng nhập vào hệ thống
PRE-2: Người dùng đã định hướng đến màn hình chỉnh sửa thông tin tài khoản Điều kiện sau UC POST-1: Hệ thống đổi mật khẩu cho người dùng
Dòng sự kiện cơ bản
1 Từ màn hình sửa đổi thông tin người dùng Người dùng chọn mục bảo mật
2 Người dùng nhập thông tin mật khẩu vào biểu mẫu đổi mật khẩu (Bao gồm mật khẩu cũ, mật khẩu mới, xác nhận mật khẩu mới)
3 Người dùng chọn Lưu mật khẩu để xác nhận gửi thông tin đăng đổi mật khẩu cho hệ thống
4 Hệ thống gửi thông báo đổi mật khẩu thành công và điều hướng người dùng trở về màn hình đăng nhập
Dòng sự kiện thay thế
Dòng sự kiện ngoại lệ
1-3.0E1 Thông tin đổi mật khẩu bị thiếu
1 Hệ thống thông báo trường nhập liệu bị thiếu 2a Nếu người dùng chọn chỉnh sửa, trở lại bước 2 của 1-3.0 2b Nếu không, kết thúc ca sử dụng
1 Hệ thống thông báo mật khẩu cũ nhập sai 2a Nếu người dùng chọn chỉnh sửa, trở lại bước 2 của 1-3.0 2b Nếu không, kết thúc ca sử dụng
1-3.0E2 Mật khẩu xác nhận không trùng với mật khẩu đã nhập
1 Hệ thống thông báo mật khẩu xác nhận không trùng với mật khẩu đã nhập
2a Nếu người dùng chọn chỉnh sửa, trở lại bước 2 của 1-3.0 2b Nếu không, kết thúc ca sử dụng Độ ưu tiên Cao
Tần suất sử dụng Tùy người dùng
Thông tin bổ sung Không có
Người tạo Nguyễn Ngọc Đăng
Tác nhân chính Người dùng Tác nhân phụ Chatbot
Là người dùng, tôi muốn gửi tin nhắn cho Chatbot để nhận được câu trả lời Điều này xảy ra khi người dùng có nhu cầu hỏi Chatbot, và điều kiện tiên quyết là người dùng phải đang ở màn hình trò chuyện với Chatbot Sau khi gửi tin nhắn, Chatbot sẽ nhận được thông tin từ người dùng.
Dòng sự kiện cơ bản
1 Người dùng ở màn hình trò chuyện với Chatbot
2a Nếu người dùng chọn nhập tin nhắn vào ô nhập liệu, chuyển đây là ca sử dụng gửi tin nhắn chữ (Tham khảo UC2-2)
2b Nếu người sử dụng chọn nút thu âm, đây là ca sử dụng gửi tin nhắn âm thanh (Tham khảo UC2-3)
3 Sau khi có kết quả là tin nhắn người dùng muốn gửi Gửi tin nhắn đi tới hệ thống và đợi phản hồi của Chatbot
4 Hiển thị phản hồi của Chatbot ra giao diện
Dòng sự kiện thay thế
1 Sau khi nhận được phản hồi từ Chatbot, người dùng có thể gửi tin nhắn khác
Dòng sự kiện ngoại lệ
2-1.0E1 Chatbot không hiểu được tin nhắn của người dùng
1 Hệ thống trả về phản hồi Chatbot không thể hiểu được yêu cầu người dùng
2 Hiển thị phản hồi đó ra giao diện, kết thúc use case 2-1.0E2 Chatbot không chắc ý định tin nhắn của người dùng
1 Hệ thống trả về phản hồi Chatbot không thể hiểu rõ được yêu cầu người dùng
2 Hiển thị phản hồi đó ra giao diện, kết thúc use case Độ ưu tiên Cao
Tần suất sử dụng Tùy người dùng
Thông tin bổ sung Không có
UC2-2 Gửi tin nhắn chữ
Người tạo Nguyễn Ngọc Đăng
Tác nhân chính Người dùng Tác nhân phụ Không có
Là người dùng, tôi muốn gửi tin nhắn văn bản để Chatbot có thể cung cấp câu trả lời Tình huống này xảy ra khi người dùng có nhu cầu đặt câu hỏi cho Chatbot thông qua hình thức văn bản Điều kiện tiên quyết là người dùng phải đang ở màn hình trò chuyện với Chatbot.
PRE-2: Người dùng đang nhập tin nhắn vào ô nhập liệu
86 Điều kiện sau UC POST-1: Chatbot gửi về phản hồi và được hiển thị trên cửa số chat của người dùng
Dòng sự kiện cơ bản
1 Người dùng nhập tin nhắn vào ô nhập liệu
2 Người dùng thực hiện gửi tin nhắn, chuyển đến bước 3 UC2- 1.0
Dòng sự kiện thay thế
Dòng sự kiện ngoại lệ
1 Hệ thống thông báo cho người dùng rằng tin nhắn của họ quá ngắn
2a Nếu người dùng chọn chỉnh sửa, trở lại bước 1 của 2-2.0 2b Nếu không, kết thúc ca sử dụng
1 Hệ thống thông báo cho người dùng rằng tin nhắn của họ quá dài
2a Nếu người dùng chọn chỉnh sửa, trở lại bước 1 của 2-2.0 2b Nếu không, kết thúc ca sử dụng Độ ưu tiên Cao
Tần suất sử dụng Ít nhất 10 lần trong 1 ngày
Thông tin bổ sung Không có
UC2-3 Gửi tin nhắn âm thanh
Người tạo Nguyễn Ngọc Đăng
Tác nhân chính Người dùng Tác nhân phụ Không có
Là người dùng, tôi muốn gửi tin nhắn âm thanh để Chatbot có thể phản hồi Tình huống này xảy ra khi người dùng muốn đặt câu hỏi cho Chatbot thông qua âm thanh, với điều kiện là người dùng đang ở màn hình trò chuyện với Chatbot.
Người dùng có thể thu âm tại ô nhập liệu sau khi điều kiện UC được đáp ứng Sau đó, chatbot sẽ gửi phản hồi và hiển thị thông tin đó trên cửa sổ chat của người dùng.
Dòng sự kiện cơ bản
2-3.0 Gửi tin nhắn âm thanh
1 Người dùng chọn thu âm tại ô nhập liệu, hộp thoại thu âm hiện lên Nếu người dùng chưa cấp quyền truy cập microphone cho hệ thống, chuyển tới UC2-3.1
2 Người dùng bấm bắt đầu để thu âm
3 Người dùng nói vào microphone
4 Người dùng bấm kết thúc để gửi tin nhắn, chuyển đến bước
Dòng sự kiện thay thế
2-3.1 Cấp quyền sử dụng microphone
1 Nếu người dùng chưa cho phép hệ thống sử dụng microphone, hiện thị nút cấp quyền cho microphone và vô hiệu hóa các nút còn lại
2 Khi người dùng chọn cấp quyền, hộp thoại yêu cầu truy cập của trình duyệt sẽ hiện lên
3a Nếu người dùng đồng ý, chuyển về bước 2 UC2-3.0
Dòng sự kiện ngoại lệ
1 Hệ thống thông báo cho người dùng rằng tin nhắn của họ quá ngắn
2a Nếu người dùng muốn gửi tin khác, trở lại bước 1 của 2-3.0 2b Nếu không, kết thúc ca sử dụng
1 Hệ thống thông báo cho người dùng rằng tin nhắn của họ quá dài
2a Nếu người dùng muốn gửi tin khác, trở lại bước 1 của 2-3.0 2b Nếu không, kết thúc ca sử dụng Độ ưu tiên Trung bình
Tần suất sử dụng Tùy người dùng, nhìn chung thấp hơn bằng văn bản
Thông tin bổ sung Không có
Người tạo Nguyễn Ngọc Đăng
Tác nhân chính Người dùng Tác nhân phụ Chatbot
Mô tả Là người dùng, tôi muốn nhận phải hồi từ Chatbot
Khi người dùng muốn nhận phản hồi từ Chatbot, điều kiện tiên quyết là Chatbot phải nhận được tin nhắn của người dùng Sau khi quá trình này hoàn tất, người dùng sẽ nhận được tin nhắn phản hồi từ Chatbot.
POST-2: Chatbot lưu lại ngữ cảnh của cuộc hội thoại
Dòng sự kiện cơ bản
1 Sau khi gửi tin nhắn, người dùng đợi phản hồi của Chatbot
2 Chatbot trả về phản hồi cho người dùng
3 Phản hồi của Chatbot được hiển thị trên giao diện
Dòng sự kiện thay thế
2-4.1 Yêu cầu thêm thông tin
1 Chatbot trả về phản hồi yêu cầu thêm thông tin từ người dùng Đồng thời ghi nhận những thông tin đang còn thiếu
Dòng sự kiện ngoại lệ
2-4.0E1 Chatbot không hiểu được tin nhắn của người dùng
1 Hệ thống trả về phản hồi Chatbot không thể hiểu được yêu cầu người dùng
2 Hiển thị phản hồi đó ra giao diện, kết thúc use case
2-4.0E2 Chatbot không chắc ý định tin nhắn của người dùng
1 Hệ thống trả về phản hồi Chatbot không thể hiểu rõ được yêu cầu người dùng
2 Hiển thị phản hồi đó ra giao diện, kết thúc use case Độ ưu tiên Cao
Tần suất sử dụng Tùy người dùng
Thông tin bổ sung Không có
UC2-5 Nhận tin nhắn âm thanh
Người tạo Nguyễn Ngọc Đăng
Tác nhân chính Người dùng Tác nhân phụ Chatbot
Là người dùng, tôi mong muốn nhận phản hồi âm thanh từ Chatbot khi có nội dung tin nhắn cần gửi Điều kiện tiên quyết là Chatbot đã sẵn sàng với thông điệp cần truyền đạt.
PRE-2: Trình duyệt người dùng hỗ trợ SpeechSynthesis API
Người dùng có thể cho phép tin nhắn tự động phát âm thông qua các thiết lập cá nhân Điều kiện này được áp dụng sau khi thực hiện UC POST-1, nơi âm thanh sẽ được phát ra dựa trên nội dung của tin nhắn.
Dòng sự kiện cơ bản
2-5.0 Nhận tin nhắn âm thanh
1 Chatbot trả về phản hồi bằng chữ
2 Trình duyệt phát âm dựa vào nội dung phản hồi của Chatbot
3 Kết thúc ca sử dụng
Dòng sự kiện thay thế
2-5.1 Người dùng muốn hệ thống đọc một tin nhắn
1 Hệ thống trả về phản hồi chữ kèm với một nút phát âm
2 Người dùng bấm vào nút phát âm
3 Trình duyệt phát âm dựa vào nội dung phản hồi của Chatbot
4 Trở về bước 1 UC2-1.0 2-5.2 Người dùng muốn dừng việc đọc
1 Khi trình duyệt đang phát âm Người dùng bấm phím Esc
2 Hệ thống ngừng phát âm nội dung đang hiển thị
3 Kết thúc ca sử dụng
Dòng sự kiện ngoại lệ
2-4.0E1 Trình duyệt không hỗ trợ phát âm thanh từ nội dung
1 Hệ thống trả về phản hồi chữ, nhưng nút phát âm sẽ được vô hiệu hóa
2 Khi di chuột lên trên nút đó, thông báo hiển thị rằng trình duyệt không hỗ trợ SpeechSynthesis API
3 Hiển thị phản hồi đó ra giao diện, kết thúc use case Độ ưu tiên Cao
Tần suất sử dụng Tùy người dùng
Thông tin bổ sung Không có
4.1.2.3 Module 3: Hệ thống dịch vụ người dùng
Người tạo Nguyễn Ngọc Đăng
Tác nhân chính Người dùng Tác nhân phụ Không có
Thiết kế kiến trúc hệ thống
Hình 4.2 Sơ đồ kiến trúc hệ thống
Hệ thống được chia thành mô hình 3 lớp với một số chỉnh sửa, được thể hiện qua các miêu tả dưới đây
Tầng Presentation Layer bao gồm khung trò chuyện và giao diện người dùng, đóng vai trò quan trọng trong việc tương tác giữa người dùng và hệ thống Nó không chỉ kết nối với máy chủ để thực hiện các chức năng chính mà còn giao tiếp với các Web API được tích hợp vào trình duyệt, nhằm nâng cao trải nghiệm người dùng.
Tầng Business Logic bao gồm máy chủ hệ thống, hệ thống Chatbot và hệ thống NLP (Xử lý ngôn ngữ tự nhiên), đóng vai trò quan trọng trong việc xử lý yêu cầu của người dùng và cung cấp phản hồi phù hợp Hệ thống Chatbot được thiết kế độc lập trong tầng này nhằm đảm bảo tính khả dụng và khả năng tái sử dụng của nó.
Tầng Data Access bao gồm Module truy vấn thông tin và phần Data Access của máy chủ hệ thống, đảm nhiệm việc đưa dữ liệu vào và ra khỏi cơ sở dữ liệu Các thành phần trong tầng này đóng vai trò quan trọng, như được mô tả chi tiết trong bảng dưới đây.
Bảng 4.2 Bảng mô tả thành phần chính trong hệ thống
STT Tên thành phần Mô tả
Giao diện trên nền tảng di động là hệ thống giao diện người dùng giúp người dùng dễ dàng thao tác với các chức năng của hệ thống, bao gồm sử dụng Chatbot, đăng ký và đăng nhập.
Giao diện trên nền tảng web là hệ thống tương tác người dùng qua trình duyệt, cho phép người dùng thực hiện các thao tác như sử dụng Chatbot, đăng ký và đăng nhập.
3 Giao diện quản trị viên Đây là hệ thống giao diện quản trị viên trên nền tảng web để quản trị viên có thể
125 thực hiện các tác vụ quản lý hệ thống bao gồm người dùng, dịch vụ, bài viết, v.v…
4 Máy chủ hệ thống Đây là bộ phận xử lý yêu cầu của người dùng, được chạy trên một máy chủ riêng biệt
Chatbot Engine là thành phần quan trọng trong hệ thống Chatbot, chịu trách nhiệm xử lý tin nhắn từ người dùng và gửi phản hồi về máy chủ.
Giao diện thanh toán trực tuyến của BaoKim giúp người dùng thực hiện thanh toán cho đơn hàng dịch vụ một cách dễ dàng và thuận tiện.
Mô-đun truy vấn thông tin là thành phần quan trọng của Chatbot, giúp thu thập các thông tin cần thiết để tạo ra phản hồi cho người dùng Hệ thống có khả năng truy vấn dữ liệu từ cơ sở dữ liệu nội bộ hoặc từ các API bên thứ ba.
8 CSDL hệ thống Nơi lưu trữ dữ liệu liên quan đến hệ thống được sử dụng bởi Module truy vấn thông tin cũng như máy chủ hệ thống
9 API bên thứ 3 Bao gồm các API bên thứ 3 cung cấp cho
Chatbot các thông tin để xây dựng phản hồi cho người dùng ví dụ thông tin về thời tiết, chứng khoán, v.v
10 WebSpeech API Bao gồm API nhận diện giọng nói
(SpeechRecognition) và API chuyển đổi văn bản thành giọng nói (SpeechSynthesis) được nhúng vào trình duyệt
11 Push Notification API API phụ trách việc quản lý và vận chuyển các thông báo cho người dùng được nhúng vào trình duyệt
12 Text2Speech Thư viện liên kết với hệ thống tạo giọng nói từ văn bản trên thiết bị di động
13 Voice Recognition Thư viện liên kết với hệ thống nhận diện giọng nói trên thiết bị di động
14 Scheduled Notification Thư viện liên kết với hệ thống tạo thông báo theo lịch trên thiết bị di động
15 Hệ thống dịch vụ chạy nền Hệ thống chạy nền được khởi tạo bởi trình duyệt để lắng nghe các sự kiện được gửi về bởi máy chủ
16 Firebase Cloud Messaging Hệ thống phân phối thông báo đa nền tảng của Firebase
Hệ thống NLP cục bộ là giải pháp xử lý ngôn ngữ tự nhiên không phụ thuộc vào API, sử dụng thư viện NLP.js để xử lý dữ liệu đầu vào một cách hiệu quả.
18 Hệ thống phân tích ý niệm Thành phần này bao gồm mạng nơ ron truyền thẳng để xác định ý niệm của
127 người dùng từ tập hợp các từ đã cho ở đầu vào
19 Hệ thống phân tích xúc cảm Thành phần này bao gồm một mô hình
Transformer được điều chỉnh từ mô hình PhoBERT đã được huấn luyện sẵn nhằm xác định trạng thái cảm xúc của câu đầu vào Để đạt được kết quả chính xác, dữ liệu cần được tiền xử lý trước khi đưa vào mô hình.
20 Hệ thống trích xuất thực thể có tên
Thành phần này sử dụng nhiều phương pháp để trích xuất một số thông tin thực thể đặt tên từ đoạn ngữ liệu đầu vào
21 Hệ thống tiền xử lý dữ liệu Thành phần này liên kết với thư viện
VNCoreNLP để thực hiện các tác vụ tiền xử lý văn bản đầu vào như tách từ, bỏ dấu, v.v…
22 Hệ thống cấu tạo ngôn ngữ tự nhiên
Thành phần này sử dụng mô hình Transformer đã được tinh chỉnh từ BARTPho, nhằm tạo ra phản hồi cho người dùng khi Chatbot không nhận diện được ý niệm.
Thiết kế mô hình dữ liệu
Hình 4.3 Sơ đồ lớp của hệ thống
4.3.2 Đặc tả lớp dữ liệu
Lớp User có danh sách thuộc tính dưới đây
Bảng 4.3 Bảng thuộc tính lớp User
STT Tên thuộc tính Kiểu dữ liệu Ghi Chú
3 hashed_password String Mật khẩu đã được hash bằng giải thuật SHA-256
Lớp Service có danh sách thuộc tính dưới đây
Bảng 4.4 Bảng thuộc tính lớp Service
STT Tên thuộc tính Kiểu dữ liệu Ghi Chú
3 payment_type Enum Là một trong các giá trị sau (NONE, ONE_TIME, MONTHLY)
Lớp Service có danh sách phương thức dưới đây
Bảng 4.5 Bảng phương thức lớp Service
STT Tên phương thức (Tham số…)
Kiểu dữ liệu trả về Ghi Chú
Lớp Session có danh sách thuộc tính dưới đây
Bảng 4.6 Bảng thuộc tính lớp Session
STT Tên thuộc tính Kiểu dữ liệu Ghi Chú
Lớp Session có danh sách phương thức dưới đây
Bảng 4.7 Bảng phương thức lớp Session
STT Tên phương thức (Tham số…)
Kiểu dữ liệu trả về Ghi Chú
Lớp Bill có danh sách thuộc tính dưới đây
Bảng 4.8 Bảng thuộc tính lớp Bill
STT Tên thuộc tính Kiểu dữ liệu Ghi Chú
Lớp PendingBill (Thừa kế từ lớp Bill) có danh sách thuộc tính dưới đây
Bảng 4.9 Bảng thuộc tính lớp PendingBill
STT Tên thuộc tính Kiểu dữ liệu Ghi Chú
Lớp PendingBill có danh sách phương thức dưới đây
Bảng 4.10 Bảng phương thức lớp PendingBill
STT Tên phương thức (Tham số…)
Kiểu dữ liệu trả về Ghi Chú
Lớp ConfirmBill (Kế thừa từ lớp Bill) có danh sách thuộc tính dưới đây
Bảng 4.11 Bảng thuộc tính lớp ConfirmBill
STT Tên thuộc tính Kiểu dữ liệu Ghi Chú
Lớp Context có danh sách thuộc tính dưới đây
Bảng 4.12 Bảng thuộc tính lớp Context
STT Tên thuộc tính Kiểu dữ liệu Ghi Chú
Lớp Context có danh sách phương thức dưới đây
Bảng 4.13 Bảng phương thức lớp Context
STT Tên phương thức (Tham số…)
Kiểu dữ liệu trả về Ghi Chú
Lớp ActiveContext có danh sách thuộc tính dưới đây
Bảng 4.14 Bảng thuộc tính lớp ActiveContext
STT Tên thuộc tính Kiểu dữ liệu Ghi Chú
Lớp Message có danh sách thuộc tính dưới đây
Bảng 4.15 Bảng thuộc tính lớp Message
STT Tên thuộc tính Kiểu dữ liệu Ghi Chú
Lớp Option có danh sách thuộc tính dưới đây
Bảng 4.16 Bảng thuộc tính lớp Option
STT Tên thuộc tính Kiểu dữ liệu Ghi Chú
Lớp InformationKey có danh sách thuộc tính dưới đây
Bảng 4.17 Bảng thuộc tính lớp InformationKey
STT Tên thuộc tính Kiểu dữ liệu Ghi Chú
Lớp InformationKey có danh sách phương thức dưới đây
Bảng 4.18 Bảng phương thức lớp InformationKey
STT Tên phương thức (Tham số…)
Kiểu dữ liệu trả về Ghi Chú
Lớp Utterance có danh sách thuộc tính dưới đây
Bảng 4.19 Bảng thuộc tính lớp Utterance
STT Tên thuộc tính Kiểu dữ liệu Ghi Chú
Lớp Intent có danh sách thuộc tính dưới đây
Bảng 4.20 Bảng thuộc tính lớp Intent
STT Tên thuộc tính Kiểu dữ liệu Ghi Chú
Lớp Entity có danh sách thuộc tính dưới đây
Bảng 4.21 Bảng thuộc tính lớp Entity
STT Tên thuộc tính Kiểu dữ liệu Ghi Chú
Lớp Trait có danh sách thuộc tính dưới đây
Bảng 4.22 Bảng thuộc tính lớp Trait
STT Tên thuộc tính Kiểu dữ liệu Ghi Chú
Lớp Notification có danh sách thuộc tính dưới đây
Bảng 4.23 Bảng thuộc tính lớp Notification
STT Tên thuộc tính Kiểu dữ liệu Ghi Chú
Lớp Preference có danh sách thuộc tính dưới đây
Bảng 4.24 Bảng thuộc tính lớp Preference
STT Tên thuộc tính Kiểu dữ liệu Ghi Chú
Lớp Blog có danh sách thuộc tính dưới đây
Bảng 4.25 Bảng thuộc tính lớp Blog
STT Tên thuộc tính Kiểu dữ liệu Ghi Chú
Thiết kế luồng xử lý
4.4.1 Luồng xử lý chức năng đăng nhập
QueryUser(credential) result not null null return result createSession() return token
True SubmitLogin(credential) return "Empty field" return token return "wrong credential" return "wrong credential" return "Login Success" return "wrong credential"
Hình 4.4 Sơ đồ luồng xử lý chức năng đăng nhập
4.4.2 Luồng xử lý chức năng đăng kí
QueryUser(credential) result not null null return result createUser return token
True SubmitLogin(credential) return "Empty field" return token return "credential exist" return "credential exist" return "Register Success" return "credential exist"
Hình 4.5 Sơ đồ luồng xử lý chức năng đăng ký
4.4.3 Luồng xử lý chức năng thu phí
Hình 4.6 Sơ đồ luồng xử lý chức năng thu phí
4.4.4 Luồng xử lý chức năng giao tiếp với Chatbot
Trường hợp chung, luồng xử lý được thể hiện thông qua biểu đồ sau
Hình 4.7 Sơ đồ luồng xử lý cho việc giao tiếp với Chatbot (Trường hợp chung)
Trong trường hợp cần truy vấn thông tin bên thứ ba, luồng xử lý được thể hiện thông qua biểu đồ sau
Hình 4.8 Sơ đồ luồng xử lý cho việc giao tiếp với Chatbot (Trường hợp cần tra cứu thông tin)
4.4.5 Luồng xử lý chức năng phát âm đoạn Chat
:ChatClient :SpeechSynthesis Local Machine Online T2S Service
ProcessUtterance(utter, voice) return voice_data return voice_data
ProcessUtterance(utter, voice) return voice_data return voice_data
Hình 4.9 Sơ đồ luồng xử lý chức năng phát âm đoạn Chat
4.4.6 Luồng xử lý chức năng gửi thông báo Push
Hình 4.10 Sơ đồ luồng xử lý chức năng gửi thông báo Push
4.4.7 Luồng xử lý chức năng gửi thông báo theo lịch trình
Hình 4.11 Sơ đồ luồng xử lý chức năng gửi thông báo theo lịch trình
4.4.8 Luồng xử lý chức năng cập nhật thông tin người dùng
SaveInfo(credential, info) return result
QueryUser(credential) result null not null return result
SaveInfo(user, info) return result
True SaveInfo(credential, info) return "Empty field" return result return "Wrong Credential" return "Wrong Credential" return "Info Saved" return "Wrong Credential "
Hình 4.12 Sơ đồ luồng xử lý chức năng cập nhật thông tin người dùng
4.4.9 Luồng xử lý chức năng cập nhật thiết lập cá nhân
SaveInfo(credential, preference) return result
QueryUser(credential) result null not null return result
SavePreference(user, preference) return result
True SaveInfo(credential, preference) return "Invalid field" return result return "Wrong Credential" return "Wrong Credential" return "Preference Saved" return "Wrong Credential "
Hình 4.13 Sơ đồ luồng chức năng cập nhật thiết lập cá nhân
4.4.10 Luồng xử lý chức năng cập nhật cấp bậc người dùng
Actor :DashboardClient :Server :Database update service tier
SaveToPending(data) return "success" show success UpdatePermission(pending) return result
Hình 4.14 Sơ đồ luồng xử lý chức năng cập nhật cấp bậc người dùng
Thiết kế các Module truy vấn thông tin
4.5.1 Truy vấn thông tin thời tiết
Luồng xử lý của module truy vấn thông tin thời tiết được thể hiện qua biểu đồ tuần tự như sau
Actor :ChatClient :Fetch (Weather API)
Fetch(Request) return result return result
FormatOutput(result) return error return error
GenerateCanvas(data) show result return result return dataURL return error return error show error
Hình 4.15 Sơ đồ luồng xử lý truy vấn thông tin thời tiết
4.5.2 Truy vấn thông tin tỉ giá tiền tệ
Luồng xử lý của module truy vấn thông tin tỉ giá tiền tệ được thể hiện qua biểu đồ tuần tự như sau
Fetch(Request) return result return result FormatOutput(result) return error return error
Hình 4.16 Sơ đồ luồng xử lý truy vấn thông tin tỉ giá ngoại tệ
4.5.3 Truy vấn thông tin dịch thuật
Luồng xử lý của module truy vấn thông tin dịch thuật được thể hiện qua biểu đồ tuần tự như sau
Fetch(Request) return result return result FormatOutput(result) return error return error
Hình 4.17 Sơ đồ luồng xử lý dịch thuật
4.5.4 Truy vấn giá cổ phiếu
Luồng xử lý của module truy vấn thông tin giá cổ phiếu được thể hiện qua biểu đồ tuần tự như sau
Fetch(Request) return result return result FormatOutput(result) return error return error
Hình 4.18 Sơ đồ luồng xử lý truy vấn giá cổ phiếu
4.5.5 Truy vấn thông tin dịch COVID-19
Luồng xử lý của module truy vấn thông tin dịch COVID-19 trong nước được thể hiện qua biểu đồ tuần tự như sau
Fetch(Request) return result return result
Hình 4.19 Sơ đồ luồng xử lý truy vấn thông tin dịch COVID-19
4.5.6 Truy vấn thông tin từ Google Knowledge Graph
Luồng xử lý của module truy vấn thông tin từ Google Knowledge được thể hiện qua biểu đồ tuần tự như sau
Fetch(Request) return result return result
FormatOutput(result) return error return error
Hình 4.20 Sơ đồ luồng xử lý truy vấn thông tin từ Google Knowledge Graph
Thiết kế giao diện
Màn hình được bố trí thông qua sơ đồ như sau
Màn hình giá cả dịch vụ
Màn hình thanh toán thành công
Màn hình thanh toán thất bại
Màn hình hồ sơ người dùng
Màn hình danh sách hóa đơn
Màn hình danh sách bài viết
Màn hình quản trị viên
Màn hình bảng điều khiển
Màn hình hiển thị thông tin
Màn hình Quản lý người dùng
Màn hình Quản lý hóa đơn
Màn hình Quản lý bài viết
Màn hình Quản lý dịch vụ
Màn hình chỉnh sửa thông tin người dùng
Màn hình chỉnh sửa thông tin hóa đơn
Màn hình chỉnh sửa thông tin bài viết
Màn hình chỉnh sửa thông tin người dùng
Màn hình bảo mật tài khoản người dùng
Màn hình thiết lập cá nhân người dùng
Hình 4.21 Sơ đồ màn hình
Danh sách các màn hình và mô tả sơ bộ được biểu diễn thông qua bảng dưới đây
Bảng 4.26 Bảng danh sách màn hình trong hệ thống
STT Tên màn hình Mô tả chức năng
1 Màn hình chính Màn hình chính chứa các thông tin giới thiệu về hệ thống cũng như điều hướng tới các chức năng chính của hệ thống
2 Màn hình đăng nhập Màn hình chứa giao diện đăng nhập vào tài khoản người dùng
3 Màn hình đăng ký Màn hình chứa giao diện đăng kí tài khoản người dùng mới
Màn hình danh sách hóa đơn hiển thị các hóa đơn đã thanh toán của người dùng, và chỉ có thể truy cập sau khi người dùng đã đăng nhập.
Màn hình hồ sơ người dùng cung cấp thông tin chi tiết về người dùng và gói dịch vụ mà họ đang sử dụng, và chỉ có thể truy cập sau khi đăng nhập.
6 Màn hình khung chat Màn hình hiển thị giao diện giao tiếp với
7 Màn hình giá cả dịch vụ Màn hình hiển thị bảng danh sách các gói dịch vụ người dùng có thể mua
Màn hình thanh toán là giao diện cho phép người dùng nhập thông tin thanh toán và xem thông tin giao dịch sắp thực hiện Để truy cập màn hình này, người dùng cần đăng nhập vào hệ thống.
9 Màn hình thanh toán thành công
Màn hình thông báo giao dịch đã thành công (Chỉ truy cập được khi người dùng hoàn thành thanh toán)
10 Màn hình thanh toán thất bại Màn hình thông báo giao dịch thất bại
(Chỉ truy cập được khi người dùng hủy thanh toán)
11 Màn hình danh sách bài viết Màn hình hiển thị danh sách các bài viết của hệ thống
12 Màn hình bài viết Màn hình hiển thị bài viết của hệ thống
4.6.1 Thiết kế giao diện trên nền tảng Web
Hình 4.22 Giao diện màn hình chính (Chưa đăng nhập)
Hình 4.23 Giao diện màn hình chính (Đã đăng nhập) Bảng 4.27 Bảng danh sách các thành phần trong màn hình chính
STT Tên thành phần Loại thành phần Mô tả
1 ChatNav NavButton Dẫn người dùng đến màn hình giao tiếp với Chatbot
2 ServiceNav NavButton Dẫn người dùng đến màn hình giới thiệu dịch vụ
3 InfoNav NavDropdown Mở Menu Dropdown để chọn các mục sau đây:
- Nhà phát triển: Dẫn đến màn hình giới thiệu nhà phát triển
- Chức năng: Dẫn đến màn hình giới thiệu chức năng
- Blog: Dẫn đến màn hình danh sách bài viết
4 LoginNav NavButton Dẫn người dùng đến màn hình đăng nhập
5 HeaderLogo ImageButton Dẫn người dùng về màn hình chính
6 StartButton Button Dẫn người dùng đến màn hình giao tiếp với Chatbot
7 UserNav NavDropdown Mở Menu Dropdown để chọn các mục sau đây:
- Lịch sử thanh toán: Dẫn người dùng đến màn hình lịch sử thanh toán
Hình 4.24 Giao diện màn hình đăng nhập
Bảng 4.28 Bảng danh sách thành phần trong màn hình đăng nhập
STT Tên thành phần Loại thành phần Mô tả
1 UsernameInput TextInput Nơi người dùng nhập tên đăng nhập
2 PasswordInput TextInput Nơi người dùng nhập mật khẩu đăng nhập
3 LoginButton Button Yêu cầu đăng nhập bằng thông tin người dùng đã nhập tại [1] và
4 RegisterButton Button Dẫn người dùng đến màn hình đăng ký
Hình 4.25 Giao diện màn hình đăng ký
Bảng 4.29 Bảng danh sách thành phần trong màn hình đăng ký
STT Tên thành phần Loại thành phần Mô tả
1 UsernameInput TextInput Nơi người dùng nhập tên đăng nhập
2 PasswordInput TextInput Nơi người dùng nhập mật khẩu đăng nhập
TextInput Nơi người dùng nhập lại mật khẩu
4 EmailInput TextInput Nơi người dùng nhập địa chỉ email
5 RegisterButton Button Yêu cầu đăng ký bằng thông tin người dùng đã nhập tại [1] [2]
4.6.1.4 Màn hình liệt kê giá dịch vụ
Hình 4.26 Giao diện màn hình liệt kê giá dịch vụ
Bảng 4.30 Bảng danh sách thành phần trong màn hình liệt kê giá dịch vụ
STT Tên thành phần Loại thành phần Mô tả
1 ServiceName Label Hiển thị tên dịch vụ
2 ServicePrice Label Hiển thị giá cả dịch vụ
3 FeatureList ListView Hiển thị danh sách chức năng dịch vụ
4 BuyButton Button Dẫn người dùng đến màn hình nhập thông tin thanh toán của gói dịch vụ tương ứng
4.6.1.5 Màn hình giao tiếp với Chatbot
Hình 4.27 Giao diện màn hình giao tiếp với Chatbot
Bảng 4.31 Bảng danh sách thành phần trong màn hình giao tiếp với Chatbot
STT Tên thành phần Loại thành phần Mô tả
1 UserMessage ChatBubble Hiển thị tin nhắn từ người dùng
2 BotMessage ChatBubble Hiển thị tin nhắn từ Chatbot
3 SuggestedMessage Button Hiển thị các tin nhắn được gợi ý từ Chatbot
4 MessageInput TextInput Nơi nhập tin nhắn của người dùng
5 SendButton Button Yêu cầu gửi tin nhắn người dùng đã nhập tại [4]
4.6.1.6 Màn hình nhập thông tin thanh toán
Hình 4.28 Giao diện màn hình nhập thông tin thanh toán
Bảng 4.32 Bảng danh sách thành phần trong màn hình nhập thông tin thanh toán
STT Tên thành phần Loại thành phần Mô tả
1 NameInput TextInput Nơi người dùng nhập tên thanh toán
2 AddressInput TextInput Nơi người dùng nhập địa chỉ thanh toán
3 PhoneInput TextInput Nơi người dùng nhập số điện thoại thanh toán
4 EmailInput TextInput Nơi người dùng nhập địa chỉ email
5 InfoSubmitButton Button Yêu cầu gửi thông tin người dùng đã nhập tại [1] [2] [3] và
[4] cho phía xử lý giao dịch
6 PlanName Label Hiển thị tên gói dịch vụ người dùng đặt mua
7 TotalAmount Label Hiển thị số tiền người dùng phải thanh toán
4.6.1.7 Màn hình danh sách bài viết
Hình 4.29 Giao diện màn hình danh sách bài viết Bảng 4.33 Bảng danh sách thành phần trong màn hình danh sách bài viết
STT Tên thành phần Loại thành phần Mô tả
1 BlogImage Image Hiển thị hình minh họa cho bài viết
2 BlogTitleText Label Hiển thị tiêu đề bài viết
3 BlogTag Tag Hiển thị các tag của bài viết
4 BlogDescText Label Hiển thị mô tả ngắn của bài viết
5 ReadMoreButton Button Dẫn người dùng đến trang đầy đủ nội dung của bài viết
4.6.1.8 Màn hình chỉnh sửa hồ sơ người dùng
Hình 4.30 Giao diện màn hình chỉnh sử hồ sơ người dùng Bảng 4.34 Bảng danh sách thành phần trong màn hình chỉnh sửa hồ sơ người dùng
STT Tên thành phần Loại thành phần Mô tả
1 UserAvatar Image Hiển thị hình đại diện (Avatar) của người dùng
2 UsernameInput Input Hiển thị và cho phép người dùng chỉnh sửa tên đăng nhập
3 DisplaynameInput Input Hiển thị và cho phép người dùng chỉnh sửa tên hiển thị
4 EmailInput Input Hiển thị và cho phép người dùng chỉnh sửa email đăng ký
5 BirthdayPicker DatePicker Hiển thị và cho phép người dùng chỉnh sửa ngày sinh
6 PlanExpireInfo Label Hiển thị ngày hết hạn dịch vụ của người dùng
7 PlanNameInfo Label Hiển thị tên dịch vụ người dùng đang sử dụng
8 SaveButton Button Lưu thông tin đang hiển thị trên màn hình về trở thành thông tin người dùng
9 UserInfoTabButton Button Chuyển mục hiển thị hiện tại sang mục thông tin người dùng
Button Chuyển mục hiển thị hiện tại sang mục bảo mật người dùng
Button Chuyển mục hiển thị hiện tại sang mục thiết lập cá nhân của người dùng
4.6.1.9 Màn hình thiết lập bảo mật người dùng
Hình 4.31 Giao diện màn hình thiết lập bảo mật người dùng
Bảng 4.35 Bảng danh sách các thành phần trong màn hình thiết lập bảo mật người dùng
STT Tên thành phần Loại thành phần Mô tả
1 OldPasswordInput Input Nơi người dùng nhập mật khẩu cũ của tài khoản
2 NewPasswordInput Input Nơi người dùng nhập mật khẩu mới của tài khoản
Input Nơi người dùng nhập mật khẩu xác nhận mới của tài khoản
4 SaveButton Button Tương tác với nút này để yêu cầu hệ thống đổi mật khẩu người dùng với thông tin đã nhập
4.6.1.10 Màn hình thiết lập cá nhân người dùng
Hình 4.32 Giao diện màn hình thiết lập cá nhân người dùng
Bảng 4.36 Bảng danh sách các thành phần trong màn hình thiết lập cá nhân người dùng
STT Tên thành phần Loại thành phần Mô tả
1 NotificationCheckbox Checkbox Người dùng chọn nếu họ muốn nhận thông báo push từ dịch vụ hay không
Checkbox Người dùng chọn nếu họ muốn dịch vụ thu âm lại giọng nói của họ hay không (Phục vụ chức năng Speech Recognition)
CheckBox Người dùng chọn nếu họ muốn mỗi tin nhắn luôn được phát âm hay không
SelectPicker Người dùng chọn giọng nói được sử dụng cho chức năng phát âm
5 DeleteUserInfoButton Button Tương tác với nút này nếu người dùng có yêu cầu xóa toàn bộ thông tin tài khoản
4.6.1.11 Màn hình dashboard quản trị hệ thống
Hình 4.33 Giao diện màn hình dashboard quản trị hệ thống Bảng 4.37 Bảng danh sách các thành phần trong màn hình dashboard quản trị hệ thống
STT Tên thành phần Loại thành phần Mô tả
1 SessionCount Label Hiển thị số người dùng trong phiên sử dụng
2 TotalUserCount Label Hiển thị số người dùng đã đăng ký dịch vụ
3 ChatbotUsageChart Chart Biểu đồ hiển thị số lần
Chatbot đã được sử dụng gần đây
4 DashboardSelect NavigationButton Chọn màn hình bảng điều khiển
5 InfoSelect NavigationButton Chọn màn hình thông tin hệ thống
6 UserManageSelect NavigationButton Chọn màn hình quản lý người dùng
7 BillingManageSelect NavigationButton Chọn màn hình quản lý hóa đơn
8 ServiceManageSelect NavigationButton Chọn màn hình quản lý dịch vụ
9 BlogManageSelect NavigationButton Chọn màn hình quản lý bài viết
4.6.1.12 Màn hình thông tin hệ thống
Hình 4.34 Giao diện màn hình thông tin hệ thống
Bảng 4.38 Bảng danh sách các thành phần trong màn hình thông tin hệ thống
STT Tên thành phần Loại thành phần Mô tả
1 RunningModeInfo Label Chứa thông tin về chế độ chạy của hệ thống
2 LatestBootInfo Label Chứa thông tin về lần khởi động gần nhất của hệ thống
3 APIConnectionInfo Panel Chức thông tin về kết nối đến các dịch vụ
4.6.1.13 Màn hình quản lý người dùng
Hình 4.35 Giao diện màn hình quản lý người dùng Bảng 4.39 Bảng danh sách các thành phần trong màn hình quản lý người dùng
STT Tên thành phần Loại thành phần Mô tả
1 TotalEntryInfo Label Chứa thông tin về tổng số người dùng trong hệ thống
2 NewUserButton Button Yêu cầu mở hộp thoại người dùng mới
3 UserDataTable Table Bảng dữ liệu chứa thông tin người dùng
4 UserEdit Link Yêu cầu mở hộp thoại chỉnh sửa thông tin người dùng
5 UserRemove Link Yêu cầu xóa thông tin người dùng
4.6.1.14 Màn hình chỉnh sửa thông tin người dùng
Hình 4.36 Giao diện màn hình chỉnh sửa thông tin người dùng Bảng 4.40 Bảng danh sách các thành phần trong màn hình chỉnh sửa thông tin người dùng
STT Tên thành phần Loại thành phần Mô tả
1 UsernameInput Input Hiển thị và cho phép người dùng chỉnh sửa tên đăng nhập
2 DisplayNameInput Input Hiển thị và cho phép người dùng chỉnh sửa tên hiển thị
3 EmailInput Input Hiển thị và cho phép người dùng chỉnh sửa email đăng ký
4 BirthdayPicker DatePicker Hiển thị và cho phép người dùng chỉnh sửa ngày sinh
5 PlanPicker SelectPicker Hiển thị và cho phép chỉnh sửa tên dịch vụ người dùng đang sử dụng
DatePicker Hiển thị và cho phép chỉnh sửa ngày hết hạn dịch vụ của người dùng
7 AbortChangeButton Button Yêu cầu hủy yêu cầu thay đổi thông tin
8 SaveChangeButton Button Yêu cầu Lưu thay đổi thông tin
4.6.1.15 Màn hình quản lý dịch vụ hệ thống
Hình 4.37 Giao diện màn hình quản lý dịch vụ hệ thống Bảng 4.41 Bảng danh sách các thành phần trong màn hình quản lý dịch vụ hệ thống
STT Tên thành phần Loại thành phần Mô tả
1 FreeServicePanel Panel Hiển thị danh sách thiết lập các dịch vụ cho dịch vụ miễn phí
2 ServiceCheckbox Checkbox Chọn nếu người dùng có thể sử dụng dịch vụ này hay không
3 StandardServicePanel Panel Hiển thị danh sách thiết lập các dịch vụ cho dịch vụ tiêu chuẩn
4 PremiumServicePanel Panel Hiển thị danh sách thiết lập các dịch vụ cho dịch vụ cao cấp
5 SaveButton Button Lưu thiết lập dịch vụ
4.6.1.16 Màn hình quản lý bài viết
Hình 4.38 Giao diện màn hình quản lý bài viết Bảng 4.42 Bảng danh sách các thành phần trong màn hình quản lý bài viết
STT Tên thành phần Loại thành phần Mô tả
1 TotalEntryInfo Label Chứa thông tin về tổng số bài viết trong hệ thống
2 NewBlogButton Button Yêu cầu mở hộp thoại bài viết mới
3 BlogDataTable Table Bảng dữ liệu chứa thông tin bài viết
4 BlogEdit Link Yêu cầu mở hộp thoại chỉnh sửa thông tin bài viết
5 BlogRemove Link Yêu cầu xóa thông tin bài viết
4.6.1.17 Màn hình chỉnh sửa bài viết
Hình 4.39 Giao diện màn hình chỉnh sửa bài viết Bảng 4.43 Bảng danh sách các thành phần trong màn hình chỉnh sửa bài viết
STT Tên thành phần Loại thành phần Mô tả
1 TitleInput Input Hiển thị và chỉnh sửa tiêu đề bài viết
2 DescInput Input Hiển thị và chỉnh sửa diễn tả bài viết
3 TagInput TagPicker Hiển thị và chỉnh sửa thẻ phân loại bài viết
4 ImgLinkInput Input Hiển thị và chỉnh sửa đường dẫn tới hình minh họa bài viết
5 ContentInput TextAreaInput Hiển thị và chỉnh sửa nội dung bài viết
6 CreationDateInfo Label Hiển thị ngày tạo bài viết
7 SaveButton Button Yêu cầu lưu thông tin bài viết
8 CancelButton Button Hủy yêu cầu lưu thông tin bài viết
4.6.2 Thiết kế giao diện trên nền tảng di động
4.6.2.1 Màn hình đăng nhập (Ứng dụng di động)
Hình 4.40 Giao diện màn hình Đăng nhập Bảng 4.44 Bảng danh sách các thành phần trong màn hình Đăng nhập
STT Tên thành phần Loại thành phần Mô tả
1 UsernameInput TextInput Nơi người dùng nhập tên đăng nhập
2 PasswordInput TextInput Nơi người dùng nhập mật khẩu đăng nhập
3 LoginButton Button Yêu cầu đăng nhập bằng thông tin người dùng đã nhập tại [1] và [2]
4 RegisterButton Button Dẫn người dùng đến màn hình đăng ký
4.6.2.2 Màn hình Đăng ký (Ứng dụng di động)
Hình 4.41 Giao diện màn hình Đăng ký Bảng 4.45 Bảng danh sách các thành phần trong màn hình Đăng ký
STT Tên thành phần Loại thành phần Mô tả
1 UsernameInput TextInput Nơi người dùng nhập tên đăng nhập
2 EmailInput TextInput Nơi người dùng nhập email
3 PasswordInput TextInput Nơi người dùng nhập mật khẩu
4 ConfirmPasswordInput TextInput Nơi người dùng xác nhận mật khẩu
5 SignUpButton Button Yêu cầu đăng ký bằng thông tin người dùng đã nhập tại
6 LoginButton Button Dẫn người dùng quay lại màn hình đăng nhập
4.6.2.3 Màn hình Khung chat (Ứng dụng di động)
Hình 4.42 Giao diện màn hình Khung chat Hình 4.43 Giao diện màn hình khung chat (kèm bản đồ)
Bảng 4.46 Bảng danh sách các thành phần trong màn hình Khung chat
STT Tên thành phần Loại thành phần Mô tả
1 BlogButton Button Dẫn người dùng đến màn hình danh sách bài viết
2 AccountButton Button Dẫn người dùng đến màn hình đăng nhập (nếu đã đăng nhập thì chuyển hướng đến màn hình tài khoản)
3 UserMessage ChatBubble Hiển thị tin nhắn gửi đi từ người dùng
4 BotMessage ChatBubble Hiển thị tin nhắn phản hồi từ chatbot
5 SuggestionBar ListButton Hiển thị các tin nhắn mẫu để gợi ý cho người dùng
6 VoiceChatButton Button Cho phép người dùng gửi tin nhắn bằng giọng nói
7 ChatInput TextInput Nơi người dùng nhập tin nhắn muốn gửi
8 SendButton Button Cho phép người dùng gửi tin nhắn đã nhập từ [7]
9 Map Component Bản đồ hiển thị khi người dùng nhắn tin hỏi địa điểm
4.6.2.4 Màn hình Danh sách bài viết (Ứng dụng di động)
Hình 4.44 Giao diện màn hình Danh sách bài viết Bảng 4.47 Bảng danh sách các thành phần trong màn hình Danh sách bài viết
STT Tên thành phần Loại thành phần Mô tả
1 BackButton Button Trở lại màn hình chat bot
2 BlogImage Image Hiển thị hình minh họa cho bài viết
3 BlogTitleText Label Hiển thị tiêu đề bài viết
4 BlogTag Tag Hiển thị các nhãn của bài viết
5 BlogDescText Label Hiển thị mô tả ngắn của bài viết
4.6.2.5 Màn hình Xem nội dung bài viết (Ứng dụng di động)
Hình 4.45 Giao diện màn hình Xem nội dung bài viết
Bảng 4.48 Bảng danh sách các thành phần trong màn hình Xem nội dung bài viết
STT Tên thành phần Loại thành phần Mô tả
1 BackButton Button Trở lại màn hình danh sách bài viết
2 BlogTag Tag Hiển thị các nhãn của bài viết
3 BlogTitleText Label Hiển thị tiêu đề bài viết
4 TimeText Label Hiển thị ngày bài viết được đăng tải
5 BlogContent TextBox Hiển thị nội dung bài viết
4.6.2.6 Màn hình Thiết lập tài khoản (Ứng dụng di động)
Hình 4.46 Giao diện màn hình Thiết lập tài khoản Bảng 4.49 Bảng danh sách các thành phần trong màn hình Thiết lập tài khoản
STT Tên thành phần Loại thành phần Mô tả
1 BackButton Button Quay trở lại màn hình khung chat
2 LogOutButton Button Đăng xuất người dùng khỏi hệ thống
3 UsernameLabel Label Hiển thị tên đăng nhập của người dùng
4 ClassLabel Label Hiển thị hạng dịch vụ của người dùng
5 InfomationButton Button Dẫn người dùng đến màn hình chỉnh sửa thông tin người dùng
6 VoiceButton Button Dẫn người dùng đến màn hình thiết lập âm thanh và thông báo
7 ThemeButton Button Dẫn người dùng đến màn hình thiết lập giao diện
8 FontButton Button Dẫn người dùng đến màn hình thiết lập phông chữ
9 UpgradeButton Button Dẫn người dùng đến màn hình thăng hạng dịch vụ
10 PasswordButton Button Dẫn người dùng đến màn hình thiết lập bảo mật
11 AboutUsButton Button Dẫn người dùng đến màn hình thông tin nhóm phát triển
12 LogOutButton Button Đăng xuất người dùng khỏi hệ thống
4.6.2.7 Màn hình Chỉnh sửa thông tin người dùng (Ứng dụng di động)
Hình 4.47 Giao diện màn hình Chỉnh sửa thông tin người dùng Bảng 4.50 Bảng danh sách các thành phần trong màn hình Chỉnh sửa thông tin người dùng
STT Tên thành phần Loại thành phần Mô tả
1 BackButton Button Quay lại màn hình thiết lập tài khoản
2 NameInput TextInput Thay đổi tên người dùng
3 UsernameText Label Hiển thị tên tài khoản người dùng
4 EmailText Label Hiển thị email người dùng
5 PaidValidUntilText Label Hiện thị ngày hết hạn tài khoản người dùng
6 ServiceTierText Label Hiện thị hạng dịch vụ của người dùng
7 BirthdayInput SelectInput Thay đổi sinh nhật
8 SaveButton Button Cho phép người dùng lưu thông tin mới
4.6.2.8 Màn hình Thiết lập âm thanh và thông báo (Ứng dụng di động)
Hình 4.48 Giao diện màn hình Thiết lập âm thanh và thông báo Bảng 4.51 Bảng danh sách các thành phần trong màn hình Thiết lập âm thanh và thông báo
STT Tên thành phần Loại thành phần Mô tả
1 BackButton Button Quay lại màn hình thiết lập tài khoản
2 SaveButton Button Xác nhận lưu thiết lập mới
CheckBox Người dùng chọn nếu họ muốn mỗi tin nhắn luôn được phát âm hay không
Checkbox Người dùng chọn nếu họ muốn dịch vụ thu âm lại giọng nói của họ hay không (Phục vụ chức năng Speech Recognition)
5 NotificationCheckbox Checkbox Người dùng chọn nếu họ muốn nhận thông báo push từ dịch vụ hay không
6 VoiceSpeedSlider Slider Người dùng điều chỉnh tốc độ nói phù hợp
SelectPicker Người dùng chọn giọng nói được sử dụng cho chức năng phát âm
4.6.2.9 Màn hình Thiết lập giao diện (Ứng dụng di động)
Hình 4.49 Giao diện màn hình Thiết lập giao diện Bảng 4.52 Bảng danh sách các thành phần trong màn hình Thiết lập giao diện
STT Tên thành phần Loại thành phần Mô tả
1 BackButton Button Quay lại màn hình thiết lập tài khoản
2 SaveButton Button Xác nhận lưu thiết lập mới
3 ThemePickerRadioButton Radio Người dùng chọn nếu họ muốn dùng màu sắc này cho chủ đề giao diện
4 ThemeColor Component Hiển thị màu sắc của chủ đề giao diện
5 ThemeName Label Hiển thị tên của chủ đề giao diện
4.6.2.10 Màn hình Thiết lập phông chữ (Ứng dụng di động)
Hình 4.50 Giao diện màn hình Thiết lập phông chữ Bảng 4.53 Bảng danh sách các thành phần trong màn hình Thiết lập phông chữ
STT Tên thành phần Loại thành phần Mô tả
1 BackButton Button Quay lại màn hình thiết lập tài khoản
2 SaveButton Button Xác nhận lưu thiết lập mới
3 FontSizeSlider Slider Người dùng điều chỉnh cỡ chữ phù hợp
4 FontFamilyPicker SelectPicker Người dùng chọn kiểu chữ mong muốn
5 Preview Component Cho phép người dùng xem trước cỡ chữ sau khi thay đổi
4.6.2.11 Màn hình Nâng cấp dịch vụ (Ứng dụng di động)
Hình 4.51 Giao diện màn hình Nâng cấp dịch vụ Bảng 4.54 Bảng danh sách các thành phần trong màn hình Nâng cấp dịch vụ
STT Tên thành phần Loại thành phần Mô tả
1 BackButton Button Quay lại màn hình thiết lập tài khoản