Bài viết sau đây, Ngô Tôn xin hướng dẫn các bạn tạo Chat Bot tự động trả lời tin nhắn Facebook.
Để hiểu rõ cách thức Facebook Bot hoạt động, bạn cần nắm rõ 2 khái niệm: Webhook và RestAPI.
Webhook là gì?
Webhook bạn có thể hiểu đơn giản là 1 công cụ để truy vấn và lưu trữ dữ liệu của một Event xác định. Khi một trong những sự kiện được kích hoạt, nó sẽ gửi một HTTP POST đến URL đã được cấu hình webhook.
RestAPI?
Có một bài viết mình đã nói về Rest API các bạn có thể xem qua bài viết này tại đây: Xây dựng Webservice với RESTful API trong PHP
Cơ chế hoạt động của Facebook Bot
Cơ chế hoạt động của Facebook Bot cũng khá đơn giản.
Đầu tiên, ta đăng ký 1 địa chỉ webhook với Facebook. Khi có người gửi tin nhắn đến bot, facebook sẽ POST thông báo đến webhook của chúng ta để ta tiếp tục xử lý.
Sau khi xử lý xong, nếu muốn reply lại người dùng, ta gửi tin cho RestAPI của Facebook. Khi nhận được tin, bot sẽ trả lời lại cho người dùng.
Giờ chúng ta sẽ bắt đầu nhé.
Bước 1: Tạo một Fanpage (Nếu bạn nào có rồi thì bỏ qua)
Bước 2: Tạo Ứng dụng mới
- Các bạn vào địa chỉ sau: https://developers.facebook.com/ rồi tạo 1 App mới, các bạn nhập thông tin tùy ý.
- Sau khi đã tạo được App, các bạn vào phần Thêm sản phẩm và chọn Messenger.
Tạm thời ta chưa sử dụng đến ứng dụng này.
Bước 3: Các bạn tạo 1 tài khoản trên trang Cloud 9: https://c9.io
Bước 4: Thêm Workspace mới để tạo webhook.
- Workspace name: Các bạn đặt tùy ý, ở đây mình đặt là ” facebook-chat-bot “
- Để nhanh chóng các bạn hãy clone code từ trang Git của mình. Hãy điền địa chỉ sau vào phần Clone from Git or Mercurial URL (optional): https://github.com/ngoton/facebook-chat-bot
- Các bạn chọn Template là Node.js
- Sau khi Cloud 9 built xong các bạn chạy script sau dưới phần bash
1 |
npm install |
- Xong, các bạn Run thử. Cloud 9 sẽ tạo cho các bạn 1 địa chỉ URL, ví dụ của mình là: https://facebook-chat-bot-ngoton.c9users.io
Bước 5: Tạo Webhook
1 2 3 4 5 6 |
app.get('/webhook', function(req, res) { if (req.query['hub.verify_token'] === 'ngoton.it') { res.send(req.query['hub.challenge']); } res.send('Error, wrong validation token'); }); |
Ở đây mình tạo đường dẫn sau: https://facebook-chat-bot-ngoton.c9users.io/webhook
Mã xác thực (verify_token) các bạn đặt tùy ý, mình đặt là “ngoton.it” 😀
Bước 6: Đăng ký Webhook với Facebook
– Các bạn quay trở lại trang ứng dụng facebook mình đã tạo trước đó.
– Tại phần Cài đặt của Messenger, các bạn chọn Setup Webhooks.
– Mục URL các bạn điền địa chỉ webhook: https://facebook-chat-bot-ngoton.c9users.io/webhook.
– Mã xác minh là mã xác thực ở đoạn code trên bước 5 chúng ta đã tạo: “ngoton.it“.
– Các bạn tick vào các trường rồi Xác minh và lưu.
– Cuối cùng, bạn chọn trang fanpage nào cần đăng ký rồi bấm Đăng ký.
Bước 7: Xử lý tin nhắn khi người dùng nhắn tin cho bot
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 |
// Xử lý khi có người nhắn tin cho bot app.post('/webhook', function(req, res) { var entries = req.body.entry; for (var entry of entries) { var messaging = entry.messaging; for (var message of messaging) { var senderId = message.sender.id; if (message.message) { // If user send text if (message.message.text) { var text = message.message.text; console.log(text); // In tin nhắn người dùng sendMessage(senderId, "Trả lời: " + text); } } } } res.status(200).send("OK"); }); // Gửi thông tin tới REST API để trả lời function sendMessage(senderId, message) { request({ url: 'https://graph.facebook.com/v2.6/me/messages', qs: { access_token: "page_token", }, method: 'POST', json: { recipient: { id: senderId }, message: { text: message }, } }); } |
Các bạn thay “page_token” bằng Mã truy cập Trang bằng cách:
Tại phần cài đặt Ứng dụng Facebook, các bạn chọn trang fanpage sau đó bạn sẽ nhận được đoạn mã Access Token có dạng sau:
EAACWarf4hLQBABRnZAxpVnl8hiJFVgH2lEQT5p3a969AOPmEJzhcZArOzZCNVxu0a2O3jBeKT797vyZBtC8cswt
Vậy là xong, các bạn có thể test bằng cách nhắn tin cho trang fanpage, bot sẽ tự động trả lời cho bạn bằng câu:
1 |
Trả lời: [tin nhắn của bạn] |
Các bạn chú ý là hiện tại chúng ta đang ở trạng thái test chưa được publish nên sẽ chưa hoạt động với người dùng khác, các bạn cần phải submit cho Facebook xét duyệt. À quyên, các bạn nên deploy lên hosting để lưu trữ vì trên Cloud 9 chỉ hỗ trợ chúng ta test thôi. Các bạn có thể chọn Openshift khá lá tốt.
Submit Facebook
- Các bạn điền đầy đủ thông tin cho Ứng dụng.
- Tại mục App Review for Messenger của phần Cài đặt Messenger các bạn bấm Add to Submission.
- Điền đầy đủ thông tin sau đó Gửi.
Mình có làm video cho các bạn tiện theo dõi. Hi vọng bài viết này giúp ích cho các bạn. Chúc các bạn thành công!
Bước 3: Các bạn tạo 1 tài khoản trên trang Cloud 9: https://c9.io
em tới bước này chưa tạo đc tài khoản vì thiếu credit card, Anh có thể cho em mượn tk được không ạ?em cảm ơn, mail là huythaib15kt@gmail.com…em cảm ơn