Đôi khi một bộ phim chiến tranh và tài liệu cùng kể về 1 sự kiện lịch sử.Với sự phát triển công nghệ ngày nay, đặc biệt trong lĩnh vực máy học, học sâu, nhóm chúng tôi quyết định xây dựn
Trang 1ĐẠ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
NGUYỄN ANH HÀO - 18520716
CHÂU MINH QUANG – 18521290
BÁO CÁO KHÓA LUẬN
XÂY DỰNG TRANG WEB XEM PHIM ONLINE KẾT HỢP
HỆ THỐNG GỢI Ý VÀ CHAT BOT
BUILD A MOVIE WATCHING WEBSITE WITH MOVIE
RECOMMENDATION SYSTEM AND CHATBOT.
KỸ SƯ NGÀNH CÔNG NGHỆ PHẦN MỀM
TP HỒ CHÍ MINH, 2022
Trang 2ĐẠ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
NGUYỄN ANH HÀO - 18520716 CHÂU MINH QUANG – 18521290
BÁO CÁO KHÓA LUẬN
XÂY DỰNG TRANG WEB XEM PHIM ONLINE KẾT HỢP
HỆ THỐNG GỢI Ý VÀ CHAT BOT
BUILD A MOVIE WATCHING WEBSITE WITH MOVIE
RECOMMENDATION SYSTEM AND CHATBOT.
KỸ SƯ NGÀNH CÔNG NGHỆ PHẦN MỀM
GIẢNG VIÊN HƯỚNG DẪN ThS MAI TRỌNG KHANG
TP HỒ CHÍ MINH, 2022
Trang 3THÔNG TIN HỘI ĐỒNG CHẤM KHÓA LUẬN TỐT NGHIỆP
Hội đồng chấm khóa luận tốt nghiệp, thành lập theo Quyết định số………
ngày ……… của Hiệu trưởng Trường Đại học Công nghệ Thông tin.
1 – Chủ tịch.2 – Thư ký
3 – Ủy viên
4 – Ủy viên
Trang 4ĐẠI HỌC QUỐC GIA TP HỒ CHÍ MINH
TRƯỜNG ĐẠI HỌC
CÔNG NGHỆ THÔNG TIN
CỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆT NAM
Độc Lập - Tự Do - Hạnh Phúc
TP HCM, ngày… tháng… năm……
NHẬN XÉT KHÓA LUẬN TỐT NGHIỆP (CỦA CÁN BỘ HƯỚNG DẪN) Tên khóa luận: XÂY DỰNG TRANG WEB XEM PHIM ONLINE KẾT HỢP HỆ THỐNG GỢI Ý VÀ CHAT BOT Nhóm SV thực hiện: Cán bộ hướng dẫn: Nguyễn Anh Hào 18520716 ThS Mai Trọng Khang Châu Minh Quang 18521290 Đánh giá Khóa luận 1 Về cuốn báo cáo: Số trang _ Số chương _ Số bảng số liệu _ Số hình vẽ _ Số tài liệu tham khảo _ Sản phẩm _ Một số nhận xét về hình thức cuốn báo cáo: ………
………
………
………
………
2 Về nội dung nghiên cứu: ………
………
………
………
Trang 5………
………
………
………
………
3 Về chương trình ứng dụng: ………
………
………
………
………
………
………
4 Về thái độ làm việc của sinh viên: ………
………
………
………
………
………
Đánh giá chung: ……… ………
………
………
………
………
………
………
………
Trang 6Điểm từng sinh viên:
Nguyễn Anh Hào:……… /10
Châu Minh Quang:……… /10
Người nhận xét
(Ký tên và ghi rõ họ tên)
Mai Trọng Khang
Trang 7ĐẠI HỌC QUỐC GIA TP HỒ CHÍ MINH
TRƯỜNG ĐẠI HỌC
CÔNG NGHỆ THÔNG TIN
CỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆT NAM
Độc Lập - Tự Do - Hạnh Phúc
TP HCM, ngày… tháng… năm……
NHẬN XÉT KHÓA LUẬN TỐT NGHIỆP (CỦA CÁN BỘ PHẢN BIỆN) Tên khóa luận: XÂY DỰNG TRANG WEB XEM PHIM ONLINE KẾT HỢP HỆ THỐNG GỢI Ý VÀ CHAT BOT Nhóm SV thực hiện: Cán bộ phản biện: Nguyễn Anh Hào 18520716 Châu Minh Quang 18521290 Đánh giá Khóa luận 1 Về cuốn báo cáo: Số trang _ Số chương _ Số bảng số liệu _ Số hình vẽ _ Số tài liệu tham khảo _ Sản phẩm _ Một số nhận xét về hình thức cuốn báo cáo: ………
………
………
………
………
2 Về nội dung nghiên cứu: ………
………
………
………
Trang 8………
………
………
………
………
3 Về chương trình ứng dụng: ………
………
………
………
………
………
………
4 Về thái độ làm việc của sinh viên: ………
………
………
………
………
………
Đánh giá chung: ……… ………
………
………
………
………
………
………
………
Trang 9Điểm từng sinh viên:
Nguyễn Anh Hào:……… /10
Châu Minh Quang:……… /10
Người nhận xét
(Ký tên và ghi rõ họ tên)
Trang 10LỜI CẢM ƠN
Lời cảm ơn đầu tiên, chúng tôi xin dành đến thầy TS Mai Trọng Khang – giảng viên hướngdẫn của chúng tôi trong khóa luận tốt nghiệp này Cảm ơn thầy đã luôn quan tâm, nhắc nhở và tậntình hướng dẫn chúng tôi Cảm ơn thầy vì sự nhiệt huyết bất tận trong quá trình hướng dẫn, sự nhiệthuyết ấy đã cổ vũ và trở thành động lực giúp chúng tôi thực hiện tốt khóa luận
Lời cảm ơn cuối cùng, chúng tôi xin dành cho các anh chị, các bạn, các em trong nhómnghiên cứu đã luôn đồng hành, giúp đỡ và cổ vũ cho chúng tôi trong suốt quá trình thực hiện khóaluận
Trong quá trình thực hiện khóa luận khó tránh khỏi những sai sót, hạn chế, chúng tôi rấtmong nhận được sự nhận xét, góp ý của quý thầy cô và các bạn để chúng tôi có thể tiến xa hơntrong con đường học thuật
Xin chân thành cảm ơn
Thành phố Hồ Chí Minh, ngày 7 tháng 6 năm 2022
Sinh viên thực hiện
NGUYỄN ANH HÀO
CHÂU MINH QUANG
TP.Hồ Chí Minh, ngày 15 tháng 06 năm 2022
Trang 11ĐẠI HỌC QUỐC GIA TP HỒ CHÍ MINH
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN CỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆT NAM Độc Lập - Tự Do - Hạnh Phúc
ĐỀ CƯƠNG CHI TIẾT
TÊN ĐỀ TÀI: XÂY DỰNG TRANG WEB XEM PHIM ONLINE KẾT HỢP HỆ THỐNG GỢI Ý VÀ CHAT BOT
TÊN ĐỀ TÀI (TIẾNG ANH): BUILD A MOVIE WATCHING WEBSITE WITH MOVIE RECOMMENDATION SYSTEM AND CHATBOT.
Cán bộ hướng dẫn: TS MAI TRỌNG KHANG
Thời gian thực hiện:Từ ngày 21/02/2022 đến ngày 11/06/2022
Sinh viên thực hiện:
NGUYỄN ANH HÀO – 18520716
CHÂU MINH QUANG – 18521290
Nội dung đề tài: (Lý do chọn đề tài, các vấn đề của một số ứng dụng hiện nay, mô tả chi tiết mục tiêu, phạm vi, đối tượng sử dụng, điểm nổi bật của ứng dụng, phương pháp thực hiện, nền tảng công nghệ, các tiêu chí khác)
Lý do chọn đề tài:
“Con người là một loài động vật kể chuyện rất nhiều Toàn bộ cuộc đời của chúng ta được xây dựng xung quanh những ý tưởng hư cấu; thần thoại từ thời xa xưa đã được truyền lại cho đến hiện tại; bởi
vì chúng phục vụ các nhu cầu tâm linh – xã hội của chúng ta.”
Ngày nay, phim ảnh xuất hiện mọi ngóc ngách, pha trộn nhiều màu sắc, nội dung tạo thêm
phần đa dạng phong phú Và theo đó nhu cầu thưởng thức phim ảnh hay xem phim
của con người ngày càng lớn Đó cũng là lý do các web xem phim ra
đời, tiêu biểu là Netflix, Disney, HBO…
Tuy nhiên với số lượng phim ảnh càng ngày càng lớn thì việc phân loại để sắp xếp và
quản lý càng ngày càng phức tạp đối với hệ thống lưu trữ phim ảnh số Điều ngày cho thấy
việc phân loại phim tự động rất cần thiết để phục vụ cho việc phân loại và từ đó
khuyến nghị cho người dùng có trải nghiệm tốt hơn.
Thông thường để xác định một bộ phim thuộc thể loại thì cần dựa vào kỹ năng người
xem và tìm hiểu xem nội dung của bộ phim đó được thể hiện ở mô tả một cách ngắn gọn Với các thể loại đặc trưng như phim tình cảm hay kinh dị thì có thể dễ phân biệt được Nhưng một số thể loại
Trang 12như hành động, kịch tính, hay chiến tranh, phim tài liệu thì việc phân loại trở nên phức tạp hơn do các thể loại này hao hao giống nhau Đôi khi một bộ phim chiến tranh và tài liệu cùng kể về 1 sự kiện lịch sử.
Với sự phát triển công nghệ ngày nay, đặc biệt trong lĩnh vực máy học, học sâu, nhóm
chúng tôi quyết định xây dựng mô hình máy học phân loại thể loại cho các bộ phim theo mô tả với ngôn ngữ là tiếng anh kết hợp với hệ thống chat bot trong một trang web xem phim.
Trang web có giao diện trực quan, phù hợp với nhu cầu của đối tượng người dùng.
Trang web gợi ý phim một cách phù hợp cho người dùng.
Ứng dụng chat bot giúp hỗ trợ khách hàng giải quyết các vấn đề phát sinh trước và sau khi đăng ký trở thành thành viên.
Kết hợp hệ thống khuyến nghị phim giúp khách hàng có trải nghiệm tốt và phù hợp nhất khi đến với trang web.
Phạm vi:
Phạm vi môi trường: Web
Phạm vi chức năng:
− Đối với chatbot:
+ Có khả năng giải đáp và trả lời các câu hỏi phổ biến mà khách hàng thường hỏi nhằm
tư vấn cho khách hàng trong việc xem phim.
+ Cung cấp thông tin chi tiết về các phim kèm hình ảnh minh họa.
+ Nhận biết, hiểu và trả lời tương đối ngôn ngữ tự nhiên dạng văn bản.
+ Tích hợp Wikidata API để trả lời trong trường hợp khách hàng đặt các câu hỏi ngoài phạm vi.
− Đối với ứng dụng Web:
Trang 13- Tích hợp đăng nhập, đăng kí cũng như đăng nhập nhanh thông qua Google, Facebook
và dịch vụ gửi link kích hoạt tài khoản khi đăng ký thông qua mail.
-Cho phép tra cứu, tìm kiếm với nhiều thể loại, danh mục tùy chọn và xem phim trực tuyến.
-Hỗ trợ bình luận, chia sẻ thông tin về phim thông qua Facebook.
-Cung cấp chức năng yêu thích phim cũng như lưu danh mục phim yêu thích.
-Cho phép thay đổi thông tin người dùng.
-Cung cấp giao diện admin quản lý với các chức năng thêm/xóa/sửa tương ứng với các loại đối tượng tồn tại trong website (phim, danh mục phim, thể loại phim, người dùng) -Hỗ trợ thống kê về số lượng người dùng thông qua biểu đồ.
− Đối với hệ thống gợi ý: hệ thống bao gồm gợi ý dựa trên nội dung ( content based ) của một phim từ đó tích hợp vào các phần khác nhau trên trang web để tối ưu hóa khả năng
hỗ trợ cho người dùng.
Đối tượng sử dụng:
- Đối tượng trong phạm vi đề tài hướng đến: Khách hàng có nhu cầu tìm kiếm và xem phim Không giới hạn độ tuổi truy cập của đối tượng.
Điểm nổi bật của ứng dụng:
Trang web được xây dựng với giao diện đẹp mắt giúp thu hút người dùng.
Trang web sẽ có thêm chatbot tự động trả lời cho người dùng còn những ứng dụng nổi bật hiện nay hầu như không có chatbot hoặc có chat mà người trực tiếp nói chuyện với người dùng.
Hệ thống đăng nhập, đăng ký và mua gói giúp khách hàng dễ dàng hơn trong việc sử dụng dịch vụ.
Trang web sẽ có hệ thống gợi ý giúp người dùng tìm thấy phim mình thích nhanh hơn.
Kế hoạch thực hiện:
Thời gian thực hiện từ ngày 21/02/2022 đến ngày 19/06/2022.
Nhóm chia thành 4 giai đoạn cụ thể:
Giai đoạn 1 : Hoàn chỉnh trang web hiện tại Giai đoạn này gồm 2 sprint:
Thời gian: 21/02/2022 – 28/03/2022 (5 tuần)
Sprint 1: Lên kế hoạch chi tiết về các sửa đổi, cập nhật cần thiết cho trang web hiện tại.
Trang 14Sprint 2: Triển khai chỉnh sửa ở phía Backend (database, server, ) và ở phía Frontend (update UI, cải thiện UX, loading, ).
Sprint 1 21/02/2022 – 28/02/2022 - Tìm hiểu công nghệ
thêm NodeJS và MongoDB để hiệu chỉnh lại các model của
database
- Lên kế hoạch cho những hạng mục cần sửa chữa, cập nhật.
Sprint 2 01/03/2022 – 28/03/2022 - Xây dựng CSDL và
RESTful API mới
- Triển khai các chỉnh sửa cần thiết sau khi lên
kế hoạch
Giai đoạn 2: Hoàn thành ChatBot Giai đoạn này gồm 2 sprint:
Thời gian: 29/03/2022 – 11/04/2022 (2 tuần)
Sprint 1: Lên kế hoạch cho kịch bản chatbot mới và thực hiện việc training cho chatbot Sprint 2: Triển khai trang web và kết hợp chatbot vào trang web
Sprint 1 29/03/2022 – 05/04/2022 - Lên kế hoạch cho kịch
bản mới.
- Lên danh sách các thông tin dùng cho việc training.
- Thực hiện training.
Trang 15Sprint 2 06/04/2022 – 11/04/2022 - Triển khai trang web lên
heroku để có thể tích hợp chatbot vào trong trang web.
Giai đoạn 3 : Hoàn thành module hệ thống gợi ý Giai đoạn này gồm 3 sprint:
Thời gian: 12/04/2022 – 12/06/2022 (8 tuần)
Sprint 1: Lên kế hoạch chi tiết tìm hiểu về hệ thống gợi ý cũng như đưa ra phương hướng phát triển của hệ thống.
Sprint 2: Thiết kế hệ thống cũng như thu thập hoặc thiết kế data dùng để sử dụng cho hệ thống.
Sprint 3: Triển khai hệ thống tích hợp vào những phần gợi ý phim đã có trên trang web.
Sprint 1 12/04/2022 – 19/04/2022 - Lên kế hoạch chi tiết
tìm hiểu về hệ thống gợi
ý cũng như đưa ra phương hướng phát triển của hệ thống.
Trang 16Thời gian: 13/06/2022 – 19/06/2022 (1 tuần)
Sprint 1: Tổng hợp document cho toàn bộ dự án Chuẩn bị script, slide cho buổi trình bày
Sprint 1 13/06/2022 – 19/06/2022 - Tổng hợp document cho
toàn bộ dự án Chuẩn bị script, slide cho buổi trình bày.
Xác nhận của CBHD
(Ký tên và ghi rõ họ tên)
TP HCM, ngày….tháng … năm…
Sinh viên
(Ký tên và ghi rõ họ tên)
NGUYỄN ANH HÀO
CHÂU MINH QUANG
Trang 17LỜI NÓI ĐẦU
“Con người là một loài động vật kể chuyện rất nhiều Toàn bộ cuộc đời của chúng
ta được xây dựng xung quanh những ý tưởng hư cấu; thần thoại từ thời xa xưa đã được truyền lại cho đến hiện tại; bởi vì chúng phục vụ các nhu cầu tâm linh – xã hội của chúng ta.”
Ngày nay, phim ảnh xuất hiện mọi ngóc ngách, pha trộn nhiều màu sắc, nội dung tạo thêm
phần đa dạng phong phú Và theo đó nhu cầu thưởng thức phim ảnh hay xem phim của con người ngày càng lớn Đó cũng là lý do các web xem phim ra
đời, tiêu biểu là Netflix, Disney, HBO…
Tuy nhiên với số lượng phim ảnh càng ngày càng lớn thì việc phân loại để sắp xếp và
quản lý càng ngày càng phức tạp đối với hệ thống lưu trữ phim ảnh số Điều ngày cho thấy
việc phân loại phim tự động rất cần thiết để phục vụ cho việc phân loại và từ đó khuyến nghị cho người dùng có trải nghiệm tốt hơn.
Thông thường để xác định một bộ phim thuộc thể loại thì cần dựa vào kỹ năng người
xem và tìm hiểu xem nội dung của bộ phim đó được thể hiện ở mô tả một cách ngắn gọn Với các thể loại đặc trưng như phim tình cảm hay kinh dị thì có thể dễ phân biệt được Nhưng một số thể loại như hành động, kịch tính, hay chiến tranh, phim tài liệu thì việc phân loại trở nên phức tạp hơn do các thể loại này hao hao giống nhau Đôi khi một bộ phim chiến tranh và tài liệu cùng kể về 1 sự kiện lịch sử.
Với sự phát triển công nghệ ngày nay, đặc biệt trong lĩnh vực máy học, học sâu, nhóm
chúng tôi quyết định xây dựng mô hình máy học phân loại thể loại cho các bộ phim theo mô tả với ngôn ngữ là tiếng anh kết hợp với hệ thống chat bot trong một
Trang 18trang web xem phim và thực hiện đồ án với đề tài “XÂY DỰNG TRANG WEB XEM
PHIM ONLINE KẾT HỢP HỆ THỐNG GỢI Ý VÀ CHAT BOT”.
Với sự hướng dẫn tận tình của thầy Mai Trọng Khang và những lời góp ý chân thành từ thầy, chúng em đã có những cải thiện tích cực và hoàn thành kịp thời đồ án này Tuy đã
cố gắng hết sức tìm hiểu, phân tích thiết kế và cài đặt hệ thống nhưng chắc rằng khó tránh khỏi những thiếu sót Nhóm chúng em mong nhận được sự thông cảm và góp ý từ quý thầy cô Nhóm chúng em xin chân thành cảm ơn.
Nhóm sinh viên thực hiện
Nguyễn Anh Hào Châu Minh Quang
Trang 192.2.1 Giới thiệu 26 2.2.2 Tạo sao chọn Nodejs để phát triển server 27
2.3 Hệ quản trị cơ sở dữ liệu MongoDB 28
3.3.1 Giới thiệu về Chatbot Facebook: 37
3.3.3.2 Facebook Application: 38
Trang 203.4 Áp dụng công nghệ vào chatbot: 38
Ứng dụng của Machine learning 46
Trang 21Hạn chế 77
CHƯƠNG 1 GIỚI THIỆU CHUNG
Với tinh thần đó, nhóm thực hiện quyết định xây dựng “XÂY DỰNG TRANG WEB XEM
PHIM ONLINE KẾT HỢP HỆ THỐNG GỢI Ý VÀ CHAT BOT” nhằm mục đích mang đến trải
nghiệm xem phim cho người dùng cùng với việc hỗ trợ của chat bot để giúp người dùng dễ dàng
hơn trong việc sử dụng và giúp cho trang web thu hút được nhiều người dùng hơn
Khách hàng chỉ cần với những thao tác đơn giản là có thể những bộ phim phù hợp với nhu cầu củamình
1.2 Tính năng khác biệt
Các trang web hiện nay đa số đều có ý tưởng và phương thức hoạt động tương đồng ở hầu hết
các chức năng như: Tìm kiếm, đánh giá, bình luận, … và không có gì khác biệt cho khách hàng trảinghiệm ở ứng dụng ngoài trừ kết hợp với những trang web khác
Sau quá trình khảo sát thực tế và lắng nghe ý kiến của người dùng, giải pháp nhóm đề ra là thiết
kế trang web khác biệt so với các trang web hiện nay nhưng phải dễ nhìn, dễ sử dụng và thể hiện
được những thông tin cần thiết cho người dùng
Chọn lọc các chức năng tiện dụng nhất của top các ứng dụng lớn hiện nay để đưa vào trang web củamình
Sau khi khảo sát, tìm hiểu và dùng thử một số trang web như: Netflix, phimchill … và nhận thấymột số khuyết điểm của những trang web ấy:
Trang 22Về phần giao diện và chức năng:
- Netflix: Giao diện không có quá nhiều khác biệt ở các phần khác nhau ( sử dụng chung mộtthành phần lập lại)
- phimchill: quá nhiều quảng cáo, không có hệ thống đăng nhập
⇨ Điều này đã làm dẫn đến sự hạn chế thoải mái lựa chọn và mua sắm của người dùng
Về phần chatbot:
- Netflix: Không có chatbot
- phimchill: Không có chatbot
Về phần hệ thống gợi ý:
- Netflix: có hệ thống gợi ý
- phimchill: không có hệ thống gợi ý
⇨ Vì muốn tạo ra sự khác biệt so với những ứng dụng hiện nay nên nhóm đã quyết định thêmchatbot mong muốn người dùng có thể được chatbot hỗ trợ tư vấn người dùng những bộ
phim phù hợp
1.3 Đối tượng nghiên cứu
Đồ án này hướng đến nghiên cứu các đối tượng sau:
- Các công nghệ:
+Front-end: Reactjs
+Back-end: Nodejs
+Database: MongoDB
+Cào dữ liệu phim: TMDB, 2Embed
+Chatbot Facebook Messenger
+IDE: Visual Studio Code
- Đối tượng trong phạm vi đề tài hướng đến: Khách hàng có nhu cầu tìm kiếm và xem phim Không giớihạn độ tuổi truy cập của đối tượng
Trang 231.4 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 giải đáp và trả lời các câu hỏi phổ biến mà khách hàng thường hỏi nhằm tư vấn chokhách hàng trong việc xem phim
+ Cung cấp thông tin chi tiết về các phim kèm hình ảnh minh họa
+ Nhận biết, hiểu và trả lời tương đối ngôn ngữ tự nhiên dạng văn bản
+ Tích hợp Wikidata API để trả lời trong trường hợp khách hàng đặt các câu hỏi ngoài phạm vi
− Đối với ứng dụng Web:
- Tích hợp đăng nhập, đăng kí cũng như đăng nhập nhanh thông qua Google, Facebook và dịch vụ gửilink kích hoạt tài khoản khi đăng kí thông qua mail
-Cho phép tra cứu, tìm kiếm với nhiều thể loại, danh mục tùy chọn và xem phim trực tuyến
-Hỗ trợ bình luận, chia sẻ thông tin về phim thông qua Facebook
-Cung cấp chức năng yêu thích phim cũng như lưu danh mục phim yêu thích
-Cho phép thay đổi thông tin người dùng
-Cung cấp giao diện admin quản lý với các chức năng thêm/xóa/sửa tương ứng với các loại đối tượngtồn tại trong website (phim, danh mục phim, thể loại phim, người dùng)
-Hỗ trợ thống kê về số lượng người dùng thông qua biểu đồ
1.5 Phương pháp thực hiện
Cách tiếp cận: ứng dụng được xây dựng dựa theo mô hình MVC
Nhóm đã sử dụng các phương pháp như sau:
Phương pháp nghiên cứu:
- Phương pháp đọc tài liệu
Trang 24- Phương pháp phân tích các ứng dụng liên quan phổ biến hiện nay
- Phương pháp thực nghiệm
Phương pháp công nghệ:
− Tìm hiểu cách thức xây dựng Messenger Chatbot
− Tìm hiểu bài toán xử lí ngôn ngữ tự nhiên (Natural Language Processing)
-Tìm hiểu về cách sử dụng tài nguyên từ Wikidata API
− Xây dựng RESTful API để thao tác với dữ liệu
− Xây dựng website hỗ trợ tương tác giữa người dùng và hệ thống
Hình 2.1 - Mô hình MVC
Trang 252.1.2 Cấu trúc mô hình MVC
2.1.2.1 Tầng xử lý – Controller
Tầng xử lý là bộ phận có nhiệm vụ xử lý các yêu cầu người dùng đưa đến thông qua view Từ
đó, C đưa ra dữ liệu phù hợp với người dùng Bên cạnh đó, Controller còn có chức năng kết nốivới model
2.1.2.2 Tầng logic dữ liệu – Model
Tầng logic dữ liệu - Model là bộ phận có chức năng lưu trữ toàn bộ dữ liệu của ứng dụng Bộphận này là một cầu nối giữa 2 thành phần bên dưới là View và Controller Model thể hiện dướihình thức là một cơ sở dữ liệu hoặc có khi chỉ đơn giản là một file XML bình thường Model thểhiện rõ các thao tác với cơ sở dữ liệu như cho phép xem, truy xuất, xử lý dữ liệu,…
2.1.2.3 Tầng giao diện – View
Tầng giao diện - View là phần giao diện (theme) dành cho người sử dụng Nơi mà người dùng cóthể lấy được thông tin dữ liệu của MVC thông qua các thao tác truy vấn như tìm kiếm hoặc sửdụng thông qua các website
Thông thường, các ứng dụng web sử dụng MVC View như một phần của hệ thống, nơi các thànhphầnHTMLđược tạo ra Bên cạnh đó, View cũng có chức năng ghi nhận hoạt động của ngườidùng để tương tác với Controller Tuy nhiên, View không có mối quan hệ trực tiếp với
Controller, cũng không được lấy dữ liệu từ Controller mà chỉ hiển thị yêu cầu chuyển cho
Controller mà thôi
2.1.3 Tại sao dùng mô hình MVC
MVC đang là mô hình được ứng dụng rất nhiều trong lập trình
Hệ thống MVC phát triển tốt sẽ cho phép phát triển front – end, back – end cùng trên hệ thống
mà không có sự can thiệp, chia sẻ, chỉnh sửa các tập tin trong khi một hoặc hai bên vẫn đang làmviệc
Việc sử dụng mô hình tương đối đơn giản Chỉ cần hiểu rõ quy trình vận hành, nắm được cácchức năng của từng bộ phận thì việc triển khai mô hình MVC tương đối dễ dàng
Mô hình MVC có ưu điểm với sự phát triển của ứng dụng như:
Kiểm tra dễ dàng: Với MVC, bạn có thể dễ dàng kiểm tra, rà soát lỗi phần mềm trước khi tới tayngười tiêu dùng, đảm bảo chất lượng và độ uy tín cao hơn
Chức năng control: Trên các nền website thì ngôn ngữ lập trình như CSS, HTML, Javascript cómột vai trò vô cùng quan trọng Việc sử dụng mô hình MVC sẽ giúp bạn có một bộ control ưuviệt trên nền tảng các ngôn ngữ hiện đại với nhiều hình thức khác nhau
Trang 26View và size: View sẽ là nơi lưu trữ các dữ liệu Càng nhiều yêu cầu được thực hiện thì kíchthước càng tệp càng lớn Khi đó, đường truyền mạng cũng giảm tốc độ load Việc sử dụng môhình MVC sẽ giúp bạn tiết kiệm được diện tích băng thông một cách tối ưu.
Chức năng Soc (Separation of Concern): Chức năng này cho phép bạn phân tách rõ ràng cácphần như Model, giao diện, data, nghiệp vụ
Tính kết hợp: Việc tích hợp ở mô hình MVC cho phép bạn thoải mái viết code trên nền tảngwebsite Khi đó, server của bạn sẽ được giảm tải khá nhiều - Đơn giản: Đây là một mô hình vớikết cấu tương đối đơn giản Dù bạn không có quá nhiều chuyên môn cũng có thể sử dụng được.Nhẹ, tiết kiệm băng thông: MVC không sử dụng viewstate nên khá tiết kiệm diện tích băngthông Khi sử dụng, người dùng có thể sử dụng ứng dụng trên web cần tương tác gửi và nhận dữliệu một cách liên tục Do đó, việc giảm băng thông giúp cho website hoạt động tốt và ổn địnhhơn
từ WIndow cho tới Linux, OS X nên đó cũng là một lợi thế NodeJS cung cấp các thư viện
Trang 27phong phú ở dạng Javascript Module khác nhau giúp đơn giản hóa việc lập trình và giảm thờigian ở mức thấp nhất.
V8 engine là một JavaScript engine mã nguồn mở chạy trên các trình duyệt Chrome, Opera vàVivaldi Nó được thiết kế tập trung vào hiệu năng và chịu trách nhiệm cho việc dịch mã
JavaScript sang mã máy để máy tính có thể hiểu và chạy được Nhưng bạn cũng nên tránh nhầmlẫn rằng Node chạy trên trình duyệt Cha đẻ của Node dựa trên V8 engine, cải tiến một số tínhnăng chẳng hạn file system API, thư viện HTTP và một số phương thức liên quan đến hệ điềuhành Điều đó có nghĩa là Node.js là một chương trình giúp ta có thể chạy code JavaScript trênmáy tính, nói cách khác nó là một JavaScript runtime
Node.js có có thể làm việc với cơ sở dữ liệu như các ngôn ngữ lập trình và framework khác VàNode.js hỗ trở các cơ sở dữ liệu nổi tiếng khác nhau: MySql,
Sql Server, MongoDB, PostgreSQL, …
2.2.2 Tạo sao chọn Nodejs để phát triển server
Nodejs tạo ra được các ứng dụng có tốc độ xử lý nhanh, realtime thời gian thực
Nodejs áp dụng cho các sản phẩm có lượng truy cập lớn, cần mở rộng nhanh, cần đổi mới côngnghệ, hoặc tạo ra các dự án Startup nhanh nhất có thể
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 đồngNodejs rất lớn và hoàn toàn miễn phí, các package đều hoàn toàn miễn phí:
Chạy rất nhanh: NodeJs được xây dựng dựa vào nền tảng V8 Javascript Engine nên việc thực thichương trình rất nhanh
Đơn luồng nhưng khả năng mở rộng cao: Node.js sử dụng một mô hình luồng duy nhất với sựkiện lặp cơ chế tổ chức sự kiện giúp các máy chủ để đáp ứng một cách không ngăn chặn và làmcho máy chủ cao khả năng mở rộng như trái ngược với các máy chủ truyền thống mà tạo đề hạnchế để xử lý yêu cầu Node.js sử dụng một chương trình đơn luồng và các chương trình tương tự
có thể cung cấp dịch vụ cho một số lượng lớn hơn nhiều so với yêu cầu máy chủ truyền thốngnhư Apache HTTP Server
Không đệm: NodeJS không đệm bất kì một dữ liệu nào và các ứng dụng này chủ yếu là đầu ra
dữ liệu
Có giấy phép: NodeJS đã được cấp giấy phép bởi MIT License
Trang 282.2.4 Áp dụng vào đề tài
Nodejs được áp dụng để xây dựng toàn bộ hệ thống Back-end cho hệ thống giúp tăng tốc độ load
dữ liệu Nodejs cung cấp những thư viện cần thiết trong quá trình phát triển hệ thống Nodejs vàReactjs (Nextjs) là sự kết hợp vô cùng tốt để phát triển hệ thống một cách tốt nhất
2.3 Hệ quản trị cơ sở dữ liệu MongoDB
2.3.1 Giới thiệu
Hình 2.3 - Sự phát triển và độ phổ biến của MongoDBMongoDB là một hệ quản trị cơ sở dữ liệu mã nguồn mở NoSQL Nó được thiết kế theo kiểuhướng đối tượng, các bảng trong MongoDB được cấu trúc rất linh hoạt, cho phép các dữ liệu lưutrữ trên bảng không cần tuân theo một cấu trúc nhất định nào cả MongoDB lưu trữ dữ liệu theohướng tài liệu (document), các dữ liệu được lưu trữ trong document kiểu JSON nên truy vấn sẽrất nhanh
2.3.2 Ưu điểm của MongoDB
Do MongoDB sử dụng lưu trữ dữ liệu dưới dạng Document JSON nên mỗi một collection sẽ cócác kích cỡ và các document khác nhau, linh hoạt trong việc lưu trữ dữ liệu, nên bạn muốn gì thì
cứ insert vào thoải mái
Dữ liệu trong MongoDB không có sự ràng buộc lẫn nhau, không có join như trong RDBMS nênkhi insert, xóa hay update nó không cần phải mất thời gian kiểm tra xem có thỏa mãn các ràngbuộc dữ liệu như trong RDBMS
MongoDB rất dễ mở rộng (Horizontal Scalability) Trong MongoDB có một khái niệm cluster làcụm các node chứa dữ liệu giao tiếp với nhau, khi muốn mở rộng hệ thống ta chỉ cần thêm mộtnode với vào cluster:
Trường dữ liệu “_id” luôn được tự động đánh index (chỉ mục) để tốc độ truy vấn thông tin đạthiệu suất cao nhất
Khi có một truy vấn dữ liệu, bản ghi được cached lên bộ nhớ Ram, để phục vụ lượt truy vấn saudiễn ra nhanh hơn mà không cần phải đọc từ ổ cứng
Trang 29Hiệu năng cao: Tốc độ truy vấn (find, update, insert, delete) của MongoDB nhanh hơn hẳn sovới các hệ quản trị cơ sở dữ liệu quan hệ (RDBMS) Với một lượng dữ liệu đủ lớn thì thử
nghiệm cho thấy tốc độ insert của MongoDB có thể nhanh tới gấp 100 lần so với MySQL
2.3.3 Nhược điểm của MongoDB
Không có các tính chất ràng buộc như trong RDBMS nên khi thao tác với mongoDB thì phải hếtsức cẩn thận
2.4 ReactJs
2.4.1 Giới thiệu
Hình 2.9 - ReactjsReact.js là một thư viện Javascript đang nổi lên trong những năm gần đây với xu hướng SinglePage Application Trong khi những framework khác cố gắng hướng đến một mô hình MVC hoànthiện thì React nổi bật với sự đơn giản và dễ dàng phối hợp với những thư viện Javascript khác.Nếu như AngularJS là một Framework cho phép nhúng code javascript trong code html thôngqua các attribute như ng-model, ng-repeat thì với react là một library cho phép nhúng code htmltrong code javascript nhờ vào JSX, bạn có thể dễ dàng lồng các đoạn HTML vào trong JS.Tíchhợp giữa javascript và HTML vào trong JSX làm cho các component dễ hiểu hơn Được pháttriển bởi Facebook và bản release đầu tiên trên thế giới vào năm 2013 và được sử dụng để viết raFacebook, instagram và được sự ủng hộ sử dụng của rất nhiều công ty khác trên thế giới Mụctiêu của react chính là đơn giản để phát triển Tất cả trạng thái đều được tập trung tại một thờiđiểm, bằng cách chia giao diện người dùng thành tập hợp các thành phần (components) Reactđược sử dụng để xây dựng single-page web applications
Trang 302.4.2 Những khái niệm cơ bản
2.4.2.1 DOM ảo (Virtual DOM)
DOM (Document Object Model) là một thư viện giao diện người dùng giống như các phần tử,thuộc tính
DOM sẽ được tạo ra khi trang web vừa tải xong DOM và tồn tại dưới dạng tree nodes được dùng
để quản lý, truy xuất, chỉnh sửa tới bất kì phần tử nào thông qua đối tượng gốc là document.Bất cứ khi nào phương thức setState () được gọi, ReactJS reset DOM ảo từ đầu Việc tạo lại rấtnhanh nên nó không ảnh hưởng đến hiệu suất Tại bất kỳ thời điểm nào, ReactJS duy trì haiDOM ảo, một với DOM được cập nhật trạng thái ảo và một với DOM trạng thái trước đó gầnđây nhất để so sánh và cập nhật phần tử thay đổi
2.4.2.2 JSX
JSX là một phần quan trọng trong ReactJS JSX giúp code trở lên dễ đọc hơn JSX là sự kết hợpgiữa Javascript và XML Nó chuyển đổi cú pháp dạng gần như XML về thành Javascript Giúpngười lập trình có thể code ReactJS bằng cú pháp của XML thay vì sử dụng Javascript CácXML elements, attributes và children được chuyển đổi thành các đối số truyền vào
2.4.2.4 Props
Thông tin được truyền từ component này sang component khác được gọi là props
Props của một component là một object Nó chứa thông tin về thành phần đó Để xem props củacomponent đó chứa gì ta sẽ sử dụng đoạn câu lệnh “this.props”
Trong props của mỗi component có một thuộc tính là children, this.props.children sẽ trả về mọithứ nằm giữa các thẻ JSX mở và đóng của component
Trang 312.4.2.5 State
Một component có thể truy cập thông tin theo hai cách là : props và state
Không giống như props, state của component không thể truyền được ra ngoài
Component sẽ quản lý state của chính nó
Để tạo ra một Component có state, chúng ta sẽ thêm một thuộc tính state, thuộc tính phải đượckhai báo bên trong phương thức khởi tạo
this.state phải là một đối tượng
Để truy cập đến state ta sử dụng cú pháp this.state.name-of-property
Cách phổ biến để thay đổi state trong một component ta sử sụng hàm
“this.setState()”
Một component con có thể thay đổi được state của component mẹ bằng cách từ mẹ truyền xuốngcho con một hàm callback để nhận dữ liệu cập nhật từ component con
2.4.2.6 Vòng đời của Component
Hình 2.10 - Vòng đời component reactjsVòng đời của component được chia làm 3 phần là khởi tạo, cập nhật và trước khi trước khi thoát
ra khỏi vòng đời của một component Chi tiết về vòng đời như sau:
Đầu tiên, componentWillMount là hàm sẽ được thực thi trước khi 1 component được render trên
cả server side và client side Tiếp đó sẽ render component Sau đó componentDidMount đượcthực thi khi một component được render trên client side Đây là nơi các hàm AJAX requests,DOM or update state được thực thi Method này cũng đucợ sử dụng để kết nối với các JS
Framework khác Đây là nơi thích hợp để gọi đến API
Tiếp theo đó là phần cập nhật component Có 5 phương thức được định nghĩa để thực hiện khimột phần tử được cập nhật:
Trang 32componentWillReceiveProps sẽ được thực thi ngay khi thuộc tính props được update và trướckhi component được render lại.
shouldComponentUpdate sẽ trả về kết quả true or false Phương thức này sẽ xác định 1
component có được update hay không Mặc định giá trị này là true Nếu bạn không muốn
component render lại sau khi update state hay props thì return giá trị thành false
componentWillUpdate được gọi khi chúng ta cập nhật state mới của component trước khi renderlại component
render: Hàm hiển thị lại sau khi được cập nhật
componentDidUpdate sau khi componentWillUpdate ở trên được gọi xong
Cuối cùng là componentWillUnmount được gọi trước khi một component được xóa khỏi DOM
2.4.3 Ưu nhược điểm của Reactjs
2.4.3.1 Ưu điểm
ReactJS giúp việc viết các đoạn code JS dễ dàng hơn: Nó dùng cú pháp đặc biệt là JSX
(Javascript mở rộng) cho phép ta trộn giữa code HTML và Javascript Ta có thể thêm vào cácđoạn HTML vào trong hàm render mà không cần phải nối chuỗi Đây là đặc tính thú vị củaReactJS Nó sẽ chuyển đổi các đoạn HTML thành các hàm khởi tạo đối tượng HTML bằng bộbiến đổi JSX
Nó có nhiều công cụ phát triển: Khi bạn bắt đầu ReactJS, đừng quên cài đặt ứng dụng mở rộngcủa Chrome dành cho ReactJS Nó giúp bạn debug code dễ dàng hơn Sau khi bạn cài đặt ứngdụng này, bạn sẽ có cái nhìn trực tiếp vào virtual DOM như thể bạn đang xem cây DOM thôngthường
Có rất nhiều thư viện hỗ trợ để xây dựng giao diện
Hiệu năng cao đối với các ứng dụng có dữ liệu thay đổi liên tục, dễ dàng cho bảo trì và sửa lỗi
2.4.3.2 Nhược điểm
Reactjs chỉ phục vụ cho tầng View React chỉ là View Library nó không phải là một MVCframework như những framework khác Đây chỉ là thư viện của Facebook giúp render ra phầnview Vì thế React sẽ không có phần Model và Controller, mà phải kết hợp với các thư việnkhác
Tích hợp Reactjs vào các framework MVC truyền thống yêu cầu cần phải cấu hình lại
React khá nặng nếu so với các framework khác React có kích thước tương tương với Angular(Khoảng 35kb so với 39kb của Angular) Trong khi đó Angular là một framework hoàn chỉnh
Trang 33CHƯƠNG 3 TÌM HIỂU VÀ LỰA CHỌN CÔNG NGHỆ
để 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
Hình 3.1.1-1 Cách thức hoạt động của chatbotNhư vậy, chatbot sẽ hoạt động và đưa ra phản hồi dựa trên dữ liệu đầu vào từ phía người dùng
3.1.2 Tính ứng dụng:
Chatbot thúc đẩy hiệu quả hoạt động và tiết kiệm chi phí cho doanh nghiệp, đồng thời, mang đến sự tiệnlợi và cung cấp dịch vụ chăm sóc khách hàng nhanh chóng 24/24 Nó cho phép các công ty dễ dàng giảiquyết nhiều loại truy vấn và vấn đề của khách hàng trong khi giảm nhu cầu tương tác của con ngườinhằm tiết kiệm chi phí nhân công Ngoài ra, chatbot hỗ trợ thu thập thông tin và nhu cầu khách hàng đểphân loại khách hàng và đưa ra các đề xuất được cá nhân hóa nhằm nâng cao trải nghiệm của kháchhàng
Chatbot rất đa dạng về mục đích sử dụng tùy thuộc vào lĩnh vực như:
– Lĩnh vực ẩm thực, ăn uống: nhà hàng, quán ăn, quán café,…
– Lĩnh vực thời trang: cửa hàng giày dép, quần áo, phụ kiện,…
– Lĩnh vực làm đẹp: thẩm mỹ viện, mỹ phẩm,…
– Lĩnh vực giáo dục – đào tạo: trung tâm ngoại ngữ, trung tâm dạy kỹ năng mềm, trường đại học,
Trang 34Hình 3.1.3-1 Thống kê lượng người dùng của các ứng dụng nhắn tin
Với lượng người dùng đông đảo cùng lượng tin nhắn được gửi đi khổng lồ không kém đã tạo ra cơ hộikinh doanh mới cho chatbot Chatbot sẽ trở thành giải pháp đầu tiên và đơn giản nhất mà chúng ta có thểvận dụng để tiếp cận thời đại này
Sự phát triển của “NLP” và “NLU”:
Trước khi NLP (Natural Language Processing) và NLU (Natural Language Understanding) ra đời, cácchatbot thường chủ yếu dùng phương thức command-base (nhập khớp lệnh) để giao tiếp với ngườidùng.Tuy nhiên, kể từ khi cách mạng công nghiệp 4.0 bùng nổ, AI và Machine Learning trở thành mộttrong những công nghệ được đầu tư mạnh nhất trong vài năm trở lại đây giúp cho Natural LanguageProcessing (NLP), Natural Language Understanding (NLU) sử dụng các kỹ thuật, công nghệ mới trởnên đơn giản và chính xác hơn rất nhiều dẫn đến sự ra đời của các công cụ hỗ trợ việc xây
dựng chatbot ngày một nhiều và chính xác hơn
Hệ sinh thái, platform
Tất cả các top messenger đều có platform của riêng mình phục vụ cho việc xây dựng chatbot Hệ sinhthái, các projects mã nguồn mở để xây dựng chatbot ngày càng hoàn thiện và đầy đủ, chúng ta có thể dễdàng sử dụng miễn phí (hầu hết) trong môi trường lập trình
Trang 35Các ngôn ngữ cũng có những thư viện riêng dành cho chatbot, các platform có công cụ phát triển (sdk)đầy đủ cho các service của mình.
Hình 3.1.3-2 Các service platforms phục vụ cho chatbot
Từ những điều trên, ta có thể khẳng định khả năng phát triển của chatbot hiện nay là cực kỳ mạnh mẽ,
xu hướng sẽ hướng đến các phần mềm nhắn tin và các trang web thương mại điện tử
3.2 Tìm hiểu về Facebook Messenger
3.2.1 Tổng quan
Facebook messenger là dịch vụ và ứng dụng phần mềm tin nhắn tức thời chia sẻ giao tiếp bằng ký tự vàgiọng nói Được tích hợp trên ứng dụng Chat (trò chuyện) của Facebook Messenger cho phép ngườidùng Facebook trò chuyện với bạn bè trên cả di động và trang web Trước khi ra mắt bản mobile, chúngđược tích hợp sẵn trên mạng xã hội Facebook Sau này, Facebook tách ra 2 ứng dụng song song bổ trợnhau trên nền tảng mobile là: Facebook và Messenger Facebook Messenger phiên bản dành cho mobilephát hành lần đầu vào ngày 9 tháng 8 năm 2011 Nó đã phát triển mạnh mẽ về số người sử dụng cũngnhư tính năng của sản phẩm trên web và mobile Về số lượng người dùng, theo thống kê như sau:
Trang 36Hình 3.2.1-1 Lượng người sử dụng Facebook Messenger theo thời gian
Sơ đồ cho thấy số lượng người dùng tăng rất nhanh chỉ sau 4 năm hoạt động Tại sự kiện F8 Keynote,Facebook vừa giới thiệu "bot platform”, đây là bộ công cụ giúp các nhà phát triển lập trình sâu hơn vàoFacebook Messenger, mang một loạt các chức năng mới cho ứng dụng chat của mạng xã hội này Cóthể, chat bot 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ôngminh 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
3.2.2 Đánh giá:
Sau khi đánh giá các nền tảng có thể phát triển Chatbot, chúng em quyết định lựa chọn Messenger làmnề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
Trang 373.3 Chatbot Facebook:
3.3.1 Giới thiệu về Chatbot Facebook:
Hình 3.3.1-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ự độngvớ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ộngcho chức năng nhắn tin trên trang Facebook của bạn
Mỗi một Chatbot Facebook phải được liên kết với một trang Facebook đang tồn tại Vì vậy, nếu bất cứ
ai đang chat với bot của bạn thì họ đang chat với trang Facebook của bạn, nhưng thay vì là cuộc tròchuyện giữa người với người thì bây giờ bot của bạn đang trò chuyện với người
Ở phạm vi Facebook, Chatbot Messenger là công cụ kết nối vào fanpage của bạn thông qua thiết lậpAPI, chatbot lúc này có thể xem như một (hoặc nhiều) nhân viên, trợ lý ảo của bạn
3.3.2 Cách hoạt động:
Hình 3.3.1-2 Cách hoạt động của Chatbot liên kết với MessengerHoạt động của Bot như sau:
Trang 381 Khi có người gửi tin nhắn đến fanpage.
2 Thông tin tin nhắn sẽ được truyền đến toàn bộ các webhook đã được đăng ký trước đó Ví dụ nhưwebhook của chatbot
3 Chatbot server gửi xác nhận đã nhận sự kiện Sau đó xử lý tin nhắn và gửi trả lại nếu cần thiết thôngqua api của messenger
4 Người dùng nhận lại phản hồi
3.3.3 Một số khái niệm cơ bản:
3.3.3.1 Webhook:
Webhook là một công nghệ rất tiện dụng trong việc triển khai các phản ứng sự kiện (event) trên websitecủa bạn Webhook cung cấp một giải pháp giúp ứng dụng server-side thông báo cho ứng dụng phíaclient-side khi có sự kiện phát sinh đã xảy ra trên máy chủ (event reaction) Cũng chính vì vậy, ứngdụng client-side sẽ không cần phải liên tục hỏi hoặc check với ứng dụng server-side
3.4 Áp dụng công nghệ vào chatbot:
3.4.1 Facebook API:
Facebook API là nền tảng do Facebook cung cấp cho người viết ứng dụng để dễ dàng trong việc tạo ứngdụng và đảm bảo người viết ứng dụng không can thiệp quá sâu vào hệ thống của Facebook
Trang 39Thông qua Facebook API, ta có thể lấy được thông tin về người dùng như là danh sách bạn bè, thông tin
cá nhân, ảnh profile nếu như họ cấp quyền cho ta truy cập trang cá nhân của họ
Facebook sẽ gửi một phương thức POST đến máy chủ Facebook API Nó bao gồm một số các thông sốyêu cầu như api_key của ứng dụng, session_key của người dùng đưa ra yêu cầu Bên cạnh đó Facebookcòn thêm vào tham số fb_sig để thông báo ứng dụng đưa ra yêu cầu Bằng cách này tất cả các lời gọiAPI sẽ được đảm bảo, Facebook có thể xác minh các yêu cầu được gửi từ một ứng dụng đã được chấpthuận
3.4.2 Facebook Graph Api:
3.4.2.1 Giới thiệu:
Graph ở đây chính là đồ thị Graph sinh ra để miêu tả quan hệ giữa các thực thể
Hình 3.4.2.1-1 Graph APIFacebook coi các mối quan giữa các thực thể như là một "Đồ thị xã hội" (Social Graph) FacebookGraph API là cách chủ yếu để tải dữ liệu vào và lấy dữ liệu ra từ đồ thị xã hội của Facebook
Đó là một HTTP API cấp thấp mà bạn có thể sử dụng để truy vấn dữ liệu, post status, tải lên hình ảnh vàmột loạt các nhiệm vụ khác
3.4.2.2 Áp dụng:
Có thể truy cập vào: https://developers.facebook.com/docs/messenger-platform
Để có thể phát triển ứng dụng bot của mình Đây là một số chức năng có thể áp dụng vào ứng dụng đểphát triển: