Hướng dẫn add api chatbot nhận link
ChatBot is a natural language understanding framework that allows you to create intelligent chatbots for any service. You can easily integrate your bots with favorite messaging apps and let them serve your customers continuously. Show
Basic API usageAll the requests referenced in the documentation start with https://api.chatbot.com. AuthenticationEach API request requires authentication to identify the license that is responsible for making the request. Authentication is provided by access tokens. Where are my access tokens?To get your Developer Access Token, please visit this page. Each license has two tokens:
Authentication exampleInclude this HTTP header for each API request:
To get your Developer Access Token, please visit this page. Example request
Data formatChatBot returns data in JSON format. See the following example.
Error handlingErrors are returned using standard HTTP error code syntax. In general, codes in the HTTP status codes summary
TroubleshootingThere are multiple issues that may cause your webhook work incorrectly. Below you can find the most common reasons for these errors: Xin chào tất cả các bạn, dạo gần đây mình thấy khá là nhiều bài viết liên quan đến chủ đề Chatbot trên Viblo tuy nhiên đa phần nội dung đều không nói rõ cách thực hiện Chatbot và deploy chatbot như thế nào. Đại đa số sử dụng một vài framework khá ăn liền như API của Simsimi hay Facebook Messenger điều này có một hạn chế là các bạn sẽ không tự custom nội dung được và một số API Chatbot như Simsimi còn bị giới hạn request nếu dùng free nữa. Bài viết hôm nay mình sẽ viết một bài viết để hướng dẫn các bạn xây dựng một ứng dụng Chatbot để trò chuyện trực tiếp trên Chatwork giúp các bạn giải trí hoặc giải quyết một số nhu cầu công việc của các bạn. Cũng giống như các bài hướng dẫn trước đây mình sẽ hướng dẫn các bạn từ bước sơ khai đến tận bước deploy hệ thống thực nên có thể sẽ khá dài nên mọi người chịu khó đọc hết nha. OK không dài dòng nữa chúng ta bắt đầu thôi. Chatbot là gì?Chắc hẳn chatbot không còn làm cụm từ quá xa lạ với mọi người, hiểu nôm na đó chính là một phần mềm có thể thực hiện trò chuyện một cách tự động. Nó là một trong những ứng dụng khá đơn giản của Machine Leanring nhưng cũng đem lại những trải nghiệm hết sức thú vị. Chatbot xuất hiện rất nhiều trên các trang mạng xã hội, các trang bán hàng hay trong các dịch vụ chăm sóc khách hàng của các công ty. Bài viết này hôm nay mình không đề cập đến những kiến thức sâu trong Chatbot hay về xử lý ngôn ngữ tự nhiên mà mục đích của bài viết này giúp cho các bạn nào chưa hề biết gì về chatbot cũng có thể xây dựng được một chatbot của riêng mình. Nền tảng mình mình áp dụng cho việc xây dựng Chatbot lần này được mang tên là ChatterBot các bạn có thể tham khảo nó ở đây. Bây giờ chúng ta sẽ bắt đầu ngay thôi. Tiến hành cài đặt môi trường.Trước tiên các bạn cần phải cài đặt môi trường để làm việc với ứng dụng của chúng ta. Ở đây mình sử dụng ngôn ngữ Python nên mình sẽ sử dụng một virtualenv của python để tạo một môi trường ảo cho riêng mình. Các bạn có thể tạo nó như sau:
sau đó active môi trường để bắt đầu
Tiếp sau đó các bạn cần cài đặt các dependecies cần thiết. Ở đây mình ví dụ với package chatterbot của chúng ta.
Ngoài ra để thực hiện các ví dụ trong bài blog này mình khuyến khích các bạn nên sử dụng Jupyter Notebook OK vậy là giờ các bạn đã có thể tiến hành training con bot của chúng ta được rồi. Tiến hành training chatbot.Bước 1: Định nghĩa chủ đề của ChatbotĐầu tiên để có thể dạy được một Chatbot tốt các bạn cần định nghĩa chủ đề của nó, ví dụ như các bạn muốn dạy một chatbot để có thể trả lời các câu hỏi trong công việc thường ngày thì các bạn cần phải dạy chatbot được những câu hỏi. Mục đích của nó là học xem với từng câu hỏi này thì mục đích của chúng ta đang hỏi là gì và từ đó tìm ra câu trả lời cho phù hợp. Ví dụ như Hôm nay có những ai đi làm -> đang hỏi về lịch làm việc Hôm qua có những ai chưa báo cáo -> đang hỏi về tên những người chưa báo cáo Tùy thuộc vào mục đích việc xây dựng chatbot các bạn có thể thu thập dữ liệu theo các cách khác nhau tùy thuộc vào từng chủ đề khác nhau. Dưới đây là một mẫu ví dụ cho một chatbot được sử dụng để hỏi các thông tin trên chatwork:
Chúng ta có thể thấy mỗi câu hỏi được sắp xếp vào từng chủ đề khác nhau như chào hỏi hoặc kế hoạch làm việc ngày hôm nay. Điều nay tương đương như việc các bạn training một bộ phân lớp văn bản. Sau khi có được kết quả của bộ phân lớp này chúng ta sẽ có thể tìm được cách trả lời cho câu hỏi của người dùng. Mình không đi quá sâu vào phần này bởi sẽ làm ảnh hưởng đến tính thực tế của ứng dụng. Các bạn có thể tự xây dựng cho mình một tập các câu chủ đề riêng nhé. Bước 2: Huấn luyện chatbotSau khi các bạn có tập dữ liệu thì việc tiếp theo cũng rất quan trọng đó chính là huấn luyện chatbot để có thể hiểu được nội dung của câu hỏi. Chúng ta đã thống nhất từ đầu là sẽ sử dụng thưu viện chatterbot giúp cho việc training này trở lên đơn giản hơn như sau:
Các bạn có thể thấy rằng chúng ta sẽ khai báo một chatbot. Kết quả training của chatbot này được lưu tại db.sqlite3. Chúng ta add thêm một vài xử lý logic cho việc nhận dạng chatbot đó chính là
Sau khi cài đặt và đã thu thập đủ dữ liệu cho chatbot chúng ta tiến hành training cho chatbot này.
Các bạn sẽ đợi cho đến khi chatbot training xong. Tùy thuộc vào tập dữ liệu của các bạn lớn hay nhỏ mà thời gian training cũng tăng lên tương ứng. Bước 3: Lưu chatbotSau khi training xong chatbot sẽ tự động lưu vào file db.sqlite3. Các bạn có thê lưu trữ lại file này để sử dụng trong các trường hợp khác nhau. Bước này tương đương với việc lưu ra các model sau khi training mô hình bằng tensorflow hay pytorch. Bước tiếp theo chúng ta sẽ cùng test hoạt động cảu chatbot này nhé.Bước 4: Test saved chatbotSau bước lưu được chatbot, chúng ta sẽ tiến hành test thử hoạt động của chatbot này như thế nào nhé:
trong đó CHATBOT_DATABASE là đường dẫn đến file chatbot mà chúng ta vừa mới lưu lại trên bước trước. Mọi người để ý tham số
1 quy định chúng ta đang sử dụng chatbot này dưới dạng đã được training. Sau đó chúng ta có thể thử test nó bằng câu lệnh đơn giản như sau:
OK vậy giờ chatbot của chúng ta đã có thể hoạt động được tuy nhiên muốn tích hợp nó với các ứng dụng bên ngoài thì đồi hỏi chúng ta phải viết code xử lý phần backend thông qua một framework nào đó để tạo API. Ở đây mình lựa chọn Django để viết backend và tận dụng luôn nền tảng Chatwork để viết frontend demo cho các bạn. Làm việc với Chatwork APITạo tài khoản cho chatbotTrước hết bước đầu tiên các bạn cần làm đó là tạo cho chatbot một tài khoản Chatwork. Bạn hãy hình dung như khi chúng ta kết bạn với tài khoản này và trò chuyện như một người bình thường, chỉ có điều khác rằng những câu trả lời ở đây là do chatbot của chúng ta tạo ra thôi. Các bạn tiến hành đăng kí tài khoản như bình thường thôi. Bước này khá đơn giản Cứ next next next là được nhé. Tạo API Key cho chatbotSau khi các bạn đã tạo xong tài khoản cho chatbot. Việc tiếp theo là request API key cho nó. Request API này để làm gì, mục đích của nó là để bạn có thể trả lời các tin nhắn thông qua chatbot phía backend cũng như lấy các thông tin khác nữa. Việc này các bạn có thể thực hiện trong phần API Settings -> API Token sau đó các bạn tiến hành nhập mật khẩu để hiển thị API Key. Nếu như lần đầu bạn làm chuyện này thì bạn sẽ phải chờ Chatwork approve và tạo API Key cho bạn. Các lần sau thì đơn giản thôi. Lưu ý là hãy giữ bí mật API Key này nhé, không thì cả thế giới đều có thể sử dụng Chatwork của bạn đó: Sau khi các bạn đã tạo API Key thành công thì chúng ta đi đến bước tiếp theo là tạo Web Hook Chatwork. Cài đặt Chatwork WebhookHiểu đơn giản thì Chatwork Webhook giúp chúng ta có thể handler các sự kiện diễn ra đối với tài khoản của mình một cách đơn giản hơn. Ví dụ như khi có người TO đến tài khoản chatbot trên Chatwork thì sẽ thực hiện việc gửi API lấy thông tin từ backend và trả lời lại tin nhắn. Để thực hiện được điều này Chatwork cung cấp cho chúng ta một công cụ là Chatwork Webhook. Các bạn có thể tạo mới Webhook tại API Settings -> Webhook. Nhờ việc sử dụng ChatWork Webhook chúng ta không cần thiết gọi Chatwork API định kỳ (Polling) để kiểm soát event mà vẫn có thể nhận thông báo ở real time. Và vì có thể tạo function liên kết với service bên ngoài như tương tác Bot thao tác trên Chatwork một cách đơn giản nên mình đã sử dụng nó trong bài hướng dẫn này. Tạo mới một Webhook các bạn sẽ trông thấy giao diện như sau: Có một vài thông tin cơ bản các bạn cần lưu ý:
Tìm hiểu cấu trúc request của WebhookThông báo event từ ChatWork Webhook sẽ được tiến hành dựa vào request HTTPS POST tới Webhook URL đã được setting ở Màn hình quản lý Webhook. Chúng ta cùng xem xét đến cấu trúc Header của request trên Webhook: Trong đó body được gửi lên dưới dạng một chuỗi JSON có các mục như sau: Ví dụ như:
Có một lưu ý là việc phải xác minh chữ kí mỗi lần gửi request. Cách xác minh của nó như sau: Lấy byte string đã decode BASE64 token làm secret key để lấy giá trị digest của request body dựa vào thuật toán HMAC-SHA256. Xác nhận string đã encode BASE64 giá trị digest đồng nhất với signature (Gía trị của X-ChatWorkWebhookSignature header) được cấp cho request header. Có thể xác minh bằng Token ở màn hình edit Webhook. Các bạn cứ yên tâm, nếu thấy loằng ngoằng quá có thể sử dụng luôn code của mình phía dưới cũng được nhé. Viết Backend APIToàn bộ backend API được triển khai trên framework là Django. Đây là một framework mạnh mẽ hỗ trợ cho người dùng viết web và giao diện và API khá mạnh mẽ. Mình sẽ không đi quá sâu vào framework này mà chỉ hướng đẫn cho các bạn vài hàm cơ bản để sử dụng thôi nhé: Validate request từ WebhookGiống như đã nêu ở bên trên thì mỗi lần gửi request các bạn đều phải validate xem request đó có là request hợp lệ hay không (có bị giả mạo không). Bước này thực hiện như sau:
Hàm xử lý request
0 Chúng ta sẽ thấy hàm trên sẽ thực hiện validate request. Nếu request là hợp lệ thì tiến hành xử lý payload trong hàm handle_payload. Đến bước này các bạn hoàn toàn có thể sử dụng hàm test chatbot bên trên để tìm ra câu trả lời phù hợp. Mình không đi quá sâu vào phần này nhé. Việc xử lý các bạn có thể tham khảo trực tiếp trên mã nguồn của mình cung cấp phía dưới Deploy HerokuĐến bước này các bạn có thể deploy ứng dụng của mình lên trên Heroku nhé. Nếu các bạn chưa rõ có thể tham khảo tại đây Source codeToàn bộ source code các bạn có thể tham khảo tại đây Test kết quảMọi người có thể xem qua đoạn trò chuyện của mình và cô bạn Chatbot này nhé. Mình đã training bạn ấy để hỏi về lịch làm việc của team mình thông qua API của Doodle và các bạn cũng có thể làm việc với nhiều chức năng hơn thế. Rất là thú vị phải không nào |