Hướng dẫn viết chat bot cho facebook



  • Xin chào. Hôm nay các bạn có khỏe không ? Bạn có muốn đi bán sim không ? Hay muốn unfriend bằng cách nhắn tin chửi hết mọi người trong friend list hoặc là bạn muốn bán sim để ra đường bị đánh chết. Đúng rồi đấy, hôm nay chúng ta sẽ cùng xây một công cụ như vậy – Facebook Chat Bot.

    Chức năng

    Bạn có thể nghĩ về rất nhiều chức năng mà con bot này có thể có, nó cũng phong phú, đa dạng như bên slack vậy. Nhưng mà trong bài này thì mình chỉ dừng lại ở một ứng dụng đơn giản nhất là tự động trả lời tin nhắn. Mô tả cơ bản về nó là nó rất đơn giản.

    Vì facebook đã ngưng cung cấp chat API. Vì vậy chúng ta sẽ phải tự mình bơi. Chúng ta cần phải đóng giả là một người dùng, login vào facebook và tạo các http request tới server của facebook để thực hiện các thao tác về tin nhắn.

    Thật may vì đã có người làm điều này rồi, và anh ấy đã xây dựng nó thành một module mà chúng ta chỉ cần require và sử dụng mà thôi. Người đó là Avery Morin và thư viện Facebook Chat API của ảnh. Mình cũng không biết là liệu có phải những người bán sim cũng sử dụng thư viện này hay không nữa.

    Thiết lập project

    Đây là project viết bằng nodejs, nên trước tiên bạn phải có nodejs

    Bây giờ mở cửa sổ command line lên. Và tạo thư mục mà bạn muốn code project trong đó. Di chuyển vào thư mục đó và khởi tạo nodejs project bằng lệnh này :
    npm init

    Sau đó thì chỉ cần cung cấp các thông tin theo yêu cầu là được. Giờ bạn sẽ có file package.json có nội dung tương tự như sau :

    {
      "name": "facebook-bot",
      "version": "1.0.0",
      "description": "",
      "main": "index.js",
      "scripts": {
        "test": "echo \"Error: no test specified\" && exit 1"
      },
      "author": "",
      "license": "ISC"
    }
    

    Theo như config này, thì file chính của chúng ta là index.js. Nên giờ ta cần tạo file này, nội dung thì đơn giản thôi :

    console.log("Hello");

    Giờ run thử với lệnh node index.js thì kết quả sẽ là Hello.

    Cài đặt module

    Để cài đăt module Facebook Chat API bạn dùng lệnh :
    npm install facebook-chat-api --save

    Trả lời tin nhắn đơn giản

    Chức năng đơn giản thôi, mỗi lần bật bot lên, thì bất kỳ ai nhắn tin vào nó cũng sẽ trả lời là theo một câu nhất đinh. Code sẽ như sau :

    var login = require("facebook-chat-api");
     
    var answeredThreads = {};
     
    // Create simple echo bot
    login({email: "[email protected]", password: "*****"}, function callback (err, api) {
        if(err) return console.error(err);
     
        api.listen(function callback(err, message) {
            console.log(message.threadID);
            if(!answeredThreads.hasOwnProperty(message.threadID)){
                answeredThreads[message.threadID] = true;
                api.sendMessage("BOT - Hiện tại mình đang đi ra ngoài, mình sẽ trả lời bạn ngay khi tới nhà,", message.threadID);
            }
        });
    });
    

    Mình cần phải đánh dấu lại những thread nào đã trả lời, để không trả lời 1 người hai lần. Tránh trường hợp họ muốn để lại lời nhắn, nhưng bot lại liên tục reply họ với cùng một câu. Và nhớ là thêm cữ BOT hoặc bất cứ cái gì để họ biết rằng không phải bạn đang trả lời họ.

    Tự động trả lời tùy theo khung giờ

    Buổi trưa mình thường đi ăn xong rồi ngủ, vì vậy mình không thể trả lời tin nhắn vào lúc này được. Đoạn code dưới đây chỉ tự động trả lời nếu nhận được tin nhắn vào khung giờ đó :

    var login = require("facebook-chat-api");
     
    var answeredThreads = {};
     
    // Create simple echo bot
    login({email: "YOUR_EMAIL", password: "****"}, function callback (err, api) {
        if(err) return console.error(err);
     
        api.listen(function callback(err, message) {
            var d = new Date();
            var h = d.getHours();
            if(h >= 12 && h <= 13 && !answeredThreads.hasOwnProperty(message.threadID)){
                api.getUserInfo(message.senderID, function(err, ret) {
                    if(err) return console.error(err);
                    for(var prop in ret) {
                        if(ret.hasOwnProperty(prop) && ret[prop].name) {
                            api.sendMessage( "BOT : Xin lỗi nha " + ret[prop].name + ", Giờ mình đi ra ngoài rồi, không có thời gian trả lời bạn.", prop, function(){
                                answeredThreads[message.threadID] = true;
                            });
                        }
                    }
                });
            }
        });
    });
    

    Lời kết

    Còn rất nhiều điều thú vị mà bạn có thể làm với thư viện này, Nhưng giới hạn bài viết chỉ dừng lại ở đây mà thôi. Mình cũng không muốn các bán sử dụng thư viện này để đi bán sim đâu, Hãy bắt tay vào làm điều gì đó có ích xem nào. Bạn có thể integrate facebook chat với slack, hoặc với một support board nào đó. Nó thật tuyệt vời, tiết kiệm thời gian biết mấy nhỉ. Hoặc bạn có thể xây dựng một game show bằng cách nhắn tin vào inbox và quay số ngẫu nhiên.

    Hãy xem mã nguồn của thư viện này và xem bạn làm được gì với nó nhé.

    Nguồn : https://laptrinh.senviet.org/lap-trinh-web/huong-dan-viet-chat-bot-cho-facebook/



  • Cách này khá hay, điểm tốt là setup và chạy rất đơn giản, nhưng điểm yếu là chỉ sử dụng được tài khoản cá nhân để trả lời tin nhắn phải không nhỉ?

    Hôm trước mình cũng có xem 1 clip cũng về chủ đề Facebook Chat Bot, nhưng dùng http api của Facebook để làm 1 ứng dụng cơ bản, trả lời bằng account fanpage. Mọi người tham khảo nhé: https://www.youtube.com/watch?v=zFO1cRr5-qY



  • có khi nào nó gửi cái user, password của mình vào server của bọn nào đó và rồi.....



  • có thím nào test chưa?
    Chạy dc k :(

    Love the life you live, live the life you love !

    0


  • @mvthp ko có chuyện đó đâu thím ^^
    @johnathan code đi thím...ngồi hóng làm chi!



  • e chạy không hiểu sao lại bị lỗi @@



  • Ném cái lỗi lên đây coi nào



  • alt text đây a



  • cai nay co get duoc trang thai cua minh dang online hay offline khong moi nguoi



  • @hoanggiagia1005 xem code thu :3



  • @nhutuit e dùng code bên trên mà @@



  • @hoanggiagia1005 code tren nay lam j coa utils.js



  • @nhutuit cái file đấy nằm trong api của facebook ạ



  • @hoanggiagia1005 update version node nha bạn ơi.



  • Hay quá, phiên bản nodejs của mình là 4.2.1, chạy ầm ầm.



  • Liệu có sợ bị họ lưu lại info facebook của mình ko nhỉ :|



  • @huydd dùng thì không sợ, sợ thì không dùng :v



  • Cái này có thể dùng trả lời cho facebook cá nhân của mình được không vậy mọi người



  • @Nguyễn-Công-Kiều-Tam đã nói trong Hướng dẫn viết chat bot cho facebook:

    Cái này có thể dùng trả lời cho facebook cá nhân của mình được không vậy mọi người

    Được bạn ạ. Cái này chỉ cho fb cá nhân thôi. Dùng cho fanpage phải dùng hướng dẫn khác.



  • This post is deleted!


  • Mình có viết 1 cái đễ phục vụ nghiên cứu thôi. chạy trên Google apps script. Anh em còn cần thì mình viết hướng dẫn.


Log in to reply