Trong phần trước, mình đã giới thiệu về các khái niệm cơ bản trong chatbot. Trong phần này, mình sẽ hướng dẫn các tạo một con chatbot có chức năng “cực ngầu”: trả lời hello khi người dùng nhắn tin đế Zalo OA 😎

Phần 1: Giới thiệu về chatbot

Phần 2: Cấu hình Zalo OA và tạo chatbot “say hello” (trang hiện tại)

Phần 3: Xây dựng bộ xử lí ngôn ngữ tự nhiên và triển khai cho người dùng cuối.

Đăng kí Zalo OA:

Zalo OA là từ viết tắt của Zalo Offcial Accounts. Hiểu đơn giản, Zalo OA tương tự như fanpage trên facebook.

Hiện tại, bạn chỉ có thể tạo chatbot trên Zalo OA. Để đăng kí, Zalo OA, truy cập vào link: https://oa.zalo.me/home. Điều cực kì quan trọng, bạn phải tạo Zalo OA loại Cửa Hàng, tuyệt đối không chọn dạng Nội dung vì hiện tại dạng Nội dung sẽ không có tính năng chat với người theo dõi.

Lưu ý: sau khi tạo OA xong, bạn tạo thêm 1 sản phẩm cho cửa hàng. Nếu không, Zalo sẽ buộc bạn phải gửi giấy phép kinh doanh trong vòng 14 ngày nếu không sẽ khóa OA của bạn.

Cấu hình webhook OA:

Bạn cần truy cập vào developer portal của Zalo. Truy cập trang https://developers.zalo.me/oa/openapi/manage/oas để cấu hình cho OA. Trong trang này bạn sẽ thấy danh sách các OA bạn đang làm admin.Để sử dụng webhook cho OA Zalo, bạn phải kích hoạt trạng thái  thái 3rd party.

Bước 1: Click vào nút chỉnh sửa:

Bước 2: Click vào nút Enable để kích hoạt khả năng tích thư viện bên thứ 3.

Ở đây bạn sẽ thấy 2 thông tin quan trọng là OA ID và OA Secret được dùng cho bên thứ 3 gọi API của OA.

Sau khi bạn bật thành công, trạng thái 3rd Party của OA sẽ chuyển sang Enable và nút “Register API + Webhook” sẽ xuất hiện.

Bạn click vào nút sẽ liệt kê các API mà bên thứ 3 có thể xử dụng đối với OA của bạn. Mặc định thì thì API send text message đã được kích hoạt sẵn.

Phía dưới bạn sẽ thấy chỗ để ta cấu hình webhook. Chúng ta sẽ cấu hình sau khi xây dựng được bot server.

Tạo bot server:

Zalo hỗ trợ rất nhiều ngôn ngữ để tạo bot server: Java, C#, Javascript. Ở đây, mình sẽ chọn API của NodeJS để phát triển bot server. Mình sử dụng Express để phát triển Restful web service cho NodeJS.

Thông tin về các API của NodeJS tại: https://developers.zalo.me/docs/sdk/nodejs-sdk-66

Mình tạo một bot server đơn giản có chức năng say “Hello + tên người dùng + tin nhắn người dùng vừa gửi”. Toàn bộ source code có thể xem tại repo của mình: https://github.com/gitvani/zalo-chatbot-demo

Ở đây mình tạo API có URI là /webhook để xử lí tin nhắn từ Zalo:

server.get('/webhook', (req, res) => {
  console.log("User had send a message.");
  // xử lí thêm gì đó....
})

Tiếp theo, bạn cần cung cấp OA ID và OA secret key của OA của bạn:

var oaid = '1187402161946668067';
var secretKey = '5B2mFnLsEHRtoLI8C7lS';

Trong thực tế, bạn không nên để các thông tin nhạy cảm như trên vào code. Trong nodeJS, bạn có thể dụng biến môi trường để che giấu thông tin nhạy cảm:

var oaid = process.env.OAID;
var secretKey = process.env.SECRET_KEY;

Đăng kí webhook cho OA:

Để đăng kí webhook cho Zalo OA, bạn phải deploy lên một hosting để có được địa chỉ public domain.

Vấn đề deploy lên hosting rất tốn nhiều thời gian. Vậy nếu mình muốn develop ở localhost trước thì phải làm sao? Đến lúc này, ta cần sử dụng 1 tool rất hay đó là ngrok. Ngrok có chức năng cấu hình một địa chỉ localhost thành một địa chỉ public domain.

Sau khi có được một địa chỉ public domain, truy cập lại trang cấu hình của zalo OA, ta thêm vào URL callback trên OA Zalo. Nên dùng địa chỉ https vì trong lúc mình làm demo này, địa chỉ http bị lỗi với NodeJS SDK.

Lưu ý:

Nếu theo code phía triên của mình thì URI là /webhook. Lúc cấu hình URL callback nhớ thêm vào nhé.

Bỏ chọn Forece query. Nếu bạn chọn cái này thì những tin nhắn bắt đầu bằng # mới có thể sử dụng được webhook.

 

 

Vào Chat thử:

Giờ bạn chỉ cần tìm OA Zalo và chat thử thôi. Có thể quét mã QR hoặc tìm tên OA trên ứng dụng điện thoại. Đế lấy mã QR, bạn vào mục Quản lí → Thông tin tài khoản

OA QRCode

zalo.me/1187402161946668067

Rất may là Zalo hỗ trợ nền tảng web. Sau khi chat lần đầu tiên với OA, bạn có thể truy cập  https://chat.zalo.me/ để chat nhanh hơn.

Kết:

Trong phần này, chúng ta đã biết về cách cấu hình webhook cho OA Zalo và thêm được vài mẹo hữu ích để làm chatbot nhanh hơn trên zalo như: ngrok và Zalo web app. Trong phần tiếp theo, mình sẽ hướng dẫn cách xây dựng bộ xử lí ngôn ngữ tự nhiên trên Wit.ai để làm con bot thông minh hơn tí 😉

 

 

 


Nhận thấy các bài viết tiếng Việt chuyên về lập trình blockchain còn ít nên tôi quyết định chuyển hướng sang chuyên viết về chủ đề blockchain dành riêng cho lập trình viên. Hi vọng những bài viết này sẽ giúp ích cho các bạn đang muốn theo đuổi lĩnh vực còn khá mới này.

Nếu bạn thấy bài viết hữu ích, bạn có thể ủng hộ tôi vài tách cà phê thông qua MoMo tại đây

Bạn cũng có thể nhờ tôi tư vấn về giải pháp công nghệ thông tin nói chung và blockchain nói riêng (có tính phí) thông qua đây

Series Navigation<< Tôi đã phát triển chatbot trên Zalo như thế nào? Phần 1: Giới thiệu về chatbot