Hướng dẫn xây dựng server. |
Tạo một Fanpage và Facebook App
Việc tạo fanpage đã có rất nhiều hướng dẫn rồi nên mình không làm dài dòng nữa. Hãy vào trang này và tạo một Fanpage theo nhu cầu của bạn: https://www.facebook.com/pages/create/
Sau đây là các bước tạo một Facebook App liên kết với Fanpage của bạn:
- Vào trang Facebook for Developers.
- Đăng nhập vào bằng tài khoản Facebook của bạn.
- Nhấn nút Tạo ứng dụng.
- Nhập vào Tên hiển thị và Email liên hệ. Ấn nút Tạo ID ứng dụng và nhập captcha.
- Trong trang Thêm sản phẩm, bạn hãy chọn Messenger và nhất Set up.
Các bạn có thể làm theo video hướng dẫn của anh Hoàng code dạo dưới đây:
Tạo một NodeJS server
Đăng ký tài khoản Codeanywhere:
Giới thiệu một chút về CodeAnyWhere nhé, đây là một trình Cloud IDE dành cho các lập trình viên. Với một tài khoản miễn phí bạn có thể tạo một Container (server) miễn phí, tuy nhiên server này không chạy suốt, mà chỉ chạy khi bạn đăng nhập vào mà thôi. Như vậy là đã đủ cho các bạn thử nghiệm hệ thống. Ngoài ra thì còn một dịch vụ Cloud IDE khác là Cloud9 mà mình đang sử dụng để học các ngôn ngữ lập trình.
Link đăng ký: https://codeanywhere.com/signup
Việc đăng ký rất đơn giản, chỉ việc điền vào email, password và vào mail xác nhận.
Tạo một Server và cho chạy thử:
Ấn vào nút Editor để vào trang quản lý, hoặc vào bằng link này.Trong bảng Connection Wizard hãy chọn tab Container hãy điền vào tên tùy thích, ở phần server hãy chọn Node.js - Ubuntu 14.04.
Tạo server. |
IDE. |
Ví dụ của mình: https://server-controller-nhokcodon0406661283.codeanyapp.com (nhớ là phải có https)
Bây giờ hãy tắt tab này đi, chuyển sang tab SSH Console ở IDE (số 2 trên ảnh). Lần lệnh nhập các lệnh sau:
[[mcode]]$ git clone https://github.com/bongma007/controller-via-messenger.git[[ecode]]
Lệnh này sẽ tải một bản sao (clone) các file trên repository về và đặt trong một thư mục có tên là tên của repository.
[[mcode]]$ mv controller-via-messenger/* ~/workspace[[ecode]]
[[mcode]]$ rmdir controller-via-messenger[[ecode]]
Di chuyển các file ra thư mục [[scode]]workspace[[escode]] để làm việc cho dễ.
Bạn hãy mở file [[scode]]server.js[[escode]] ra để chỉnh sửa cấu hình một số thứ nhé. Mở từ thanh quản lý bên trái (số 3 trên ảnh).
[[lcode]]var senderId = '000000000000'; //ID Facebook mặc đinh nhận tin nhắn[[ecode]]
Bạn hãy thay dãy số 0 thành ID Facebook của bạn để giới hạn server chỉ phản hồi về một người dùng nhất định. Còn nếu không cần giới hạn có thể bỏ dòng này, server sẽ tự động phản hồi về người dùng ra lệnh.
[[lcode]]if (req.query['hub.verify_token'] === '0inter3home6net9')[[ecode]]
Bạn hãy thay [[scode]]0inter3home6net9[[escode]] thành một chuỗi ký tự tùy ý bạn, đây là chuỗi ký tự mà ta sẽ cung cấp cho facebook để gửi dữ liệu vào webhook của ta.
[[lcode]]...
socket.on("*", function(packet) {
console.log('Nhận dữ liệu từ ESP: ', packet.data)
var eventName = packet.data[0]
var eventJson = packet.data[1] || {}
// code xử lý ở đây
})
...[[ecode]]
Trong đây bạn sẽ viết code để xử lý xự kiện được ESP8266 gửi lên. Và bạn có thể dùng phương thức emit() để gửi lại, ví dụ:
[[lcode]]esp8266_nsp.emit(name, json)[[ecode]]
[[scode]]name[[escode]] là một chuỗi chứa tên, đặt không quá 10 ký tự, đưa về Arduino còn xử lý.
[[scode]]json[[escode]] là một chuỗi json chứa các tham số, để đưa về Arduinio xử lý.
[[lcode]]...
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 (message.message.text) {
var text = message.message.text
var cmder = text.toLowerCase()
console.log(cmder);
var eventName
var eventJson
var msgGuidi
// code xử lý ở đây
}
}
}
}
res.status(200).send('OK');
});
...[[ecode]]
Đoạn này sẽ nhận tin nhận nội dung tin nhắn vào biến [[scode]]text[[escode]], bạn hãy viết code xử lý ở trong này. Trong code của mình thì mình dùng [[scode]]switch(){}[[escode]] để xử lý.
Trong đây, nếu bạn muốn gửi lại một tin nhắn thì dùng hàm
[[lcode]]sendMessage(senderId, message)[[ecode]]
với tham số [[scode]]senderId[[escode]] là số ID Facebook của người nhận, tham số [[scode]]message[[escode]] là nội dung tin nhắn.
Bây giờ cho chạy thử server xem nào, mở lại SSH Console lên:
[[mcode]]$ npm install[[ecode]]
Lệnh này sẽ cài đặt các module cần thiết để chạy server, sau đó cho chạy server:
[[mcode]]$ node server.js[[ecode]]
Rồi bạn hãy vào https://app-user.codeanyapp.com (tên miền của bạn) xem web có hoạt động không? Nếu thấy câu "Home page. Server running okay." thì chúc mừng!
Kết nối Server và App:
Quay lại trang quản lý App của bạn lúc nãy, chọn Messenger > Cài đặtTạo mã token:
Để server có quyền gửi tin nhắn thì FB sẽ cấp cho ta một mã xác thực để server xác minh, gọi là token. Để lấy được token, ở phần Lấy mã bạn hãy chọn fanpage của bạn tạo lúc nãy và lấy mã token hiện ra:Tạo mã token. |
[[lcode]]access_token: "dien_token_vao_day",[[ecode]]
thay [[scode]]dien_token_vao_day[[escode]] thành mã token của bạn, ví dụ:
[[lcode]]access_token: "EAAUT0IGCQ7cBAPNHMHeCiVW4paERMzVVtXN71FNCr8R5q5ZBmlSVOXzcOUSUuXIdNtPwrsZBlp3eZAPVZA3NzcVa9QYrsyCmGU1U6EiQr6mluXelIlduHMs14g2rcVaX4Jf9ZBGTa4x0QOf7EZC7MUjnKJoBBE8nRtk2bh35GhuwZDZD",[[ecode]]
Thiết lâp webhooks:
Ở phần Webhook, các bạn ấn vào nút Thiết lập webhooks ở trên góc phải, và điền vào:URL gọi lại: điền vào https://app-user.codeanyapp.com/webhook (nhớ thay lại nha, nói hoài :)))
Mã xác minh: điền vào cái chuỗi khóa ở trên do bạn đặt. Mặc định [[scode]]0inter3home6net9[[escode]]
Còn phần Trường gửi các bạn chọn messages, messaging_postbacks, messaging_optins, message_deliveries.
Sau khi đăng ký thành công webhook, bạn sẽ thấy một trường mới hiện ra:
Webhook. |
Như vậy là xong, hãy thử gửi tin nhắn cho Fanpage bằng chính tài khoản Facebook của bạn, nếu nhận được phản hồi, tức là bạn đã cấu hình thành công.
Tin nhắn với page. |
Ở phía server. |
Không có nhận xét nào:
Đăng nhận xét