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

Series gồm 3 phần:

  1. Giới thiệu một số khái niệm, cơ chế hoạt động của Facebook bot
  2. Hướng dẫn cách code và test bot Facebook
  3. Cách deploy bot và nộp cho Facebook xét duyệt

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_n

phầ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 nhé. 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).

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

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!

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

Advertisements

47 thoughts on “Hướng dẫn viết chat bot cho Facebook – Phần 2: Tạo Fanpage và kết nối với bot”

      1. Phần 3, 4 a chưa post nhưng e có xem qua video trong kênh của a rồi :v nhưng ở phần sử dụng git trên openshift để đưa source code lên server e làm mãi không được (vì xưa giờ e đưa code php lên openshift không dùng git). Nodejs nó sẽ được upload lên thư mục nào của openshift khi không dùng git vậy a 🙂

        Like

      2. Ko dùng git thì a chịu :)), lúc dùng git ko chỉ copy file mà nó còn build lại, truyền biến môi trường v..v vào nữa. Nếu đã code bằng NodeJS thì em cứ làm theo hướng dẫn mà deploy bằng git thôi?

        Like

  1. mình cũng làm được 1 con bot, tuy nhiên cách xử lý các button post back về thì làm thế nào nhỉ. Ví dụ: mình tạo ra 2 nút (1 nút là tán gẫu, 1 nút là xem hình ngẫu nhiên). làm thế nào để biết nút nào được bấm mà xử lý nhỉ.
    Mình dùng PHP, sau đây là file webhook.php của mình.
    $input = json_decode(file_get_contents(‘php://input’), true);
    $sender = $input[‘entry’][0][‘messaging’][0][‘sender’][‘id’]; //sender facebook id
    $message = $input[‘entry’][0][‘messaging’][0][‘message’][‘text’]; //text that user sent
    $payload= $input[‘entry’][0][‘messaging’][0][‘postback’][‘payload’];// get payload => nhưng biến này không có giá trị, khi mình bấm nút có postbank
    Thank you

    Like

  2. Anh ơi, làm sao để e làm cái Greeting lúc bắt đầu dc vậy anh, e mò mãi còn mỗi phần step 1 này thì chịu ạ

    Like

  3. Error: Cannot find module ‘morgan’
    at Function.Module._resolveFilename (module.js:325:15)
    at Function.Module._load (module.js:276:25)
    at Module.require (module.js:353:17)
    at require (internal/module.js:12:17)
    at Object. (/home/ubuntu/workspace/server.js:3:14)
    at Module._compile (module.js:409:26)
    at Object.Module._extensions..js (module.js:416:10)
    at Module.load (module.js:343:32)
    at Function.Module._load (module.js:300:12)
    at Function.Module.runMain (module.js:441:10)
    Nó báo lỗi như trên là bị gì vậy nhỉ

    Like

  4. Hôm nay làm theo tut của anh, facebook đã verify thành công nhưng chat với bot thì không có phản hồi nào cả.
    – Em debug thì thấy facebook k gửi POST request lên cho app?.
    – Em thấy app dùng api 2.6 mà bây giờ facebook support 2.8 em thử sửa lại thành 2.8 trong app nhưng cũng không thành công.
    giờ em phải làm gì :v?

    Like

  5. Chào anh Hoàng , em rất cảm ơn anh đã hướng dẫn bài viết này
    em đã làm theo và mắc 1 lỗi là khi mình gửi tin nhắn nhưng group không nhắn lại ạ anh xem giúp em với, anh có thể xem ảnh này, khi mình gửi tin nhắn thì chương trình vẫn nhận được và log ra màn hình ạ
    [img]http://wtai.cf/f/1634/code.png[/img]

    Like

      1. rồi anh ạ , em làm từng bước mà anh,em lấy token như trong video của anh mà, hay facebook mới có cái gì khác không ạ

        Like

  6. à ok rồi anh ơi, đang trong chế độ phát triển nên chỉ tương tác với quản trị viên, cảm ơn anh

    Like

  7. Cho em hỏi là khi chạy npm install thì hiện WARN là “No repository field” và “No license field” . Lỗi này là sao vậy anh ?

    Like

  8. mình bị lỗi này khi run server.js

    (node:13872) [DEP0062] DeprecationWarning: `node –debug` and `node –debug-brk` are invalid. Please use `node –inspect` or `node –inspect-brk` instead.

    Like

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s