Vietnam

    Nodejs.vn

    • Register
    • Login
    • Search
    • Categories
    • Recent
    • Popular
    • Tags
    • Groups
    • Search

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

    Node.JS
    10
    40
    42327
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • mike
      mike last edited by mike

      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/

      U 1 Reply Last reply Reply Quote 0
      • J
        jokyspy last edited by

        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

        1 Reply Last reply Reply Quote 1
        • M
          mvthp last edited by

          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.....

          mike 1 Reply Last reply Reply Quote 0
          • johnathan
            johnathan last edited by

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

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

            1 Reply Last reply Reply Quote 0
            • mike
              mike @mvthp last edited by

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

              1 Reply Last reply Reply Quote 0
              • H
                hoanggiagia1005 last edited by

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

                1 Reply Last reply Reply Quote 0
                • Tung Nguyen215
                  Tung Nguyen215 last edited by

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

                  1 Reply Last reply Reply Quote 0
                  • H
                    hoanggiagia1005 last edited by

                    alt text đây a

                    N I 2 Replies Last reply Reply Quote 0
                    • N
                      nhutuit last edited by

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

                      1 Reply Last reply Reply Quote 0
                      • N
                        nhutuit @hoanggiagia1005 last edited by

                        @hoanggiagia1005 xem code thu :3

                        H 1 Reply Last reply Reply Quote 0
                        • H
                          hoanggiagia1005 @nhutuit last edited by

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

                          N 1 Reply Last reply Reply Quote 0
                          • N
                            nhutuit @hoanggiagia1005 last edited by

                            @hoanggiagia1005 code tren nay lam j coa utils.js

                            H 1 Reply Last reply Reply Quote 0
                            • H
                              hoanggiagia1005 @nhutuit last edited by

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

                              1 Reply Last reply Reply Quote 0
                              • I
                                immabee @hoanggiagia1005 last edited by

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

                                1 Reply Last reply Reply Quote 0
                                • K
                                  kanishi last edited by

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

                                  1 Reply Last reply Reply Quote 0
                                  • H
                                    huydd last edited by

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

                                    K 1 Reply Last reply Reply Quote 0
                                    • K
                                      kanishi @huydd last edited by

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

                                      1 Reply Last reply Reply Quote 0
                                      • Nguyễn Công Kiều Tam
                                        Nguyễn Công Kiều Tam last edited by

                                        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

                                        K mrokay 2 Replies Last reply Reply Quote 0
                                        • K
                                          kanishi @Nguyễn Công Kiều Tam last edited by

                                          @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.

                                          1 Reply Last reply Reply Quote 0
                                          • mrokay
                                            mrokay @Nguyễn Công Kiều Tam last edited by

                                            This post is deleted!
                                            1 Reply Last reply Reply Quote 0
                                            • First post
                                              Last post
                                            $(document).ready(function () { app.coldLoad(); }); }