ĐẠI HỌC QUỐC GIA TP. HỒ CHÍ MINH
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN
KHOA CÔNG NGHỆ PHẦN MỀM
Hồ Trung Nhân – 19520797
Nguyễn Quang Gia Bảo – 19521251
ĐỒ ÁN 1
XÂY DỰNG ỨNG DỤNG CHATBOT
HỖ TRỢ TƯ VẤN LỰA CHỌN BẤT ĐỘNG SẢN
BUIDING CHATBOT APPLICATION
TO SUPPORT CONSULTING REAL ESTATE SELECTION
GIẢNG VIÊN HƯỚNG DẪN
Thạc sĩ: Trần Anh Dũng
TP. HỒ CHÍ MINH, 2021
ĐẠ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 Lập - Tự Do - Hạnh Phúc
CÔNG NGHỆ THÔNG TIN
TP. HCM, ngày….. tháng ….. năm 2021
ĐỀ CƯƠNG CHI TIẾT
TÊN ĐỀ TÀI: Xây dựng ứng dụng Chatbot hỗ trợ tư vấn lựa chọn bất động sản
TÊN ĐỀ TÀI (TIẾNG ANH): Building Chatbot application to support consulting
estate selection
Cán bộ hướng dẫn: ThS. Trần Anh Dũng
Thời gian thực hiện: Từ ngày 7/10/2021 đến ngày 21/12/2021
Sinh viên thực hiện:
Nguyễn Quang Gia Bảo – 19521251
Hồ Trung Nhân– 19520797
Nội dung đề tài
1. Lý do chọn đề tài:
Bất Động Sản chưa bao giờ ngành hết “hot” trên thị trường Thế Giới nói
chung và Việt Nam nói riêng. Bất Động Sản luôn là điểm đến thu hút rất nhiều nhà
đầu tư với mong muốn làm giàu. Ngành đầu tư Bất Động Sản là nơi sản sinh ra
nhiều tỷ phú nhất, đây là ngành giúp bạn nhanh chóng kiếm được số tiền khổng lồ
nếu bạn có chiến lược tốt. Vì thế ngành Bất động Sản luôn là ngành thu hút được
nhiều nhân tài tham gia. Với người bán, Bất động sản hiện đang được nhiều người
săn đón, đây là một cơng cụ kiếm tiền một hiệu quả, bị động mà bạn không cần
phải bỏ nhiều cơng sức.
Tình trạng hiện nay:
+ Một số chatbot trả lời bằng cách spam tin nhắn gây lost focus người dùng.
+ Một số chatbot khác lại lựa chọn trả lời toàn bộ nội dung về một chủ đề,
trong khi thực tế người dùng không cần nhiều thông tin đến thế.
+ Chưa có hoặc rất ít cơng cụ hỗ trợ mơ tả trực quan sinh động
+ Khó khăn hoặc mất thời gian trong việc tìm kiếm thơng cần thiết
+ Mất tập trung vì các lý do khác
Chính vì vậy việc tìm kiếm mua bán, thuê bất động sản, là một việc hết sức
cần thiết để người bán/cho thuê / mua được thuận lợi. Để đáp ứng những nhu cầu
đó, nhóm em quyết định chọn đề tài này, phát triển một ứng dụng cung cấp nhanh
chóng thơng tin về phía trung tâm và tích hợp chatbot hỗ trợ tự động tư vấn bất
động sản.
2. Mục tiêu: bao gồm 2 mục tiêu chính:
+ Xây dựng chatbot:
+ FAQ giải đáp nhanh các thắc mắc chung, giảm tối đa thời gian tiêu tốn cần
thiết cho việc tìm kiếm khơng cần thiết.
+ Cung cấp thơng tin bất động sản theo khu vực.
+ Tư vấn phong thủy đơn giản.
+ Áp dụng xử lý ngôn ngữ tự nhiên để giao tiếp
+ Xây dựng trang web hỗ trợ chatbot: dành cho những tương tác bị giới hạn
bởi API chatbot. Ví dụ như:
+ Tìm kiếm thơng tin khu đất mong muốn theo các tiêu chí của bản thân.
+ Xem các khu đất dựa trên một khu vực nhất định
+ Xem phong thuỷ khu đất theo năm sinh,…
3. Phạm vi:
3
Phạm vi môi trường: Web.
Phạm vi chức năng:
+ Đối với chatbot:
+ Có khả năng cung cấp dữ liệu về bất động sản dựa trên một số yêu cầu của
người dùng
+ Cung có cho người dùng một số tiện ích liên quan đến các vấn đề phong
thủy, tâm linh.
+ Chatbot hiểu được tương đối ngôn ngữ tự nhiên.
+ Đối với ứng dụng Web:
+ Hiển thị các khu đất theo dạng danh sách cho người dùng tiện theo dõi.
+ Tư vấn phong thuỷ dựa trên thông tin người dùng cung cấp
+ Cung cấp dữ liệu từ nguồn có thật (Crawl vd: batdongsan.com.vn)
4. Đối tượng sử dụng:
+
Mua bán bất động sản không chuyên.
+
Dành cho học sinh, sinh viên, người lào động có dự định thuê nhà.
5. Phương pháp thực hiện:
Phương pháp làm việc:
+ Làm việc nhóm 2 thành viên thơng qua cả 2 phương thức online dưới sự
hướng dẫn của giảng viên hướng dẫn.
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 cách thức xây dựng Dialogflow Chatbot.
+ Xây dựng RESTful API để thao tác với dữ liệu.
+ Crawler dữ liệu từ một số nguồn có liên quan.
4
+ Xây dựng giao diện Web để tương tác với người dùng
+ Tìm hiểu bài tốn xử lí ngơn ngữ tự nhiên
6. Nền tảng công nghệ:
+ Frontend: Next/Reactjs
+ Backend: Express / NodeJS.
+ Database: Postgres - SQL.
+ Dialogflow CX
+ Facebook Messenger
+ IDE: Visual Studio Code
7. Kết quả mong đợi:
+ Chatbot có khả năng phản hồi nhanh và chính xác ở mức cao.
+ Trang web có khả năng scale và hoạt động tốt khi số lượng người dùng tăng.
8. Hướng phát triển của đề tài:
- Chức năng tìm kiếm theo yêu cầu và chức năng phân loại
- Tối ưu hóa khả năng SEO
- Quản lí thơng tin cá nhân người dùng và admin
- Có khả năng đang bài phía từ phía của người dùng.
- Thêm tính năng năng giám sát nội dung kết hợp giữa người và AI .
- Phát triển thêm web quản trị viên và một số tính năng liên quan.
- Phát triển tính năng gợi ý dựa vào hành vi của người tìm kiếm.
- Thêm dashboard thống kê, phân tích nhiều dữ liệu hơn cho người dùng.
9. Kế hoạch làm việc:
Thời gian thực hiện từ ngày 7/10/2021 đến ngày 24/12/2021.
Nhóm chia thành 2 giai đoạn cụ thể:
5
Giai đoạn 1: Hoàn thiện các chức năng cơ bản. Giai đoạn này gồm 2 sprint:
Thời gian: 7/10/2021 – 21/11/2021
Sprint 1: Tìm hiểu cơng nghệ.
Sprint 2: Phân tích u cầu và chức năng, xây dựng CSDL, RESTful API,
wireframe giao diện.
Sprint 3: Xây dựng và phát triển ứng dụng để thực hiện các chức năng ở
Sprint
Thời gian
Sprint 1 7/10/2021
Công việc
- Lựa chọn đề tài.
– 29/10/2021 - Tìm hiểu cơng nghệ.
- Tìm hiểu cách crawler dữ liệu.
- Khảo sát các ứng dụng liên quan & nhu cầu người sử
dụng.
- Phân tích yêu cầu và chức năng (conceptual).
- Viết tài liệu đặc tả (conceptual)
Sprint 2 30/10/2021 – - Xây dựng Crawler
7/11/2021
- Xây dựng module, CSDL
- Xây dựng DialogFlow Chatbot
- Xây dựng NodeJS Server.
- Tìm và fix lỗi.
Sprint 3 7/11/2021 – 2 - Chatbot với các chức năng cơ bản.
1/11/2021
- Wireframe giao diện.
- Xây dựng giao diện Web.
- Triển khai lần 1
6
- Tìm và fix lỗi.
Giai đoạn 2: Hồn thiện các chức năng trong giai đoạn 1, đồng thời xây dựng các
chức nâng cao như xây dựng tìm kiếm, phân loại khu đất trên web.
Giai đoạn này gồm 3 sprint:
Sprint 4: Hoàn thiện các chức năng ở giai đoạn 1.
Sprint 5: Xây dựng các chức mở rộng.
Sprint 6: Triển khai và viết báo cáo.
Sprint
Thời gian
Cơng việc
Sprint 4 22/11/2021– - Hồn thiện các chức năng đã có ở giai đoạn 1.
30/11/2021
Sprint 5 1/11/202116/12/2021
- Tìm và fix lỗi.
- Hồn thiện tính năng hiển thị danh sách.
- Thêm tính năng gợi ý phong thủy.
- Hồn thiện xử lý ngơn ngữ tự nhiên
Sprint 6 17/12/2021
- Triển khai sản phẩm
– 24/12/2021 - Viết báo cáo
9. Phân cơng cơng việc
Cơng việc
Cơng
chung
việc - Phân tích u cầu, chức năng.
- Xây dựng CSDL, RESTful API ,Crawler
- Wireframe giao diện
- Tìm hiểu Xử lí Ngơn Ngữ Tự Nhiên
Nguyễn Quang Gia Bảo
Hồ Trung Nhân
7
Công
việc - Xây dựng Dialogflow
cá nhân
- Backend: CSDL, RESTful API,
Chatbot.
crawler.
- Xử lý ngôn ngữ tự nhiên.
- Frontend: giao diện người dùng.
Xác nhận của CBHD
TP.HCM,ngày 14 tháng 10 năm 2021
(Ký tên và ghi rõ họ tên)
8
GIỚI THIỆU CHUNG
Lý do chọn đề tài
Bất Động Sản chưa bao giờ ngành hết “hot” trên thị trường Thế Giới nói
chung và Việt Nam nói riêng. Bất Động Sản ln là điểm đến thu hút rất nhiều nhà
đầu tư với mong muốn làm giàu. Ngành đầu tư Bất Động Sản là nơi sản sinh ra nhiều
tỷ phú nhất, đây là ngành giúp bạn nhanh chóng kiếm được số tiền khổng lồ nếu bạn
có chiến lược tốt. Vì thế ngành Bất động Sản luôn là ngành thu hút được nhiều nhân
tài tham gia. Với người bán, Bất động sản hiện đang được nhiều người săn đón, đây
là một cơng cụ kiếm tiền một hiệu quả, bị động mà bạn không cần phải bỏ nhiều cơng
sức.
Tính năng mới/ khác biệt
Sau khi tham khảo một số chatbot hỗ trợ bất động sản hiện nay nhóm nhận
thấy các vấn đề sau:
−
Một số chatbot trả lời bằng cách spam tin nhắn gây lost focus người dùng.
−
Một số chatbot khác lại lựa chọn trả lời toàn bộ nội dung về một chủ đề, trong
khi thực tế người dùng khơng cần nhiều thơng tin đến thế.
−
Chưa có hoặc rất ít cơng cụ hỗ trợ mơ tả trực quan sinh động
−
Khó khăn hoặc mất thời gian trong việc tìm kiếm thơng cần thiết
−
Mất tập trung vì các lý do khác
Chính vì vậy việc tìm kiếm mua bán, th bất động sản, là một việc hết sức
cần thiết để người bán/cho thuê / mua được thuận lợi. Để đáp ứng những nhu cầu đó,
nhóm em quyết định chọn đề tài này, phát triển một ứng dụng cung cấp nhanh chóng
thơng tin về phía trung tâm và tích hợp chatbot hỗ trợ tự động tư vấn bất động sản.
Về phần giao diện: Nhóm quyết định sử dụng tương tác chat từ người dùng
là chủ yếu, lấy hiểu ý nghĩa câu nói làm gốc thay vi làm hệ thống button menu chọn
phức tạp.
9
Về phần chức năng:
−
Xây dựng tính năng chatnot
−
Thêm chức năng gợi ý phong thuỷ
Đối tượng nghiên cứu
Khoá luận này hướng đến nghiên cứu các đối tượng sau:
−
Các công nghệ:
+ Front-end: Nest/ReactJS
+ Back-end: H3 / NodeJS.
+ Database: Postgres - SQL
+ Dialogflow CX
+ Facebook Messenger
+ IDE: Visual Studio Code
−
Đối tượng trong phạm vị đề tài hướng đến:
+
Mua bán bất động sản không chuyên.
+
Dành cho học sinh, sinh viên, người lào động có dự định thuê nhà.
Phạm vi nghiên cứu
Phạm vi môi trường: Web.
Phạm vi chức năng:
−
Đối với chatbot:
+ Có khả năng cung cấp dữ liệu về bất động sản dựa trên một số yêu cầu
của người dùng
+ Cung có cho người dùng một số tiện ích liên quan đến các vấn đề phong
thủy, tâm linh.
+ Chatbot hiểu được tương đối ngôn ngữ tự nhiên.
−
Đối với ứng dụng Web:
+ Hiển thị các khu đất theo dạng danh sách cho người dùng tiện theo dõi.
+ Tư vấn phong thuỷ dựa trên thông tin người dùng cung cấp
10
+ Cung cấp dữ liệu từ nguồn có thật (Crawl vd: batdongsan.com.vn)
Phương pháp thực hiện
Phương pháp làm việc:
−
Làm việc nhóm 2 thành viên thông qua cả 2 phương thức online dưới
sự hướng dẫn của giảng viên hướng dẫn.
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 cách thức xây dựng Messenger Chatbot.
−
Xây dựng RESTful API để thao tác với dữ liệu.
−
Crawler dữ liệu từ một số nguồn có liên quan.
−
Xây dựng giao diện Web để tương tác với người dùng
−
Tìm hiểu bài tốn xử lí ngơn ngữ tự nhiên
11
KIẾN THỨC NỀN TẢNG
Tổng quan về kiến trúc mơ hình
Khái niệm
Mơ hình MVC (Model – View – Controller) là một trong những mơ hình kiến
trúc ứng dụng phổ biến nhất. Ban đầu mơ hình này được áp dụng chủ yếu ở các ứng
dụng desktop, nhưng sau này ý tưởng về mơ hình MVC được ứng dụng cho các nền
tảng khác như Web.
Hình 2.1.1-1 Mơ hình MVC
Cấu trúc mơ hình MVC
Tầng xử lý – Controller
Xử lí logic của ứng dụng, là cầu nối giữa tầng View và Model. Hay nói một
cách cụ thể, Controller sẽ nhận yêu cầu được gửi từ View và thực hiện xử lí yêu cầu,
truy vấn hoặc thao tác dữ liệu lên tầng Model. Sau khi xử lý xong, kết quả sẽ được
trả về lại cho tầng View.
12
Tầng logic dữ liệu – Model
Tầng Model là trung gian giữa ứng dụng và hệ quản trị cơ sở dữ liệu để cung
cấp và quản lí mơ hình và các thao tác lên dữ liệu. Thông thường, tầng Model sẽ kết
nối với một hoặc nhiều cơ sở dữ liệu để thực hiện các thao tác lên dữ liệu.
Tầng giao diện – View
Thể hiện giao diện người dùng, là thành phần giao tiếp giữa người dùng (user)
và ứng dụng (application).
Mơ hình MVC trong ứng dụng Web
Với sự phát triển của các công nghệ xây dựng web ở cả Frontend và Backend,
các nhà phát triển có thể xây dựng và phát triển ứng dụng web một cách độc lập
nhưng vẫn đảm bảo được tính kiến trúc của ứng dụng.
Hình 2.1.3-1 Mơ hình MVC trong lập trình Web
13
− Tầng giao diện người dùng (View) sẽ được phát triển độc lập ở phía client sử
dụng các cơng nghệ Frontend như VueJS, ReactJS, … Nói cách khác, client sẽ
được chạy trên 1 server độc lập và có thể tương tác với phía server của backend.
− Tầng xử lí (Controller) và logic dữ liệu (Model) sẽ được phát triển độc lập ở
phía server sử dụng các cơng nghệ Backend như ExpressJS, DotNetCore, Flank,
…
− Sau khi hoàn thành việc phát triển, client sẽ cung cấp 1 bản build hoàn chỉnh để
thêm vào phía Server. Người dùng sẽ yêu cầu thành phần giao diện thơng qua
request gửi đến Server.
PERN Stack
Hình 2.1.3-1 Thành phần của PERN Stack
PERN Stack bao gồm PostgreSQL, Express, React và Node.js. Kết hợp các cơng
nghệ này, người ta có thể xây dựng một ứng dụng web đầy đủ với các hoạt động
CRUD. Mọi người chắc hẳn đã nghe nói về MERN Stack, về cơ bản là một JavaScript
Stack để triển khai phát triển web full-stack và chứa 4 công nghệ, đó là: MongoDB,
Express, React và Node.js. nhưng PostgreSQL dường như đang trở nên phổ biến hơn
vì nó cung cấp hỗ trợ rộng rãi cho tính năng NoSQL, giao dịch và tuân thủ tiêu chuẩn.
14
Tổng quan về Nodejs
Giới thiệu
Hình 2.3.1-1 Kiến trúc của NodeJS
NodeJS là một mã nguồn được xây dựng dựa trên nền tảng Javascript V8
Engine. Nó được xây dựng để chạy trên server.
Javascript là một ngơn ngữ hướng sự kiện, do đó bất cứ điều gì xảy ra trên
server đều tạo ra một sự kiện non-blocking, do vậy nên 1 website sử dụng NodeJS có
thể đáp ứng được việc truy cập cùng lúc một lượng user cực kì lớn.
Vậy NodeJS thích hợp để làm gì. Với các đặc trưng của mình thì NodeJS thích
hợp để xây dựng các ứng dụng thời gian thực, ví dụ như hệ thống chat online hoặc hệ
thơng thơng báo…
Và cũng như nhiều ngơn ngữ chạy phía server khác, NodeJS cũng bắt đầu có
một cộng đồng phát triển rất lớn, nhiều framework sử dụng core NodeJS ra đời, một
trong số các framework phổ biến nhất hiện nay là Express. Chúng ta sẽ cùng tìm hiểu
về framework này phía dưới đây.
Những ứng dụng nên viết bằng Nodejs
Rõ ràng, không phải cứ hot và mới là Nodejs làm gì cũng tốt, ví dụ như một
ứng dụng cần tính ổn định cao, logic phức tạp thì các ngơn ngữ PHP hay Ruby… vẫn
15
là sự lựa chọn tốt hơn. Còn dưới đây là những ứng dụng có thể và nên viết bằng
Nodejs:
• Websocket server: Các máy chủ web socket như là Online Chat, Game
Server…
• Fast File Upload Client: là các chương trình upload file tốc độ cao.
• Ad Server: Các máy chủ quảng cáo.
• Cloud Services: Các dịch vụ đám mây.
• RESTful API: đây là những ứng dụng mà được sử dụng cho các ứng dụng
khác thơng qua API.
• Any Real-time Data Application: bất kỳ một ứng dụng nào có yêu cầu về tốc
độ thời gian thực.
• Micro Services: Ý tưởng của micro services là chia nhỏ một ứng dụng lớn
thành các dịch vụ nhỏ và kết nối chúng lại với nhau. Nodejs có thể làm tốt điều
này.
Lý do sử dụng
• Các ứng dụng Nodejs được viết bằng javascript, ngôn ngữ này là một ngôn
ngữ khá thông dụng. Theo tác giả của ngôn ngữ Javascript, Brendan Eich:
“Javascript có những đặc tính mà làm cho nó rất khác biệt so với các ngơn ngữ
lập trình động cịn lại, cụ thể là nó khơng có khái niệm về đa luồng, tất cả là
đơn luồng và hướng sự kiện.“
• Nodejs chạy đa nền tảng phía Server, sử dụng kiến trúc hướng sự kiện Eventdriven, cơ chế non-blocking I/O làm cho nó nhẹ và hiệu quả.
• Có thể chạy ứng dụng Nodejs ở bất kỳ đâu trên máy Mac – Window – Linux,
hơn nữa cộng đồng Nodejs rất lớn và hồn tồn miễn phí. Các bạn có thể thấy
cộng đồng Nodejs lớn như thế nào tại đây, các package đều hồn tồn free:
• Các ứng dụng NodeJS đáp ứng tốt thời gian thực và chạy đa nền tảng, đa thiết
bị.
16
ExpressJS
Hình 2.3.3-1 ExpressJS
Giới thiệu
•
Express js là một Framework nhỏ, nhưng linh hoạt được xây dựng trên nền
tảng của Nodejs. Nó cung cấp các tính năng mạnh mẽ để phát triển web hoặc
mobile.
•
Về các package hỗ trợ: Expressjs có vơ số các package hỗ trợ nên các bạn
không phải lo lắng khi làm việc với Framework này.
•
Về performance: Express cung cấp thêm về các tính năng (feature) để dev lập
trình tốt hơn. Chứ khơng làm giảm tốc độ của NodeJS.
•
Và hơn hết, các Framework nổi tiếng của NodeJS hiện nay đều sử dụng
ExpressJS
Lợi ích
•
Framework giúp cho việc phát triển ứng dụng được rút ngắn đi rất nhiều.
Express được xây dựng dựa trên NodeJs. Vậy nó có ưu điểm gì để ta lựa
chọn cho việc phát triển ứng dụng.
•
Express hỗ trợ việc phát triển ứng dụng theo mơ hình MVC, mơ hình phổ
biến cho việc lập trình web hiện nay.
•
Cho phép định nghĩa Middleware hỗ trợ cho việc tổ chức và tái sử dụng
code.
•
Định nghĩa routes và các request method đến server một cách dễ dàng.
•
Hỗ trợ REST API.
•
Và cịn rất nhiều thứ mà framework này hỗ trợ, còn bây giờ hãy thử cài
đặt và xây dựng một ứng dụng đơn giản nhé.
17
Hệ quản trị cơ sở dữ liệu PostgreSQL
Giới thiệu
Hình 2.5.1-1 PostgreSQL
• PostgreSQL là một hệ thống quản trị cơ sở dữ liệu quan hệ-đối tượng (objectrelational database management system) có mục đích chung, hệ thống cơ sở
dữ liệu mã nguồn mở tiên tiến nhất hiện nay.
• Được thiết kế để chạy trên đa nền tảng.
• Là một phần mềm mã nguồn mở miễn phí. Mã nguồn của phần mềm khả dụng
theo license của PostgreSQL, một license nguồn mở tự do. Theo đó, bạn sẽ
được tự do sử dụng, sửa đổi và phân phối PostgreSQL dưới mọi hình thức.
• Khơng u cầu q nhiều cơng tác bảo trì bởi có tính ổn định cao. Do đó, nếu
bạn phát triển các ứng dụng dựa trên PostgreSQL, chi phí sở hữu sẽ thấp hơn
so với các hệ thống quản trị dữ liệu khác.
Lý do sử dụng
• PostgreSQL sở hữu một hệ tính năng đa dạng giúp hỗ trợ các nhà phát triển
xây dựng app, các nhà quản trị bảo vệ toàn vẹn dữ liệu, và tạo ra một môi
trường chịu lỗi fault-tolerant giúp bạn quản lý dữ liệu bất kể tập dữ liệu lớn
hay nhỏ.
• Bên cạnh hệ thống nguồn mở và miễn phí, PostgreSQL cũng có khả năng mở
rộng tuyệt vời.
• PostgreSQL tuân theo tiêu chuẩn SQL nhưng khơng mâu thuẫn với các tính
năng truyền thống hay có thể dẫn đến các quyết định kiến trúc gây hại.
18
Puppeteer
Giới thiệu
Puppeteer là 1 thư viện Node cung cấp API mức cao để kiểm sốt Chrome
hoặc chương trình chạy trên nhân Chromium bằng DevTools Protocol. Chrome
DevTools Protocol cho phép việc sử dụng các cơng cụ như: instrument, inspect,
debug, profile,...bạn có thể xem thêm về DevTools Protocol tại đây.
Puppeteer mặc định chạy headless, nhưng có thể config để chạy full (nonheadless) Chrome hoặc Chromium. Headless Chrome được Google giới thiệu từ
Chrome version 59 - là 1 cách để chạy trình duyệt Chrome trong mơi trường headless.
Nói cách khác đó là 1 cách thực hiện chạy Chrome mà khơng cần chrome như cách
chúng ta thường mở trình duyệt và duyệt web.
Lý do chọn
• Khả năng crawler dữ liệu mạnh, với headless chrome. Có thể crawler hầu hết
các trang web bao gồm cả những web sử dụng client side rendering (ví dụ :
vuejs ,reactjs ...).
• Hổ trợ đa dạng plugin,...
• Có thể chụp ảnh màn hình.ss
NextJS
Giới thiệu
Nextjs là một React Framework, nó sẽ đặt bạn vào một con đường dễ dàng để xây
dựng React application. Nextjs tích hợp nhiều tính năng như:
•
Pre-rendering, cả static generation (SSG) và server-side rendering (SSR)
•
Tách mã tự động để tải trang nhanh hơn, mỗi page chỉ load những gì cần thiết
cho page đó. Ví dụ khi render trang chủ thì những page khác sẽ không được khởi
tạo, như vậy trang chủ sẽ được load nhanh cho dù website của bạn có cả 100
page.
•
Hỗ trợ css và sass, hỗ trợ bất kì thư viện css, js
19
•
Hỗ trợ refresh page nhanh chóng ở mơi trường development
•
Hồn tồn có thể mở rộng
•
...
Nextjs được sử dụng trên hàng nghìn website và trên rất nhiều website lớn trên
thế giới. Vì vậy cộng đồng hỗ trợ lớn sẽ giúp bạn dễ dàng xây dựng ứng dụng cả mình một
cách nhanh chóng và đầy đủ
Tại sao phải sử dụng NextJS
Như các bạn đã biết, React là một thư viện front-end dùng để xây dựng những
ứng dụng Single Page App (SPA). Các vấn đề gặp phải khi làm việc với react như:
• Cần một trình biên dịch như Webpack hoặc compiler code như Babel
• React khơng tốt cho SEO, bạn cần render ở cả client và server nhưng
nó chỉ có thể xử lý phía client
• Bạn cần viết một số code phía Backend để kết nối dữ liệu với ứng dụng
React của mình.
Tất nhiên bản thân react có thể xử lý được những vấn đề trên nhưng bạn cần
phải có kiến thức sâu và nhiều kinh nghiệm để control, điều này sẽ vất vả cho những
người mới. Vì vậy Nextjs ra đời để giải quyết những vấn đề đó.
20
ReactJS
Giới thiệu
Hình 2.8.1-1 ReactJS
React là thư viện JavaScript phổ biến nhất để xây dựng giao diện người dùng
(UI). Nó cho tốc độ phản hồi tuyệt vời khi user nhập liệu bằng cách sử dụng phương
pháp mới để render trang web.
Components của công cụ này được phát triển bởi Facebook. Nó được ra mắt
như một công cụ JavaScript mã nguồn mở vào năm 2013. Hiện tại, nó đã đi trước các
đối thủ chính như Angular và Bootstrap, hai thư viện JavaScript bán chạy nhất thời
bấy giờ.
Ưu điểm
•
Dễ sử dụng
•
Hỗ trợ Reusable Component
•
Viết component dễ dàng hơn với jsx( bên trong bao gồm html,js,css)
•
Thân thiện với seo.
React Hook
Hooks là tính năng mới được giới thiệu trong phiên bản React 16.8. Nó cho
phép bạn sử dụng trạng thái và các tính năng khác của React mà khơng cần viết một
lớp. Hooks là các chức năng "móc vào" trạng thái React và các tính năng vịng đời
từ các thành phần chức năng. Nó khơng hoạt động bên trong các lớp.
21
Các móc có khả năng tương thích ngược, có nghĩa là nó khơng chứa bất kỳ
thay đổi phá vỡ nào. Ngồi ra, nó khơng thay thế kiến thức của bạn về các khái
niệm React.
Một số react hook thơng dụng :
• useState
• useEffect
• useSelector
• useDispatch
Hình 2.8.3-1 React Hook Flow Diagram
22
TÌM HIỂU VÀ LỰA CHỌN CƠNG NGHỆ ỨNG DỤNG
CHATBOT
Tìm hiểu về chatbot
Chatbot là gì?
Chatbot là một phần mềm có thể giả lập một cuộc hội thoại hoặc trò chuyện
với người dùng bằng ngôn ngữ tự nhiên hoặc các nội dung được lập trình sẵn thơng
qua ứng dụng, website, ứng dụng mobile hoặc thơng qua điện thoại. Chúng hợp lý
hóa các tương tác giữa con người và dịch vụ, nâng cao trải nghiệm của khách hàng.
Đồng thời, chúng cung cấp cho các công ty hoặc cửa hàng cơ hội mới để cải thiện
quy trình tham gia của khách hàng và hiệu quả hoạt động bằng cách giảm chi phí dịch
vụ khách hàng.
Cách thức một chatbot hoạt động:
Hình 3.1.1-1. Cách thức hoạt động của chatbot
Như đã được minh họa trên hình, một chatbot sẽ trả về các phản hồi dựa trên dữ liệu
đầu vào của người dùng.
Tính ứng dụng
Ứng dụng của chatbot hiện nay khá là phổ biến. Hầu hết trong các lĩnh vực về
kinh doanh, các website hầu hết cũng đã có những chatbot đơn giản hỗ trợ trả lời cho
khách hàng những câu hỏi đơn giản. Các ứng dụng nhắn tin phổ biến hiện nay như
Messenger, Discord, Telegram, … cũng đều cho phép tích hợp chatbot. Có thể nói
việc đưa chatbot vào ứng dụng nhắn tin cũng là một phần giúp củng cố và nâng cao
vị thế của ứng dụng để cạnh tranh với các đối thủ khác.
23
Chatbot rất đa dạng về mục đính sử dụng tùy thuộc vào lĩnh vực như:
−
−
−
−
−
−
−
−
Lĩnh vực báo chí
Lĩnh vực tài chính
Lĩnh vực tuyển dụng
Lĩnh vực đầu tư
Lĩnh vực giáo dục
Lĩnh vực giải trí
Lĩnh vực thương mại
…
Tìm hiểu về Facebook Messenger Chatbot
Tổng quan
Facebook Messenger là một ứng dụng trò chuyện của Facebook. Nó cho phép
người dùng Facebook trị chuyện với mọi người trên nhiều nền tảng.
Về số lượng người dùng, theo thống kê ta có bảng đánh giá:
Hình 3.2.1-1. Lượng người sử dụng Facebook Messenger theo thời gian
24
Sơ đồ cho thấy số lượng người dùng tăng rất nhanh theo thời gian. Có thể
chatbot cịn góp một phần quan trọng trong lĩnh vực truyền thơng. Vì rất có thể chat
bot, trí thơng minh nhân tạo trong tương lai, thơng qua Messenger có thể cho bạn biết
về các thơng tin nóng trên mạng xã hội, được nhiều người tìm và chia sẻ tại thời điểm
bạn đưa ra câu hỏi.
Đánh giá
Sau khi đánh giá các nền tảng có thể phát triển Chatbot, chúng tôi lựa chọn Messenger
làm nền tảng chủ yếu vì các lý do sau:
− Lượng người dùng khổng lồ
− Khả năng tùy biến cao
− Giao diện hóa văn bản
− Cho phép can thiệp trực tiếp vào quá trình chatbot vận hành
Giới thiệu về Chatbot Messenger
Hình 3.2.3-1. Chatbot Facebook Messenger
Về mặt kỹ thuật, có thể hiểu đơn giản chatbot là một chương trình được lập
trình sẵn tương tác tự động với người dùng bằng ngôn ngữ tự nhiên dưới giao diện
tin nhắn.
Chatbot Facebook là một phần mở rộng cho chức năng nhắn tin trên trang
Facebook của bạn.
25