Hướng dẫn viết chat bot cho Facebook – Phần 2: Tạo Fanpage và kết nối với bot
chat
2
facebook
18
bot
2
White

Huy Hoàng Phạm viết ngày 04/06/2016

Thấy các bạn test hộ nhiều quá, mình rất cảm động nên đã thêm chức năng "đàm luận nhân sinh" vào bot để các bạn có người chém gió nhe. Các bạn có thể tiếp tục trò chuyện với bot tại m.me/toidicodedao nhé.13322034_257454591282863_7403060821970737330_nphần trước, mình đã giới thiệu cơ chế hoạt động của bot Faceobok, cùng với một số khái niệm các bạn cần nắm rõ. Ở bài này, chúng ta sẽ bắt tay vào tạo fanpage và code. Lần này mình hướng dẫn bằng video, các bạn bật phụ đề lên xem nhé.

Bước 1 – Tạo Fanpage, thêm chức năng Messenger

Các bạn làm theo clip dưới để tạo fanpage nhé. Với bạn nào đã có Fanpage thì xem đoạn sau để tích hợp chức năng Messenger vào fanpage.
Tính mình thích ngắn gọn, không muốn lê thê dài dòng nên video cũng rất ngắn gọn, chỉ khoảng 1-2 phút để không lãng phí thời gian của mọi người.

Bước 2 – Tạo Webhook và kết nối với Fanpage

Như mình đã nói ở bài trước, viết bot bằng ngôn ngữ gì cũng được, chỉ tạo được webhook và gọi được RestAPI là ok. Tuy nhiên, Facebook sẽ check Webhook của bạn, đòi hỏi webhook phải là https. Việc code và deploy webhook sẽ khá phiền phức, do đó chúng ta sử dụng Cloud9 – IDE trên mây. Các bạn xem lại bài cũ để biết sơ cách sử dụng nhé.
Sau khi đăng nhập vào cloud9, bạn làm theo các bước sau nhé. Link Github chứa code là: https://github.com/ToiDiCodeDaoSampleCode/facebook-chat-bot

Bạn đã thành công trong việc tạo Webhook và kết nối nó với fanpage. Mỗi khi có người nhắn tin cho fanpage, bot server sẽ nhận được tin nhắn. Bắt đầu viết code xử lý tin nhắn thôi nào.

Bước 3 – Xử lý tin nhắn và trả lời

Mỗi khi có tin nhắn, facebook sẽ POST một request như sau lên Webhook của chúng ta (Thông tin chi tiết về webhook ở đây).

{
"object":"page",
"entry":[
{
"id": "PAGE_ID",
"time":1457764198246,
"messaging":[
{
"sender":{
"id":"USER_ID"
},
"recipient":{
"id":"PAGE_ID"
},
"timestamp":1457764197627,
"message":{
"mid":"mid.1457764197618:41d102a3e1ae206a38",
"seq":73,
"text":"hello, world!"
}
}
]
}
]
}
view raw sample_post.json hosted with ❤ by GitHub
Ta đọc trường messaging.message.text, xử lý và gửi chuỗi JSON sau đến RestAPI của facebook để trả lời (Thông tin chi tiết về API ở đây).
{
"recipient":{
"id":"USER_ID"
},
"message":{
"text":"hello, world!"
}
}
view raw sendback.js hosted with ❤ by GitHub
Các bạn tiếp tục làm theo video nhé
Đây là file server.js thành quả cho các bạn ko đọc được code. Nhớ gắn token của bạn vào để chạy!
// # SimpleServer
// A simple chat bot server
var logger = require('morgan');
var http = require('http');
var bodyParser = require('body-parser');
var express = require('express');
var router = express();
var app = express();
app.use(logger('dev'));
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({
extended: false
}));
var server = http.createServer(app);
var request = require("request");
app.get('/', (req, res) => {
res.send("Home page. Server running okay.");
});
// Đây là đoạn code để tạo Webhook
app.get('/webhook', function(req, res) {
if (req.query['hub.verify_token'] === 'ma_xac_minh_cua_ban') {
res.send(req.query['hub.challenge']);
}
res.send('Error, wrong validation token');
});
// 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, "Tui là bot đây: " + 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: "token",
},
method: 'POST',
json: {
recipient: {
id: senderId
},
message: {
text: message
},
}
});
}
app.set('port', process.env.OPENSHIFT_NODEJS_PORT || process.env.PORT || 3002);
app.set('ip', process.env.OPENSHIFT_NODEJS_IP || process.env.IP || "127.0.0.1");
server.listen(app.get('port'), app.get('ip'), function() {
console.log("Chat bot server listening at %s:%d ", app.get('ip'), app.get('port'));
});
view raw server.js hosted with ❤ by GitHub
Hiện giờ bạn có thể test và viết thêm chức năng cho bot của mình được rồi đấy. Ở phần 3 mình sẽ hướng dẫn cách deploy bot lên server và submit cho Facebook duyệt nhé.

Bình luận


White
{{ comment.user.name }}
Bỏ hay Hay
{{comment.like_count}}
Male avatar
{{ comment_error }}
Hủy
   

Hiển thị thử

Chỉnh sửa

White

Huy Hoàng Phạm

54 bài viết.
1012 người follow
Kipalog
{{userFollowed ? 'Following' : 'Follow'}}
Cùng một tác giả
White
79 8
SOLID là gì – Áp dụng các nguyên lý SOLID để trở thành lập trình viên code “cứng” Trong quá trình học, hầu như các bạn sinh viên đều được học một s...
Huy Hoàng Phạm viết 3 năm trước
79 8
White
59 8
Nhập đề Kinh thư ghi lại rằng, con đường tu chân có 3 cảnh giới: Luyện khí, Trúc cơ và Kết đan. Luyện khí là quá trình rèn thân luyện thể, cho phà...
Huy Hoàng Phạm viết hơn 2 năm trước
59 8
White
54 23
Luận về comment code (Phong cách kiếm hiệp) Comment code luôn là vấn đề gây tranh cãi sứt đầu mẻ trán trong giới võ lâm. Xưa kia, thuở còn mài đít...
Huy Hoàng Phạm viết 3 năm trước
54 23
Bài viết liên quan
White
20 5
Tạo ứng dụng chat với 50 dòng code, Firebase và AngularJS Từ lúc viết blog tới giờ, mình chưa có bài nào hướng dẫn các bạn tạo ra một sản phẩm từ ...
Huy Hoàng Phạm viết 3 năm trước
20 5
White
18 3
Một lỗ hổng bảo mật cực kỳ nghiêm trọng, có ảnh hưởng trực tiếp đến quyền riêng tư của khoảng 1 tỷ tài khoản Facebook và có khả năng ảnh hưởng tới ...
Hùng PV viết gần 2 năm trước
18 3
{{like_count}}

kipalog

{{ comment_count }}

bình luận

{{liked ? "Đã kipalog" : "Kipalog"}}


White
{{userFollowed ? 'Following' : 'Follow'}}
54 bài viết.
1012 người follow

 Đầu mục bài viết

Vẫn còn nữa! x

Kipalog vẫn còn rất nhiều bài viết hay và chủ đề thú vị chờ bạn khám phá!