Xây dựng Chatbot - FAQ giải đáp nhanh các thắc mắc về ngành Công nghệ thông tin, giảm tối đa thời gian tiêu tốn cần thiết cho việc tư vấn của nhân viên - Cung cấp thông tin về ngành, các
Trang 1ĐẠI HỌC QUỐC GIA THÀNH PHỐ HỒ CHÍ MINH
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN
Sinh viên thực hiện: Nguyễn Duy Phúc
Cao Nguyễn Minh Quân
19522038
19522074
Trang 2ĐẠI HỌC QUỐC GIA THÀNH PHỐ HỒ CHÍ MINH
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN
Sinh viên thực hiện: Nguyễn Duy Phúc
Cao Nguyễn Minh Quân
19522038
19522074
Thành phố Hồ Chí Minh, năm 2022
Trang 3Mục lục
DANH MỤC HÌNH ẢNH 1
DANH MỤC BẢNG 3
DANH MỤC TỪ VIẾT TẮT 5
LỜI CẢM ƠN 6
ĐỀ CƯƠNG CHI TIẾT 7
NỘI DUNG 1
CHƯƠNG 1: GIỚI THIỆU CHUNG 1
1.1 TỔNG QUAN ĐỀ TÀI 1
1.2 LÝ DO CHỌN ĐỀ TÀI 1
1.3 ĐỐI TƯỢNG SỬ DỤNG 2
1.4 PHẠM VI NGHIÊN CỨU: 2
1.4.1 Phạm vi môi trường: 2
1.4.2 Phạm vi chức năng: 2
CHƯƠNG 2: CƠ SỞ LÝ THUYẾT 3
2.1 TÌM HIỂU VỀ DART 3
2.1.1 Dart là gì? 3
2.1.2 Tính năng tiêu biểu 3
2.1.3 Sự phát triển của Dart 4
2.1.4 Tại sao Flutter sử dụng Dart 4
2.2 TÌM HIỂU VỀ FLUTTER 5
2.2.1 Khái niệm 5
2.2.2 Lợi ích của Flutter 5
2.2.3 Nhược điểm của Flutter 6
2.3 TÌM HIỂU VỀ FIREBASE 7
2.3.1 Giới thiệu về Firebase 8
Trang 42.3.3 Chức năng của Firebase 8
2.3.4 Ưu điểm 10
2.3.5 Nhược điểm 11
2.4 TÌM HIỂU GITHUB 13
2.4.1 Khái niệm 13
2.4.2 Git 13
2.4.3 Chức năng 13
2.4.4 Lợi ích 14
CHƯƠNG 3: CHATBOT: DIALOGFLOW 14
3.1 KHÁI NIỆM DIALOGFLOW 14
3.2 QUY TRÌNH HOẠT ĐỘNG 15
3.2.1 Agent 15
3.2.2 Intents 16
3.2.3 Entities 18
3.2.4 Vấn đề xử lý Chatbot 19
3.3 SƠ ĐỒ KỊCH BẢN ĐỐI THOẠI 20
CHƯƠNG 4: THIẾT KẾ HỆ THỐNG 22
4.1 KIẾN TRÚC HỆ THỐNG: MÔ HÌNH MVC 22
4.2 SƠ ĐỒ LỚP 23
CHƯƠNG 5: ĐẶC TẢ USE CASE 24
5.1 SƠ ĐỒ USE CASE 24
5.2 DANH SÁCH TÁC NHÂN 25
5.3 DANH SÁCH USE CASE 25
5.4 MÔ TẢ CHI TIẾT USE CASE 26
5.4.1 Đăng nhập 26
5.4.1 Đăng ký 27
5.4.2 Quản lý tài khoản 28
5.4.3 Yêu thích bài đăng 29
5.4.4 Quản lý thông tin nghề 30
Trang 55.4.5 Quản lý tin tức 33
5.4.6 Bài kiểm tra 37
5.4.7 Chatbot 39
5.4.8 Hỏi đáp 39
CHƯƠNG 6: THIẾT KẾ CƠ SỞ DỮ LIỆU 41
6.1 DANH SÁCH CÁC QUAN HỆ 41
6.1.1 Bảng User 41
6.1.2 Bảng Quiz MBTI 42
6.1.3 Bảng Quiz Holland 42
6.1.4 Bảng Favorite 43
6.1.5 Bảng Message 43
6.1.6 Bảng Favorite 43
6.1.7 Bảng Answers 44
6.1.8 Bảng News 44
6.1.9 Bảng Jobs 45
6.1.10 Bảng Title 45
CHƯƠNG 7: THIẾT KẾ GIAO DIỆN NGƯỜI DÙNG 46
7.1 SCREEN FLOW 46
7.1.1 Người dùng Học sinh 46
7.1.2 Người dùng Quản trị viên 46
7.2 MÔ TẢ CHI TIẾT TỪNG MÀN HÌNH 46
7.2.1 Onboarding 46
7.2.2 Đăng nhập 49
7.2.3 Đăng ký 50
7.2.4 Quên mật khẩu 51
7.2.5 Bài kiểm tra 52
7.2.6 Chatbot 57
7.2.7 Menu 58
Trang 67.2.10 Trang yêu thích 69
7.2.11 Quản lý tin tức 70
7.2.12 Quản lý giải đáp 77
CHƯƠNG 8: CÀI ĐẶT VÀ KIỂM THỬ 81
8.1 MÔI TRƯỜNG CÀI ĐẶT VÀ KIỂM THỬ: 81
8.2 KẾT QUẢ KIỂM THỬ 81
CHƯƠNG 9: KẾT LUẬN 82
9.1 TỔNG KẾT 82
9.2 KHÓ KHĂN 82
9.3 KẾT QUẢ ĐẠT ĐƯỢC 82
9.4 HẠN CHẾ CỦA ĐỒ ÁN 83
9.5 HƯỚNG PHÁT TRIỂN 83
TÀI LIỆU THAM KHẢO 84
Trang 7
DANH MỤC HÌNH ẢNH
Hình 2.1-1 Dart 3
Hình 2.2-1 Flutter 5
Hình 2.3-1 Firebase 7
Hình 2.3-2 Firebase Authentication 8
Hình 2.3-3 Cloud Firestore 9
Hình 2.3-4 Firebase Storage 10
Hình 2.4-1 Github 13
Hình 3.1-1 Dialog Flow 14
Hình 3.2-1 Intents 16
Hình 3.2-2 Sơ đồ tìm kiếm intent 17
Hình 3.2-3 Quy trình xử lý Chatbot 19
Hình 3.3-1 Sơ đồ Intent trong Dialogflow Chatbot 20
Hình 4.1-1 Sơ đồ mô hình MVC 22
Hình 4.2-1 Sơ đồ lớp 23
Hình 5.1-1 Sơ đồ Use Case Người dùng 24
Hình 5.1-2 Sơ đồ Use Case Quản trị viên 25
Hình 7.2-1 Onboarding 1 47
Hình 7.2-2 Onboarding 2 47
Hình 7.2-3 Onboarding 3 48
Hình 7.2-4 Onboarding 4 48
Hình 7.2-5 Trang đăng nhập 49
Hình 7.2-6 Trang đăng ký 50
Hình 7.2-7 Quên mật khảu 51
Hình 7.2-8 Bài test chưa làm 52
Hình 7.2-9 Bài test đã làm 52
Hình 7.2-10 Bài test 55
Hình 7.2-11 Kết quả Holland test 56
Hình 7.2-12 Kết quả MBTI test 56
Trang 8Hình 7.2-14 Menu Quản trị viên 58
Hình 7.2-15 Menu học sinh 58
Hình 7.2-16 Quản lý tài khoản 1 59
Hình 7.2-17 Quản lý tài khoản 2 59
Hình 7.2-18 Quản lý tài khoản 3 60
Hình 7.2-19 Quản lý tài khoản 4 60
Hình 7.2-20 Cập nhật thông tin 61
Hình 7.2-21 Quản lý bài đăng 1 1
Hình 7.2-22 Quản lý bài đăng 2 1
Hình 7.2-23 Quản lý bài đăng 3 64
Hình 7.2-24 Thêm bài đăng 1 65
Hình 7.2-25 Thêm bài đăng 2 65
Hình 7.2-26 Cập nhật bài đăng 66
Hình 7.2-27 Danh sách bài đăng 1 68
Hình 7.2-28 Danh sách bài đăng 2 68
Hình 7.2-29 Quên mật khẩu 69
Hình 7.2-30 Quản lý tin tức 1 70
Hình 7.2-31 Quản lý tin tức 2 70
Hình 7.2-32 Quản lý tin tức 3 71
Hình 7.2-33 Thêm tin tức 1 73
Hình 7.2-34 Thêm tin tức 2 73
Hình 7.2-35 Cập nhật tin tức 74
Hình 7.2-36 Danh sách tin tức 1 76
Hình 7.2-37 Danh sách tin tức 2 76
Hình 7.2-38 Quản lý giải đáp 1 77
Hình 7.2-39 Quản lý giải đáp 2 77
Hình 7.2-40 Quản lý giải đáp 3 78
Hình 7.2-41 Đặt câu hỏi giải đáp 80
Hình 7.2-42 Giải đáp thắc mắc 80
Trang 9
DANH MỤC BẢNG
Bảng 3.3-1 Danh sách intents 20
Bảng 5.2-1 Danh sách tác nhân 25
Bảng 5.3-1 Danh sách use case 25
Bảng 5.4-1 Chi tiết use case Đăng nhập 26
Bảng 5.4-2 Chi tiết use case Đăng ký 27
Bảng 5.4-3 Chi tiết use case quản lý tài khoản 28
Bảng 5.4-4 Chi tiết use case Xem thông tin cá nhân 29
Bảng 5.4-5 Chi tiết use case yêu thích bài đăng 29
Bảng 5.4-6 Chi tiết use case Thêm thông tin nghề 30
Bảng 5.4-7 Chi tiết use case Sửa thông tin nghề 31
Bảng 5.4-8 Chi tiết use case Xóa thông tin nghề 32
Bảng 5.4-9 Chi tiết use case Thêm tin tức 33
Bảng 5.4-10 Chi tiết use case sửa tin tức 34
Bảng 5.4-11 Chi tiết use case xóa tin tức 35
Bảng 5.4-12 Chi tiết use case Xem tin tức 36
Bảng 5.4-13 Chi tiết use case thực hiện kiểm tra 37
Bảng 5.4-14 Chi tiết use case xem kết quả 38
Bảng 5.4-15 Ch tiết use case nhắn tin chat bot 39
Bảng 5.4-16 Chi tiết use case đặt câu hỏi 39
Bảng 5.4-17 Chi tiết use case Giải đáp thắc mắc 40
Bảng 6.1-1 Bảng user 41
Bảng 6.1-2 Bảng Quiz MBTI 42
Bảng 6.1-3 Bảng Quiz Holland 42
Bảng 6.1-4 Bảng Favorite 43
Bảng 6.1-5 Bảng message 43
Bảng 6.1-6 Bảng favorite 43
Bảng 6.1-7 Bảng answer 44
Bảng 6.1-8 Bảng news 44
Trang 10Bảng 7.2-1 Chi tiết giao diện on boarding 48
Bảng 7.2-2 Chi tiết giao diện Đăng nhập 49
Bảng 7.2-3 Chi tiết giao diện Đăng ký 50
Bảng 7.2-4 Chi tiết giao diện Quên mật khẩu 52
Bảng 7.2-5 Chi tiết giao diện danh sách bài kiểm tra 55
Bảng 7.2-6 Chi tiết giao diện bài kiểm tra 56
Bảng 7.2-7 Chi tiết giao diện kết quả kiểm tra 56
Bảng 7.2-8 Chi tiết giao diện Trò chuyện chatbot 57
Bảng 7.2-9 Chi tiết giao diện Menu 59
Bảng 7.2-10 Chi tiết giao diện Quản lý tài khoản 60
Bảng 7.2-11 Chi tiết giao diện Cập nhật thông tin 62
Bảng 7.2-12 Chi tiết giao diện Quản lý bài đăng 64
Bảng 7.2-13 Chi tiết giao diện Cập nhật bài đăng 66
Bảng 7.2-14 Chi tiết giao diện Xóa bài đăng 68
Bảng 7.2-15 Chi tiết giao diện Trang yêu thích 69
Bảng 7.2-16 Chi tiết giao diện Quản lý tin tức 71
Bảng 7.2-17 Chi tiết giao diện Cập nhật tin tức 74
Bảng 7.2-18 Chi tiết giao diện Danh ách tin tức 76
Bảng 7.2-19 Chi tiết giao diện Quản lý giải đáp 78
Bảng 7.2-20 Chi tiết giao diện Câu hỏi thắc mắc 80
Bảng 8.2-1 Bảng kiểm thử 81
Trang 11DANH MỤC TỪ VIẾT TẮT
1 CSDL Cơ sở dữ liệu Cơ sở dữ liệu cho ứng dụng
3 FAQ Frequently Asked Questions Các câu hỏi thường gặp
4 API Application Programming
Interface Giao diện lập trình ứng dụng
5 MVC Model-View-Controller Mô hình lập trình
6 AI Artificial Intelligence Trí tuệ nhân tạo
10 HTTT Hệ thống thông tin Ngành hệ thống thông tin
11 MMT&TTDL Mạng máy tính và truyền
thông dữ liệu
Ngành mạng máy tính và truyền
thông dữ liệu
Trang 12
LỜI CẢM ƠN
Sau quá trình học tập và rèn luyện tại khoa Công nghệ phần mềm trường Đại học
Công nghệ Thông tin – ĐHQG TP.HCM chúng em đã được trang bị các kiến thức cơ
bản, các kỹ năng thực tế để có thể lần đầu thực hiện Đồ án 1 của mình
Để hoàn thành Đồ án này, chúng em xin gửi lời cảm ơn chân thành đến:
Ban Giám hiệu trường Đại học Công nghệ Thông tin – ĐHQG TP.HCM vì đã tạo
điều kiện về cơ sở vật chất với hệ thống thư viện hiện đại, đa dạng các loại sách, tài
liệu thuận lợi cho việc tìm kiếm, nghiên cứu thông tin
Chúng em xin gửi lời cảm ơn chân thành đến thầy Trần Anh Dũng đã tận tình giúp
đỡ, định hướng cách tư duy và cách làm việc khoa học Đó là những góp ý hết sức
quý báu không chỉ trong quá trình thực hiện luận văn này mà còn là hành trang tiếp
bước cho chúng em trong quá trình học tập và lập nghiệp sau này
Và cuối cùng, chúng em xin gửi lời cảm ơn đến gia đình, tất cả thầy cô trong khoa,
bạn bè, tập thể lớp PMCL2019.3 là những người luôn sẵn sàng sẻ chia và giúp đỡ
trong học tập và cuộc sống Mong rằng, chúng ta sẽ mãi mãi gắn bó với nhau
Trong quá trình làm Đồ án này chúng em không tránh khỏi được những sai sót,
chúng em kính mong nhận được sự chỉ dẫn và góp ý của quý thầy cô để hoàn thiện
và phát triển đồ án hơn trong môn học Đồ án 2 cũng như trong Khóa luận tốt nghiệp
trong tương lai
Chúng em xin chân thành cảm ơn Xin chúc những điều tốt đẹp nhất sẽ luôn đồng
hành cùng mọi người
Thành phố Hồ Chí Minh, 15 tháng 06 năm 2022
Sinh viên NGUYỄN DUY PHÚC CAO NGUYỄN MINH QUÂN
Trang 13
ĐẠI HỌC QUỐC GIA TP HỒ CHÍ MINH CỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆT NAM
TRƯỜNG ĐẠI HỌC
CÔNG NGHỆ THÔNG TIN Độc Lập - Tự Do - Hạnh Phúc
TP HCM, ngày 13 tháng 03 năm 2022
ĐỀ CƯƠNG CHI TIẾT
TÊN ĐỀ TÀI: Xây dựng ứng dụng chatbot hỗ trợ tư vấn nghề nghiệp
Cán bộ hướng dẫn: ThS Trần Anh Dũng
Thời gian thực hiện: Từ ngày 07/03/2022 đến ngày 06/06/2022
Sinh viên thực hiện:
Nguyễn Duy Phúc – 19522038
Cao Nguyễn Minh Quân – 19522074
Nội dung đề tài
1 Lý do chọn đề tài:
Trong nhiều năm qua, công tác tư vấn hướng nghiệp cho học sinh đã được tổ
chức với nhiều hình thức khác nhau như cẩm nang “Những điều cần biết” của Bộ
Giáo dục & Đào tạo, các chương trình tư vấn hướng nghiệp trực tiếp tại sân trường hay các buổi tọa đàm chia sẻ kinh nghiệm Những hoạt động này đa phần được tổ chức theo kiểu offline Trong khi đó với xu hướng số hóa trong thời đại công nghiệp 4.0 và những khó khăn từ việc giãn cách do đại dịch Covid-19 gây
ra, học sinh, phụ huynh, trường học và những người làm công tác giáo dục đều rất cần một giải pháp hướng nghiệp số hóa, có khả năng giải đáp những thắc mắc của học sinh một cách tức thời, tường tận và đầy đủ
Hướng nghiệp là một quá trình lâu dài, trong khi các chương trình tư vấn hiện nay chỉ đang giải quyết một lát cắt, tại thời điểm cụ thể Chính vì thế chúng em chọn
đề tài này, để có thể hỗ trợ các bạn học sinh, cung cấp nguồn thông tin và công cụ tin tưởng để hỗ trợ cho việc tự tìm hiểu bản thân, ngành nghề, đồng thời hỗ trợ tư vấn các bạn để kịp thời tháo gỡ những băn khoăn của các bạn về tương lai nghề nghiệp đặc biệt là ngành Công nghệ thông tin
Trang 141 Xây dựng Chatbot
- FAQ giải đáp nhanh các thắc mắc về ngành Công nghệ thông tin, giảm tối đa thời gian tiêu tốn cần thiết cho việc tư vấn của nhân viên
- Cung cấp thông tin về ngành, các nghề thuộc ngành Công nghệ thông tin
- Tư vấn hỗ trợ để có thể lựa chọn nghề phù hợp với bản thân trong lĩnh vực Công nghệ thông tin
2 Xây dựng ứng dụng hỗ trợ Chatbot
- Cho phép phía trung tâm quản lý các bài viết, hỏi đáp một cách nhanh chóng, dễ dàng
- Cung cấp thông tin về các ngành nghề, cũng như các trường Đại Học có đào tạo về Công nghệ thông tin
- Cung cấp các bài kiểm tra để định hướng bản thân, cũng như bài kiểm tra để xác định ngành, nghề phù hợp
- Cung cấp danh sách tin tức từ mới đến cũ
- Cung cấp danh sách các câu hỏi thường gặp và giải đáp từ trung tâm tư vấn
3 Phạm vi:
Phạm vi môi trường: Ứng dụng di động
Phạm vi chức năng:
- Đối với ChatBot
+ Có khả năng trả lời các câu hỏi về ngành nghề một cách đầy đủ chi tiết
+ Phân tích được yêu cầu và đưa ra tư vấn hợp lý cho người dùng
+ Cung cấp liên hệ trực tiếp nhân viên trung tâm tư vấn khi vấn đề đặt ra ngoài phạm vi của bản thân nó và cập nhật được cách xử lý đối với trường hợp này trong tương lai
+ Cung cấp các thông tin về ngành nghề Công nghệ thông tin
+ ChatBot hiểu được tương đối ngôn ngữ tự nhiên
- Đối với ứng dụng:
+ Cung cấp thông tin mới nhất về ngành nghề Công nghệ thông tin
+ Cung cấp các bài kiểm tra để định hướng bản thân, cũng như bài kiểm tra để xác định ngành nghề phù hợp
Trang 15+ Cung cấp chức năng quản lý tin tức bao gồm đăng tải, sửa và xóa bỏ
+ Phương pháp nghiên cứu:
- Phân tích nhu cầu sử dụng của đối tượng người dùng
- Nghiên cứu tài liệu các công nghệ liên quan
+ Phương pháp công nghệ:
- Tìm hiểu xây dựng chatbot trên mobile app dựa vào DialogFlow
- Xây dựng giao diện mobile app để tương tác với người dùng
- Quản lý source code thông qua Github
- Sử dụng Notion, Google doc,… để quản lý tiến trình và tài liệu
6 Nền tảng công nghệ:
+ Ngôn ngữ: Dart
+ Framework: Flutter
+ Chatbot: Diaflow ChatBot
7 Kết quả mong đợi:
+ Chatbot có khả năng phản hồi nhanh và chính xác ở mức tương đối
+ Ứng dụng di động hoạt động ổn định, có thể xử lý thông tin nhanh chóng
8 Hướng phát triển của đề tài:
+ Tính năng cập nhật thoại chatbot dành cho người dùng
+ Tính năng chuyển đổi gói ngôn ngữ
+ Nâng cấp khả năng xử lý ngôn ngữ tự nhiên của chatbot
Trang 16Thời gian thực hiện từ ngày 07/03/2022 đến ngày kết thúc môn Đồ án 1
1 07/03 – 14/03 - Phân tích và tìm hiểu bài toán
2 14/03 - Hoàn thành đề cương chi tiết
3 15/03 – 20/03 - Xây dựng mục tiêu
- Tìm hiểu các nền tảng công nghệ
4 21/03 – 27/03 - Tìm kiếm Data
5 28/03 – 01/04 - Xây dựng cơ sở dữ liệu
6 01/04 – 04/04 - Xây dựng kiến trúc hệ thống
7 05/04 – 08/04 - Thiết kế giao diện
8 09/04 – 17/04 - Xây dựng Messenger Chatbot với các chức năng
9 18/04 – 24/04 - Chức năng xác thực tài khoản
10 25/04 – 01/05 - Chức năng hiển thị thông tin các nghề
11 01/05 – 08/05 - Chức năng hiển thị thông tin các trường
12 09/05 – 15/05 - Chức năng đọc tin tức
13 16/05 – 22/05 - Chức năng trắc nghiệm bản thân
14 23/05 – 29/05 - Chức năng trắc nghiệm nghề nghiệp
15 30/05 – 06/06 - Kiểm thử phần mềm và chatbot
Trang 1710 Phân công công việc:
Công việc chung − Tìm hiểu công nghệ
− Phân tích yêu cầu
− Lập trình giao diện
− Lập trình chức năng
− Kiểm thử
− Chuẩn bị tài liệu, viết báo cáo
Công việc cá nhân − Xây dựng Chatbot
Trang 19NỘI DUNG
Chương 1: GIỚI THIỆU CHUNG
1.1 Tổng quan đề tài
- Tên ứng dụng: X-Job
- Chủ đề chính: Tư vấn, hỗ trợ định hướng nghề nghiệp trong ngành công nghệ thông tin
- Nền tảng phát triển: Android
- Mô hình phát triển: MVC
- Tích hợp chatbot: DialogFlow
1.2 Lý do chọn đề tài
Trong nhiều năm qua, công tác tư vấn hướng nghiệp cho học sinh đã được tổ chức
với nhiều hình thức khác nhau như cẩm nang “Những điều cần biết” của Bộ Giáo dục
& Đào tạo, các chương trình tư vấn hướng nghiệp trực tiếp tại sân trường hay các buổi tọa đàm chia sẻ kinh nghiệm Những hoạt động này đa phần được tổ chức theo kiểu offline Trong khi đó với xu hướng số hóa trong thời đại công nghiệp 4.0 và những khó khăn từ việc giãn cách do đại dịch Covid-19 gây ra, học sinh, phụ huynh, trường học và những người làm công tác giáo dục đều rất cần một giải pháp hướng nghiệp số hóa, có khả năng giải đáp những thắc mắc của học sinh một cách tức thời, tường tận và đầy đủ
Hướng nghiệp là một quá trình lâu dài, trong khi các chương trình tư vấn hiện nay chỉ đang giải quyết một lát cắt, tại thời điểm cụ thể Chính vì thế chúng em chọn đề tài này, để có thể hỗ trợ các bạn học sinh, cung cấp nguồn thông tin và công cụ tin tưởng
để hỗ trợ cho việc tự tìm hiểu bản thân, ngành nghề, đồng thời hỗ trợ tư vấn các bạn
để kịp thời tháo gỡ những băn khoăn của các bạn về tương lai nghề nghiệp đặc biệt là ngành Công nghệ thông tin
Trang 20- Đối với ChatBot
+ Có khả năng trả lời các câu hỏi về ngành nghề một cách đầy đủ chi tiết
+ Phân tích được yêu cầu và đưa ra tư vấn hợp lý cho người dùng
+ Cung cấp liên hệ trực tiếp nhân viên trung tâm tư vấn khi vấn đề đặt ra ngoài phạm vi của bản thân nó và cập nhật được cách xử lý đối với trường hợp này trong tương lai
+ Cung cấp các thông tin về ngành nghề Công nghệ thông tin
+ ChatBot hiểu được tương đối ngôn ngữ tự nhiên
- Đối với ứng dụng:
+ Cung cấp thông tin mới nhất về ngành nghề Công nghệ thông tin
+ Cung cấp các bài kiểm tra để định hướng bản thân, cũng như bài kiểm tra để xác định ngành nghề phù hợp
+ Cung cấp chức năng quản lý tin tức bao gồm đăng tải, sửa và xóa bỏ
Trang 21Chương 2: CƠ SỞ LÝ THUYẾT
2.1.2 Tính năng tiêu biểu
+ Cung cấp công cụ hiệu quả: Dart bao gồm các công cụ phân tích mã, các plugin môi trường phát triển tích hợp (IDE) và các gói hệ sinh thái lớn
+ Khả năng thu gom rác: Nó quản lý hoặc xử lý việc cấp phát bộ nhớ (bộ nhớ chủ yếu
bị chiếm bởi các đối tượng lỗi thời)
+ Nhập Ghi chú (tùy chọn): Điều này dành cho những người dùng cần bảo mật và
Trang 22+ Có hỗ trợ Typed tĩnh: Chữ ký kiểu là tùy chọn, nhưng phi tiêu là kiểu an toàn và sử dụng suy luận kiểu để phân tích kiểu thời gian chạy Chức năng này rất quan trọng để tìm lỗi thời gian biên dịch
+ Tính di động: Ngoài tính năng dựa trên web (được chuyển sang JavaScript), tính năng này có thể được biên dịch nguyên bản sang mã ARM và x86
2.1.3 Sự phát triển của Dart
Dart được công bố vào năm 2011 và đã phát triển kể từ đó Dart được phát hành đều đặn vào năm 2013, với những thay đổi lớn được đưa vào bản phát hành Dart 2.0 vào cuối năm 2018
Trong khi tập trung vào phát triển web độc lập với mục đích chính là thay thế JavaScript, Dart hiện đang tập trung vào lĩnh vực phát triển di động cũng như Flutter
Nó đã cố gắng giải quyết một vấn đề về JavaScript: JavaScript không mang lại sự mạnh mẽ mà nhiều ngôn ngữ thống nhất cung cấp, vì vậy Dart muốn mang đến một phiên bản kế thừa tốt hơn cho JavaScript
2.1.4 Tại sao Flutter sử dụng Dart
Flutter nhằm mục đích trở thành người thay đổi cuộc chơi trong phát triển ứng dụng dành cho thiết bị di động, cung cấp tất cả các công cụ cần thiết cho nhà phát triển để tạo ra các ứng dụng tuyệt vời mà không có nhược điểm về hiệu suất và khả năng mở rộng Trong cấu trúc cốt lõi của nó, Flutter có nhiều khái niệm tập trung vào hiệu suất ứng dụng và giao diện người dùng Để cung cấp những gì tốt nhất của thế giới phát triển với hiệu suất cao so với các SDK gốc chính thức, Flutter sử dụng sự hỗ trợ của Dart để cung cấp các công cụ đóng góp vào năng suất của nhà phát triển trong giai đoạn phát triển và xây dựng các ứng dụng được tối ưu hóa để xuất bản
Trang 23Flutter bao gồm hai thành phần
SDK (Bộ phát triển phần mềm): Đây là tập hợp các công cụ giúp bạn phát triển ứng dụng của mình Bao gồm các công cụ để biên dịch mã thành mã máy gốc (mã cho iOS
và Android)
Framework (thư viện giao diện người dùng dựa trên widget): Đây là tập hợp các thành phần giao diện người dùng (UI) có thể tái sử dụng (Button, Text Inputs, Slider, v.v.)
2.2.2 Lợi ích của Flutter
Thời gian phát triển nhanh hơn: Flutter giúp bạn phát triển ứng dụng nhanh hơn Bạn
Trang 24duy nhất của Flutter Bạn chỉ cần viết mã một lần thay vì phải viết mã riêng cho từng
hệ điều hành Do đó, nó tiết kiệm chi phí và cực kỳ hiệu quả
Tự do tùy chỉnh và kết xuất nhanh hơn: Flutter có kiến trúc phân lớp cho phép bạn tự
do tùy chỉnh các phần tử giao diện người dùng Đặc biệt, giao diện người dùng của Flutter không yêu cầu các thành phần giao diện người dùng dành riêng cho nền tảng Flutter có cách tiếp cận rất đơn giản và hiệu quả, giúp giao diện người dùng nhất quán trên nhiều nền tảng
Tính năng Hot Reload: Tính năng Hot Reload được coi là một tính năng nổi bật và mang tính cách mạng của Flutter Khi sử dụng Hot Reload, có thể sửa đổi mã và xem chúng trong thời gian chạy trong bản xem trước ứng dụng Không cần phải biên dịch lại mã mỗi lần, thêm các tính năng và sửa lỗi nhanh hơn cho phép bạn tự do thử nghiệm với các giao diện người dùng khác nhau khi bạn xây dựng Ngoài ra, không bị mất trạng thái, trên trình giả lập, trình mô phỏng và thiết bị dành cho iOS và Android khi tải lại lần thứ hai
Tương đương với hiệu suất ứng dụng gốc: Trải nghiệm người dùng tốt sẽ mang lại thành công cho ứng dụng của bạn, trong khi hiệu suất kém sẽ ảnh hưởng nghiêm trọng đến trải nghiệm người dùng trong ứng dụng Các ứng dụng dành cho thiết bị di động được phát triển bằng Flutter sẽ không thể phân biệt được với các ứng dụng được xây dựng bằng mã gốc Trên thực tế, các ứng dụng Flutter có thể hoạt động tốt hơn trong các tình huống giao diện người dùng phức tạp Vì Flutter không dựa vào cầu nối JavaScript hay bất kỳ mã trung gian nào mà được tích hợp trực tiếp vào mã máy Điều này giúp loại bỏ các lỗi hiệu suất có thể xảy ra
Tài liệu tốt và cộng đồng mạnh: Flutter có nhiều ưu điểm hơn nhiều framework khác nên thu hút nhiều nhà phát triển, tạo ra một cộng đồng tích cực có thể cung cấp hoặc
hỗ trợ lẫn nhau.cung cấp hoặc hỗ trợ lẫn nhau
2.2.3 Nhược điểm của Flutter
Không ổn định: Flutter là một trong những khung công tác mới nhất và luôn phát triển Nhiều thư viện của nó cần được kiểm tra trước khi chúng hoạt động ổn định Vì vậy, cần có thời gian để Flutter phát huy hết tiềm năng của một hệ điều hành
Trang 25Kích thước tệp lớn: Kích thước tệp lớn là một nhược điểm khi sử dụng Flutter Các ứng dụng được tạo bằng Flutter rất nặng, vì vậy chúng mất nhiều thời gian để khởi động hoặc tải Điều này có thể dẫn đến hiệu suất kém và trải nghiệm người dùng kém Thay đổi và cập nhật trong framework: Vì Flutter là một khuôn khổ tương đối mới, nên thường có những thay đổi hoặc cập nhật có thể ảnh hưởng đến sự phát triển Vì vậy, có thể khó để duy trì mã khi nó thay đổi quá nhanh
Thiếu hướng dẫn phát triển tiêu chuẩn: Các framework ổn định có các hướng dẫn bằng văn bản dễ phát triển hơn Flutter mới, thiếu các nguyên tắc như vậy, sẽ gặp khó khăn trong việc xây dựng các ứng dụng phức tạp
Bổ sung thường xuyên ngôn ngữ Dart: Theo một số khảo sát, số lượng lập trình viên biết đến Dart không lớn, và nhiều người cho rằng khi học xong ngôn ngữ Dart, các lập trình viên có thể liên kết với Dart trong lĩnh vực phát triển ứng dụng di động Vì vậy vấn đề chuyển đổi linh hoạt giữa JS hoặc Python hoặc có thể chuyển đổi linh hoạt giữa front, back hay AI… sẽ không còn nữa
2.3 Tìm hiểu về Firebase
Hình 2.3-1 Firebase
Trang 262.3.1 Giới thiệu về Firebase
Firebase là dịch vụ cơ sở dữ liệu hoạt động trên nền tảng đám mây (Cloud) Đi kèm với đó là hệ thống máy chủ mạnh mẽ của Google Chức năng chính của hệ thống là giúp người dùng lập trình ứng dụng bằng cách đơn giản hóa các thao tác với cơ sở dữ liệu
2.3.2 Lịch sử hình thành
Năm 2011, James Tamplin và Andrew Lee cho ra mắt Firebase với tiền thân là Envolve Đây được xem là một nền tảng khá đơn giản chuyên cung cấp các API cần thiết nhằm tích hợp tính năng chat vào trong các trang web
Tháng 4/2021, Firebase được tạo ra ở dạng một công ty riêng biệt là Service với chức năng là Realtime
Backend-as-a-Năm 2014, Google đã chính thức mua lại Firebase và nhanh chóng trở thành một ứng dụng đa năng trên nàng tảng di động và nền tảng web hiện nay
2.3.3 Chức năng của Firebase
2.3.3.1 Firebase Authentication
Hình 2.3-2 Firebase Authentication
Hoạt động quan trọng nhất của Firebase là tạo các bước xác thực người dùng qua email, Facebook, Twitter, GitHub hoặc Google Ngoài ra, hoạt động Xác thực Firebase cũng hỗ trợ xác thực ẩn danh cho các ứng dụng Xác thực Firebase có thể
Trang 27giúp bảo vệ thông tin cá nhân của người dùng Nó cũng đảm bảo rằng tài khoản và thông tin cá nhân của người dùng không bị đánh cắp
2.3.3.2 Cloud Firestore
Hình 2.3-3 Cloud Firestore
Cloud Firestore là cơ sở dữ liệu mới của Firebase được phát triển cho các ứng dụng di động Nó là sự kế thừa của Cơ sở dữ liệu thời gian thực với một mô hình dữ liệu mới, trực quan hơn Cloud Firestore phong phú hơn, nhanh hơn và có khả năng mở rộng cực cao so với cơ sở dữ liệu thời gian thực
Giống như Cơ sở dữ liệu thời gian thực của Firebase, nó đồng bộ hóa dữ liệu của bạn giữa các ứng dụng khách thông qua đăng ký thời gian thực và cung cấp hỗ trợ ngoại tuyến cho thiết bị di động và web Cloud Firestore cũng cung cấp khả năng tích hợp với các sản phẩm Firebase và Google Cloud Platform khác, bao gồm cả Chức năng đám mây
Trang 28Một số điểm mạnh:
Robust : Firebase Storage thực hiện việc upload và download không phụ thuộc vào chất lượng đường truyền mạng hơn nữa các quá trình đó có thể bắt đầu lại khi bị tạm dừng giúp tiết kiệm thời gian và băng thông
Secure: Được tích hợp Firebase Authentication cho việc bảo mật nên dễ dàng quản lý quyền truy cập vào các files
Scalable : Firebase Storage được xây dựng trên nền tảng Google Cloud Platform nên khả năng mở rộng có thể lên đến hàng Petabyte dữ liệu
2.3.4 Ưu điểm
Sử dụng dễ dàng: Những người dùng có thể đăng ký một tài khoản Firebase thông qua tài khoản Google Đồng thời, người cùng cũng có thể sử dụng nền tảng này trong quá trình phát triển ứng dụng một cách đơn giản nhất
Trang 29Tốc độ phát triển nhanh: Ưu điểm tiếp theo chính là Firebase hỗ trợ cho việc phát triển ứng dụng rất nhanh chóng Điều này sẽ giúp lập trình viên giảm bớt được thời gian để phát triển cũng như tiếp thị ứng dụng
Cung cấp nhiều dịch vụ: Firebase còn cung cấp đa dịch vụ cho mục đích phát triển trang web Người dùng có thể lựa chọn database Firestore hoặc Realtime theo đúng ý muốn của mình
Nền tảng cho Google phát triển: google firebase là gì? Firebase được Google mua lại
và trở thành một phần của Google Ứng dụng này sẽ khai thác được triệt để sức mạnh cũng như các dịch vụ hiện đang sẵn có của Google
Giao diện người dùng được chú trọng: Firebase sẽ cho phép các lập trình viên tập trung hơn vào việc phát triển giao diện của người dùng thông qua kho Backend mẫu
Theo dõi lỗi: Đây là một công cụ để phát triển cũng như khắc phục lỗi vô cùng tuyệt vời Nhờ vậy khi sử dụng, bạn không cần lo lắng mình sẽ để sót lỗi
Chức năng sao lưu: cách sử dụng firebase sao lưu một cách thường xuyên và đảm bảo tính sẵn có Đồng thời, chức năng này cũng giúp cho thông tin và dữ liệu được bảo mật một cách an toàn nhất
2.3.5 Nhược điểm
Firebase không là mã nguồn mở: Điều này sẽ giúp cho ứng dụng trở thành một lựa chọn không quá tối ưu đối với nhiều nhà phát triển Người dùng không thể sửa đổi được mã nguồn Firebase
Trang 30Người dùng không truy cập được mã nguồn: Đối với những ứng dụng lớn thì việc chuyển đổi sang các nhà cung cấp khác thực sự không dễ dàng Để làm được điều này thì toàn bộ Backend cần phải được xây dựng lại từ đầu
Nền tảng không hoạt động nhiều quốc gia: Firebase chính là một Subdomain của Google.Trang web chính thức của Firebase hiện tại đang bị chặn ở nhiều quốc gia trên thế giới, trong đó có cả Trung Quốc
Firebase chỉ hoạt động với CSDL NoSQL: Người dùng sẽ không thể xử lý được dữ liệu một cách nhanh chóng Firebase chỉ sử dụng JSON và hầu như không có SQL Chính vì vậy, để di chuyển từ cơ sở dữ liệu sẽ không hề dễ dàng
Firebase chỉ chạy trên Google Cloud: Firebase trở thành một phần của Google và tất
cả cơ sở hạ tầng của ứng dụng đều hoạt động trên Google Cloud Người dùng không thể chạy ứng dụng trên những đơn vị cung cấp đám mây khác
Truy vấn khám chậm: Không phải các cơ sở dữ liệu đều phù hợp cho mọi trường hợp
và tất nhiên Cloud Firestore cũng không là ngoại lệ Điều này khiến bạn rất mất thời gian khi sử dụng ứng dụng
Các dịch vụ cung cấp không phải đều miễn phí: Không phải tất cả các dịch vụ được cung cấp đều miễn phí Các chức năng trên đám mây sẽ chỉ có thể khả dụng trên gói Blaze và dĩ nhiên người dùng cũng không thể sử dụng được các dịch vụ ở trong gói Spark
Giá sử dụng dịch vụ Firebase khá cao: Firebase sẽ cung cấp cho người dùng rất nhiều tính năng hữu ích nhưng giá thành của chúng cũng cao hơn so với nhà cung cấp IaaS thuần túy
Thiếu hợp đồng doanh nghiệp: Firebase không có những tùy chọn Dedicated Servers hoặc các hợp đồng doanh nghiệp Để có thể sử dụng được Firebase chính là sử dụng cấu trúc Serverless ít linh hoạt hơn
Không cung cấp API GraphQL: Ứng dụng không cung cấp API GraphQL tương tự như một phần của quá trình thiết lập tiêu chuẩn Mặc dù còn có những giải pháp thay thế khác thế nhưng REST vẫn là một tùy chọn mặc định của nền tảng này
Trang 312.4.2 Git
- Là công cụ giúp quản lý source code tổ chức theo dạng dữ liệu phân tán
- Giúp đồng bộ source code của team lên 1 server
- Hỗ trợ các thao tác kiểm tra source code trong quá trình làm việc (diff, check modifications, show history, merge source, …)
2.4.3 Chức năng
GitHub được coi là một mạng xã hội dành cho lập trình viên lớn nhất và dễ dùng nhất với các tính năng cốt lõi như:
Trang 32- Watch project: theo dõi hoạt động của project của người khác Xem quá trình người ta phát triển phần mềm thế nào, project phát triển ra sao
- Follow user: theo dõi hoạt động của người khác
Có 2 cách tiếp cận GitHub: Tạo project của riêng mình Contribute cho project có sẵn: fork project có sẵn của người khác, sửa đổi, sau đó đề nghị họ cập nhật sửa đổi của mình (tạo pull request)
2.4.4 Lợi ích
- Quản lý source code dễ dàng
- Tracking sự thay đổi qua các version
- Github giúp cải thiện kỹ năng code, thậm chí là tracking bug
- Github là một kho tài nguyên tuyệt vời
- Mở rộng mối quan hệ
Chương 3: CHATBOT: DIALOGFLOW
3.1 Khái niệm Dialogflow
Hình 3.1-1 Dialog Flow
Dialogflow là một nền tảng xử lý ngôn ngữ tự nhiên (NLP) có thể được sử dụng để xây dựng các ứng dụng và trải nghiệm trò chuyện cho khách hàng của công ty bằng nhiều ngôn ngữ khác nhau và trên nhiều nền tảng Sản phẩm do Google cung cấp cho phép các nhà phát triển tạo giao diện hội thoại dựa trên văn bản và thoại để trả lời các truy vấn của khách hàng bằng các ngôn ngữ khác nhau
Trang 33Ví dụ: một công ty có thể sử dụng Dialogflow để tạo bot nhắn tin phản hồi các truy vấn của khách hàng trong các nền tảng như Alexa Voice Services (AVS), Google Assistant, Facebook Messenger, Slack và một số tích hợp nhắn tin khác
Dialogflow là công cụ trò chuyện phổ biến nhất được sử dụng để tạo chức năng cho các thiết bị có Trợ lý Google Công ty trước đây được gọi là API.AI và được Google mua lại vào năm 2016 Sau đó nó được đổi tên thành Dialogflow
Ngoài ra, Dialogflow có thể phân tích nhiều loại đầu vào từ khách hàng của bạn, bao gồm đầu vào văn bản hoặc âm thanh (như từ điện thoại hoặc bản ghi âm giọng nói)
Nó cũng có thể trả lời khách hàng của bạn theo một số cách, thông qua văn bản hoặc bằng lời nói tổng hợp
và dịch vụ của bạn có thể hiểu được Bạn thiết kế và xây dựng Dialogflow Agent để
xử lý các loại hội thoại cần thiết cho hệ thống của bạn
Dialogflow Agent tương tự như đại lý trung tâm cuộc gọi của con người Bạn đào tạo
cả hai để xử lý các tình huống hội thoại dự kiến và việc đào tạo của bạn không cần quá rõ ràng
Đại lý cũng đóng vai trò là vùng chứa cấp cao nhất cho cài đặt và dữ liệu:
Cài đặt agent cho các tùy chọn ngôn ngữ, cài đặt học máy và các cài đặt khác kiểm
soát hành vi của tác nhân của bạn
Intents phân loại ý định của người dùng cuối cho mỗi lượt trò chuyện
Entities để xác định và trích xuất dữ liệu cụ thể từ các biểu thức của người dùng cuối Knowledge để phân tích cú pháp tài liệu (ví dụ: Câu hỏi thường gặp) và tìm câu trả
Trang 34Integrations cho các ứng dụng chạy trên thiết bị hoặc dịch vụ trực tiếp xử lý các
tương tác của người dùng cuối cho bạn (ví dụ: Trợ lý Google)
Fulfillments để kết nối dịch vụ của bạn khi sử dụng tích hợp
3.2.2 Intents
Intents phân loại ý định của người dùng cuối cho một lượt trò chuyện Đối với mỗi tác nhân, bạn xác định nhiều ý định, nơi các ý định kết hợp của bạn có thể xử lý một cuộc trò chuyện hoàn chỉnh Khi người dùng cuối viết hoặc nói điều gì đó, được gọi là biểu thức người dùng cuối, Dialogflow đối sánh biểu thức người dùng cuối với mục đích tốt nhất trong tác nhân của bạn Đối sánh một ý định còn được gọi là phân loại ý định
Ví dụ: bạn có thể tạo một tác nhân thời tiết có thể nhận ra và trả lời các câu hỏi của người dùng cuối về thời tiết Bạn có thể sẽ xác định ý định cho các câu hỏi về dự báo thời tiết Nếu người dùng cuối nói "Dự báo là gì?", Dialogflow sẽ khớp biểu thức của người dùng cuối đó với mục đích dự báo Bạn cũng có thể xác định ý định của mình
để trích xuất thông tin hữu ích từ biểu thức của người dùng cuối, chẳng hạn như thời gian hoặc vị trí cho dự báo thời tiết mong muốn Dữ liệu được trích xuất này rất quan trọng để hệ thống của bạn thực hiện truy vấn thời tiết cho người dùng cuối
Hình 3.2-1 Intents
Intents cơ bản bao gồm những điều sau:
Training phrases: Đây là những cụm từ ví dụ cho những gì người dùng cuối có thể nói Khi một biểu thức của người dùng cuối giống với một trong những cụm từ này, Dialogflow sẽ khớp với mục đích Bạn không phải xác định mọi ví dụ có thể, vì học máy tích hợp của Dialogflow mở rộng trên danh sách của bạn với các cụm từ tương tự khác
Action: Bạn có thể xác định một hành động cho từng ý định Khi một ý định được khớp, Dialogflow cung cấp hành động cho hệ thống của bạn và bạn có thể sử dụng
Trang 35hành động đó để kích hoạt các hành động nhất định được xác định trong hệ thống của bạn
Parameters: Khi một ý định được so khớp trong thời gian chạy, Dialogflow cung cấp các giá trị được trích xuất từ biểu thức người dùng cuối dưới dạng tham số Mỗi tham
số có một kiểu, được gọi là kiểu thực thể, cho biết chính xác cách dữ liệu được trích xuất Không giống như đầu vào thô của người dùng cuối, các tham số là dữ liệu có cấu trúc có thể dễ dàng được sử dụng để thực hiện một số logic hoặc tạo phản hồi
Responses: Bạn xác định câu trả lời bằng văn bản, lời nói hoặc hình ảnh để trả lại cho người dùng cuối Những điều này có thể cung cấp cho người dùng cuối câu trả lời, yêu cầu người dùng cuối cung cấp thêm thông tin hoặc chấm dứt cuộc trò chuyện
Sơ đồ sau đây cho thấy quy trình cơ bản để đối sánh intents và phản hồi với người dùng cuối:
Hình 3.2-2 Sơ đồ tìm kiếm intent
Một intents phức tạp hơn cũng có thể chứa những điều sau:
Contexts: Các ngữ cảnh của dòng thoại tương tự như ngữ cảnh ngôn ngữ tự nhiên Nếu một người nói với bạn "họ có màu da cam", bạn cần ngữ cảnh để hiểu người đó đang đề cập đến điều gì Tương tự, để Dialogflow xử lý một biểu thức người dùng cuối như vậy, nó cần được cung cấp ngữ cảnh để khớp chính xác với một ý định
Trang 36dữ liệu tùy chỉnh Ví dụ: bạn có thể xác định một thực thể rau có thể khớp với các loại rau có sẵn để mua với đại lý cửa hàng tạp hóa
Có một số tùy chọn đối tượng thay đổi hành vi của đối sánh đối tượng và trích xuất dữ liệu Các tùy chọn này được cấu hình trước cho các thực thể hệ thống, vì vậy bạn không thể thay đổi chúng cho các thực thể hệ thống Tuy nhiên, bạn có thể thay đổi chúng cho các thực thể tùy chỉnh của riêng mình Bạn có thể tạo các loại thực thể khác nhau, tùy thuộc vào các tùy chọn đã chọn:
• Map entity: cung cấp một map từ các giá trị tham chiếu đến các từ đồng nghĩa cho mỗi giá trị tham chiếu Mỗi mục nhập map entity chứa một giá trị tham chiếu duy nhất và danh sách các từ đồng nghĩa
• List entity: cung cấp một danh sách các mục nhập thực thể giá trị đơn lẻ Chúng không có giá trị tham chiếu và từ đồng nghĩa
• Composite entity (một loại thực thể danh sách đặc biệt): Composite entity là một loại thực thể danh sách đặc biệt Các mục nhập thực thể cho các thực thể danh sách thường chứa các từ hoặc cụm từ đơn giản, nhưng chúng cũng có thể chứa các loại thực thể khác Khi một loại thực thể được tham chiếu trong một loại thực thể khác, tham chiếu được gọi là bí danh Khi một thực thể danh sách chứa các bí danh cho các loại thực thể khác, nó được gọi là một composite entity
• Regexp entity: Với các regexp entity, bạn có thể cung cấp các biểu thức chính quy để đối sánh
Ngoài ra còn có hai tùy chọn không xác định loại thực thể, nhưng ảnh hưởng đến hành
vi của đối sánh thực thể:
Trang 37• Automated expansion: Bạn có thể bật tính năng mở rộng tự động cho một loại thực thể tùy chỉnh Khi được bật, tác nhân của bạn có thể nhận ra các giá trị chưa được cung cấp rõ ràng
• Fuzzy matching: Bạn có thể bật fuzzy matching cho một thực thể tùy chỉnh Khi kích hoạt đối sánh mờ, thứ tự của các từ trong một giá trị hoặc từ đồng nghĩa không quan trọng
3.2.4 Vấn đề xử lý Chatbot
Hình 3.2-3 Quy trình xử lý Chatbot
1 Người dùng cuối nhập hoặc nói một biểu thức
2 Dialogflow đối sánh biểu thức người dùng cuối với một ý định và trích xuất các tham số
3 Dialogflow gửi thông báo yêu cầu webhook tới dịch vụ webhook của bạn Thông báo này chứa thông tin về ý định phù hợp, hành động, các tham số và phản hồi được xác định cho ý định
4 Dịch vụ của bạn thực hiện các hành động nếu cần, như truy vấn cơ sở dữ liệu hoặc lệnh gọi API bên ngoài
5 Dịch vụ của bạn sẽ gửi một tin nhắn phản hồi webhook tới Dialogflow Thông báo này chứa phản hồi sẽ được gửi đến người dùng cuối
6 Dialogflow gửi phản hồi đến người dùng cuối
7 Người dùng cuối nhìn thấy hoặc nghe thấy phản hồi
Trang 383.3 Sơ đồ kịch bản đối thoại
Hình 3.3-1 Sơ đồ Intent trong Dialogflow Chatbot
Bảng 3.3-1 Danh sách intents
1 Tư vấn công ty Tư vấn các công ty chuyên về ngành công
nghệ thông tin
2 Khái niệm ngành Khái niệm về ngành công nghệ thông tin
3 Tố chất ngành Tìm hiểu tố chất cần có của ngành công nghệ
thông tin
4 Tìm hiểu bản thân Tư vấn tìm hiểu bản thân
Trang 395 Tư vấn trường Tư vấn các trường có đào tạo ngành công
nghệ thông tin
6 Tư vấn ngành Tư vấn các ngành công nghệ thông tin
7 Tư vấn nghề Tư vấn các nghề của ngành công nghệ thông
tin
12 MMT&TTDL Tư vấn ngành mạng máy tính và truyền
thông dữ liệu
19 Công nghệ tri thức & Máy
22 Full Stack Dev Tư vấn nghề full stack dev
23 DevOps Engineer Tư vấn nghề devops engineer
24 Software Architect Tư vấn nghề software architect
25 Product Manager Tư vấn nghề product manager
26 Bridge System Engineer Tư vấn nghề bridge system engineer
27 Cloud Architect Tư vấn nghề cloud architect
Trang 4029 AI Engineer Tư vấn nghề ai engineer
sẽ được lưu dữ trên database
View: giao diện người dùng, nơi người dùng có thể lấy được thông tin dữ liệu của MVC thông qua các công thức truy vấn và ghi lại hoạt động của người dùng để tương tác với Controller
Controller: xử lý yêu cầu từ người dùng thông qua View Từ đó, Controller gửi dữ liệu hợp lý đến người dùng bằng các kết nối đến Model và trưng bày nó trên View cho người dùng
Hình 4.1-1 Sơ đồ mô hình MVC