Trang Chủ

Cách reply nhiều comment cho một bài post trên facebook sử dụng facebook-graph-api

Đối với mỗi bài post bán hàng trên facebook, đôi khi mình nhận được hàng chục đến hàng trăm comment trên facebook để hỏi giá của các sản phẩm. Có rất nhiều comment mà mình sẽ reply với nội dung giống hệt nhau, vì vậy, mình nghĩ đến việc tạo ra một tool để giúp mình giải quyết vấn đề này chỉ trong một cú click chuột.

Trong bài viết lần này mình sẽ sử dụng Ruby on Rails tích hợp với facebook-graph-api để viết một web application đơn giản giúp quản lý trang fanpage bán mỹ phẩm của mình. Cụ thể, với application này mình sẽ thực hiện các hành động, lần lượt:

  1. Tạo một bài post bán mỹ phẩm trên facebook thông qua rails app. (bài post này là duy nhất, sẽ được lưu id)
  2. Với mỗi comment trên bài post vừa tạo, mình sẽ reply bằng một comment với nội dung là thông tin về các mặt hàng mà mình đang bán.

1. Cơ bản về facebook graph api.

Facebook graph api là một API để bạn có thể thao tác với cơ sở dữ liệu của facebook thông qua application của bạn. Mình sẽ lấy ví dụ về Tinder. Khi bạn đăng nhập vào tinder thông qua facebook, sẽ có một modal hiện lên như thế này:

Ở đây, Tinder đã sử dụng facebook-graph-api để hỏi xin quyền lấy dữ liệu về: tên và ảnh đại diện, danh sách bạn bè, sinh nhật, ảnh, lượt thích trang và địa chỉ emailcủa bạn trên facebook. Tinder sẽ dùng những dữ liệu lấy được này để làm những việc sau đây:

Vậy làm sao để một web application có thể thực hiện GET, CREATE, EDIT, UPDATE, DELETE với một phần cơ sở dữ liệu của facebook thông qua facebook-graph-api ? Vì facebook-graph-api là một api dựa trên nền tảng HTTP, nên câu trả lời là applicationcủa bạn phải biết cách để gọi các api request với các cú pháp tổng quát như sau:

Đó là những điều cơ bản về facebook-graph-api mà bạn cần hiểu để có thể tiếp tục với bài viết này.

Để đọc kỹ hơn về facebook-graph-api, các bạn có thể tham khảo một trong hai tài liệu này:

2. Login app via facebook, get access_token

Đầu tiên, để có thể tiếp tục với bài viết này, các bạn cần có trong máy local , một thư mục chứa sourcecode của một rails_app bất kỳ đã có chức năng đăng nhập ( đăng nhập bằng devise thì càng tốt ). Mình sẽ mô tả các bước tiếp theo để giải quyết bài toán chính trong bài viết lần này:

Ở bước số 1 , mình sẽ giải thích cơ bản về việc thực hiện code của mình thôi. Để hiểu kỹ hơn về phần code, các bạn hãy tham chiếu đến tài liệu trong link này ở 2 phần:

Đầu tiên, mình sẽ đăng ký rails_app trên trang facebook for developers, lấy về app_secret và app_id, lưu trong các biến môi trường tương ứng ENV['app_id'] và ENV['app_secret']. Thiết lập trên trang facebook for developers ở phần chức năng đăng nhập với redirect_uri chuẩn là:

Hãy thay #{YOURDOMAIN} bằng tên miền chuẩn của rails_app mà bạn có. Sau đó, trong routes.rb mình sẽ tạo một resource:

Ở file views/facebook/new.html.erb , mình tạo một button đăng nhập facebook như sau:

Hãy nhớ là ở tham số&scope= , bạn phải liệt kê đủ các permissions liên quan đến quyền đăng bài post và quyền comment trên fanpage cá nhân của bạn. Các bạn có thể xem về các permissions liên quan đến fanpage cá nhân ở đây. Sau đó, mình tạo một facebooks_controller và một action login để xử lý chức năng đăng nhập rails-app qua facebook như sau:

3. GET api request và POST api request với thư viện Net::HTTP

Các bạn có thể thấy ở phần 2 mình đã viết được method get_api_request bằng thư viện Net::HTTP tích hợp sẵn trong Ruby . Vì vậy ở bước này, mình chỉ cần viết thêm một method post_api_request tương tự:

4. Publish bài post “bán mỹ phẩm” và lấy id của bài post vừa tạo

Mình sẽ tạo một bài post bán mỹ phẩm như thê này trên fanpage của mình:

Mình sẽ cần có được id của bài post này trên facebook để cho những xử lý phía sau. Trong action facebook#show mình xử lý như sau:

Trong views/facebook/show.html.erb :

Ta sẽ thấy được id của bài viết tương ứng với content ta vừa tạo như sau.

Hãy lưu id này tạm thời vào Settings.post_id . Lát nữa chúng ta sẽ cần sử dụng nó. (Giả sử bài toán hiện tại chỉ yêu cầu chúng ta reply comment trên 1 post đã cho trước thì việc lưu id như thế này có thể chấp nhận được)

Trong file settings.yml.

5. Reply toàn bộ các comments

Giả sử hiện tại trên bài post của mình, đã có 3 comment của khách hàng, hỏi về thông tin sản phẩm:

Việc của mình bây giờ là reply toàn bộ các comment trên bằng một comment với đầy đủ chi tiết về giá thành, các loại mỹ phẩm và giá ship.

Bây giờ trong views/facebook/new.html.erb mình sẽ tạo một form tag để reply toàn bộ các comment trong bài post vừa tạo:

Và phần hiển thị của nó:

Trong facebooks_controller#create, mình sẽ xử lý như sau:

Như vậy là đã xong phần xử lý về code rồi. Giờ mình sẽ nhập nội dung comment vào, click vào nút Add multi comments

Và kết quả sẽ như thế này:

Cảm ơn các bạn đã theo dõi bài viết. Ở bài viết tiếp theo, mình sẽ thử tạo tool auto comment trên facebook, thay vì việc phải nhập form theo cách thủ công như thế này.

Tài liệu tham khảo:

Facebook graph api: https://developers.facebook.com/docs/graph-api/using-graph-api/

Graph API Advanced: https://developers.facebook.com/docs/graph-api/advanced/

Chia sẻ bài viết ngay