CHƯƠNG 1: GIỚI THIỆU CHUNG 1. Tổng quan đề tài - Tên ứng dụng: Social - Chủ đề chính: Mạng xã hội kết hợp chatbot cho người nuôi thú cưng - Nền tảng phát triển: ReactJS - Mô hình phát triển: MVC - Tích hợp chatbot: DialogFlow 1. Lý do chọn đề tài Hiện nay, nhu cầu về chia sẻ về những kinh nghiệm chăm sóc và tham gia kết nối cộng đồng người yêu thú cưng ngày càng được mở rộng. Để đá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 mạng xã hội chia sẻ hình ảnh, video, cung cấp nhanh chóng thông tin về cách thức chăm sóc, những mẹo vặt về thú cưng và tích hợp chatbot hỗ trợ tự động tư vấn chăm sóc với người dùng truy cập vào ứng dụng.
Ứng dụng hỗ trợ: - Mạng xã hội kết nối cộng đồng người yêu thích thú cưng - Chatbot chia sẻ về chăm sóc thú cưng - bác sĩ AI - cẩm nang chăm sóc - Báo cứu trợ, cưu mang thú cưng - Tìm kiếm những trung tâm chăm sóc hoặc phòng thú y hoặc cafe thú cưng gần nhất Ứng dụng cung cấp những tính năng tiện ích giúp người dùng có thể tiếp cận đến những thông tin mới về chăm sóc sức khỏe thú cưng 1 cách nhanh nhất và tiện lợi nhất, hoặc ChatBot tự động tư vấn. Bên cạnh đó, người dùng cũng có thể truy cập vào ứng dụng để cập nhật, đăng tin một cách dễ dàng và nhanh chóng. Đối tượng sử dụng • Ứng dụng là mạng xã hội cho cộng đồng người yêu thú cưng cho nên phù hợp với mọi lứa tuổi, đặc biệt là hướng đến giới trẻ. • Các trung tâm dịch vụ hỗ trợ liên quan đến thú cưng.
Phạm vi nghiên cứu Phạm vi môi trường: Ứng dụng Web 1. Phạm vi chức năng: - Đối với ứng dụng: o Cung cấp chức năng chia sẻ khoảnh khắc về thú cưng. o Cung cấp thông tin chăm sóc sức khỏe thú cưng. o Kết nối cộng đồng.
o Cung cấp các chức năng quản lí bài viết bao gồm đăng tải, thay đổi và xóa bỏ. o Cung cấp quảng cáo cho các bên kinh doanh, các dịch vụ chăm sóc. - Đối với chatbot: o Có khả năng trả lời các câu hỏi về một cách chi tiết. o Phân tích được nhu cầu và đưa ra tư vấn hợp lý đối với người dùng.
o Cung cấp liên hệ trực tiếp đến với nhân viên tư vấn khi vấn đề đặt ra ngoài phạm vi của bản thân nó và cập nhập được cách xử lý đối với các trường hợp này. o Chatbot hiểu được tương đối ngôn ngữ tự nhiên. o Tìm kiếm những địa điểm như trung tâm chăm sóc thú cưng, các quán cafe thú cưng. o Báo cứu trợ, cưu mang thú cưng.
15 Báo cáo đồ án 1 CHƯƠNG 2: CƠ SỞ LÝ THUYẾT 2.1-1: React JS ReactJS là một thư viện trong đó có chứa nhiều JavaScript mã nguồn mở và cha đẻ của ReactJS đó chính là một ông lớn với cái tên ai cũng biết đó chính là Facebook. Mục đích của việc tạo ra ReactJS là để tạo ra những ứng dụng website hấp dẫn với tốc độ nhanh và hiệu quả cao với những mã hóa tối thiểu. Và mục đích chủ chốt của ReactJS đó chính là mỗi website khi đã sử dụng ReactJS thì phải chạy thật mượt thật nhanh và có khả năng mở rộng cao và đơn giản thực hiện.2-1: JavaScript JavaScript là ngôn ngữ lập trình website phổ biến hiện nay, nó được tích hợp và nhúng vào HTML giúp website trở nên sống động hơn. JavaScript đóng vai trò như là một phần của trang web, thực thi cho phép Client-side script từ phía người dùng cũng như phía máy chủ (Nodejs) tạo ra các trang web động.3-1: Firebase Firebase là platform do Google cung cấp, nhằm hỗ trợ việc tạo ra các web application, mobile application với chất lượng cao.
Với việc sử dụng Firebase, developer có thể tập trung vào việc phát triển application mà không cần lo về việc sản phẩm của mình sẽ hoạt động và được quản lý thể nào ở phía Backend. Khái niệm Backend nhắc tới trong câu trên để chỉ việc xử lý và lưu trữ dữ liệu trong service, ở vùng "phía sau" mà người dùng không nhìn thấy. Firebase là một trong những BaaS (Backend as a service). Serverless architecture được chú ý như một giải pháp đáp ứng yêu cầu release một dịch vụ trong thời gian ngắn, trong bối cảnh đó, BaaS ra mắt người dùng.
BaaS hướng đến thiết bị chủ yếu là mobile nên còn được gọi với một tên gọi khác là MBaaS.4-1: HTML HTML là viết tắt của cụm từ Hypertext Markup Language (tạm dịch là Ngôn ngữ đánh dấu siêu văn bản). HTML được sử dụng để tạo và cấu trúc các thành phần trong trang web hoặc ứng dụng, phân chia các đoạn văn, heading, titles, blockquotes… và HTML không phải là ngôn ngữ lập trình.5-1: CSS CSS là chữ viết tắt của Cascading Style Sheets, nó là một ngôn ngữ được sử dụng để tìm và định dạng lại các phần tử được tạo ra bởi các ngôn ngữ đánh dấu (HTML). Nói ngắn gọn hơn là ngôn ngữ tạo phong cách cho trang web. Bạn có thể hiểu đơn giản rằng, nếu HTML đóng vai trò định dạng các phần tử trên website như việc tạo ra các đoạn văn bản, các tiêu đề, bảng,…thì CSS sẽ giúp chúng ta có thể thêm style vào các phần tử HTML đó như đổi bố cục, màu sắc trang, đổi màu chữ, font chữ, thay đổi cấu trúc… 20 Báo cáo đồ án 1 2.6-1: Hệ thống quản lý mã nguồn GitHub GitHub là một hệ thống quản lý dự án và phiên bản code, hoạt động giống như một mạng xã hội cho lập trình viên.
Các lập trình viên có thể clone lại mã nguồn từ một repository và Github chính là một dịch vụ máy chủ repository công cộng, mỗi người có thể tạo tài khoản trên đó để tạo ra các kho chứa của riêng mình để có thể làm việc. Github có đầy đủ những tính năng của Git, ngoài ra nó còn bổ sung những tính năng về social để các developer tương tác với nhau. Github cung cấp các tính năng social networking như feeds, followers, và network graph để các developer học hỏi kinh nghiệm của nhau thông qua lịch sử commit 21 Báo cáo đồ án 1 CHƯƠNG 3: CHATBOT: DIALOGFLOW 3. Công nghệ sử dụng : DialogFlow Hình 3.1-1: ChatBot DialogFlow Dialogflow (tiền thân là API.AI) là một dịch vụ do Google cung cấp nhằm giúp các lập trình viên dễ dàng hơn khi lập trình các sản phẩm có giao tiếp giữa người dùng với sản phẩm thông qua các đoạn hội thoại bằng văn bản (text) hoặc giọng nói (voice).
Dialogflow sử dụng trí tuệ nhân tạo (AI) giúp phân tích ngôn ngữ tự nhiên để hiểu được những gì người dùng đưa vào. Dialogflow hiện có sẵn các kịch bản và Dialogflow cũng được dạy khá tốt với lượng dữ liệu khá đồ sộ. Chỉ tiết là đa phần Dialogflow làm việc tốt hơn với Tiếng Anh và một số tiếng của các nước đông dân khác trong đó có tiếng Việt. Ngoài ra Dialogflow còn cho phép bạn liên kết Chatbot của bạn với Messenger hay Skype hay Slack… một cách rất đơn giản.
Giao diện chatbot Hình 3.2-1: Trang trò chuyện với ChatBot a. Mô tả tổng quát Đây là giao diện diễn ra tương tác giữa chatbot tư vấn với người dùng được gọi từ nút Chatbot ở góc dưới bên phải màn hình chính. Tại đây, người dùng có thể nhập những thắc mắc và được chatbot tư vấn lập tức về các vấn đề liên quan đến trung tâm, khóa học, lộ trình học,. Các đối tượng trên màn hình STT Tên đối tượng Loại Chức năng Truy cập vào trang trò chuyện 1 Nút Chatbot FloatingActionButton cùng Chatbot Khung chat giữa người dùng và 2 Khung chat RecyclerView Chatbot 3 Đề xuất Chip Nút đề xuất nội dung đối thoại Vùng nhập nội dung thoại người 4 Vùng nhập thoại EditText dùng muốn nói 3.
Quy trình hoạt động a. Về Agent Bot Dialogflow Agent là một Chatbot ảo xử lý các cuộc trò chuyện, đối thoại với người dùng. Agent là một mô-đun hiểu được ngôn ngữ tự nhiên, từ đó đọc được những sắc cảm, ngữ cảnh trong cuộc đối thoại. Dialogflow Agent Bot có thể hiểu được văn bản, hoặc giọng nói và phản hồi lại hình thức tương tự đến với người dùng.
Người lập trình viên có thể tạo và thiết kế một Agent để xử lý các đoạn hội thoại trong ứng dụng một cách dễ dàng Dialogflow Agent tương tự như một người hỗ trợ cuộc gọi trong các trung tâm, được đào tạo để xử lý các tình huống hội thoại dự kiến. Và đặc biệt, việc đào tạo này không cần quá rõ ràng vì Agent Bot có thể tự học trong quá trình xử lý thông tin Một Agent bao gồm: - Agent Setting: cài đặt tùy chỉnh Bot. Người lập trình có thể tùy chọn gói ngôn ngữ, cài đặt chương trình Học máy, kiểm soát hành vi của Bot thông qua cài đặt tùy chỉnh này. - Intents: Phân loại thoại người dùng có thể sử dụng trong quá trình trò chuyện.
24 Báo cáo đồ án 1 - Entities: Xác định và rút trích dữ liệu cụ thể từ thoại người dùng sử dụng - Knowledge: Phân tích tài liệu và tìm câu trả lời tự động. - Integrations: Tích hợp cho các ứng dụng hoặc dịch vụ tương tác khác (ví dụ: Google Assistant) - Fulfillment: Thực hiện kết nối với dịch vụ tích hợp khác. Về Intent Intent (Intention) được sử dụng để phân loại thoại người dùng nhập vào trong một cuộc nói chuyện. Mỗi Bot sẽ có thể được định nghĩa nhiều Intent, cũng như có thể kết hợp và phân cấp các Intent để tạo thành một cuộc trò chuyện hoàn chỉnh.
Khi người dùng nhập vào một lời thoại, ChatBot DialogFlow sẽ thực hiện đối sánh lời thoại đó, tìm ra Intent phù hợp nhất rồi gửi phản hồi trở lại. Việc thực hiện đối sánh lời thoại này còn được gọi là phân loại Intent (Intent classification). Một Intent cơ bản bao gồm những phần như sau: - Training phrases: Cụm từ đào tạo trong Intent. Đây là những cụm từ mà người dùng có thể nói khi trò chuyện cùng Chatbot.
Khi lời thoại nhập vào tương đối giống với một cụm từ nào trong Trainning phrases, Dialogflow ChatBot sẽ truy cập vào Intent đấy, thực hiện nội dung Action và phản hồi phần Responses của Intent. Nhờ vào khả năng học hỏi bằng trí tuệ nhân tạo, Dialogflow có thể tự mở rộng cụm từ học được tương tự cụm từ bạn đã nhập vào Training phrases, từ đó tăng khả năng phân loại Intent và giúp giảm thiểu thời gian cho người lập trình. - Action: Hành động của một Intent, có thể điều chỉnh tùy ý. Khi một Intent được đối sánh trùng khớp với thoại người dùng nhập vào, Chatbot sẽ cung cấp phần Action cho hoạt động của Intent để kích hoạt một số hành động nhất định do người tạo quy định.