Thứ Bảy, 2 tháng 9, 2017

Tạo Facebook Chatbot cho trang cá nhân

Nắm bắt nhu cầu sống ảo của đa số anh em, mình viết bài này để hướng dẫn cách tạo một chatbot để trả lời tin nhắn trên trang cá nhân.
Nhắc lại, đây là chatbot cho trang cá nhân, chatbot cho fanpage đã có rất nhiều bài viết, video hướng dẫn, nếu các bạn thích có thể mình sẽ viết 1 bài riêng.

Yêu cầu

  1. Biết Python, không biết đi chỗ khác chơi.
  2. Nếu không đáp ứng được điều 1 thì dùng dollar thần chưởng, mình làm hộ cho :rofl:
  3. Hiểu mình nói gì.

Tiến hành

Mình sẽ dùng một thư viện gọi là fbchat để viết bài này.
Các đoạn code mẫu sử dụng thư viện này bạn có thể tham khảo tại đây: https://github.com/carpedm20/fbchat/tree/master/examples
Tài liệu chính thức của thư viện này tại đây:
https://fbchat.readthedocs.io/en/master/
Mở console lên cài thư viện fbchat vào máy:

pip install fbchat

Chat bot này khác hoàn toàn với những chat bot bạn thường thấy vì nó không sử dụng Graph API chính thức từ Facebook mà giả lập trình duyệt để gửi những request GET/POST như là đang online bằng trình duyệt thật sự. Bạn sẽ dùng tài khoản Facebook để sử dụng bot này chứ không phải Access Token
from fbchat import log, Client # Nạp thư viện của fbchat

class EchoBot(Client):
    def onMessage(self, author_id, message, thread_id, thread_type, **kwargs):
        self.markAsDelivered(author_id, thread_id) # Đánh dấu đã nhận tin nhắn
        self.markAsRead(author_id) # Đánh dấu đã đọc tin nhắn

        # Hiển thị log mỗi khi có tin nhắn tới
        log.info("Message from {} in {} ({}): {}".format(author_id, thread_id, thread_type.name, message))

        # Nếu id của tác giả tin nhắn không phải là bạn thì
        if author_id != self.uid:
        	# Gửi tin nhắn cho cuộc hội thoại có id là thread_id
            self.sendMessage(message, thread_id=thread_id, thread_type=thread_type)

client = EchoBot("", "") # Điền email, password tài khoản Facebook của bạn vô đây
client.listen() # Bot sẽ chạy cập nhật tin nhắn

Khi điền đầy đủ thông tin xong hãy lưu và chạy. Như thế này là ok.


Con bot này có chức năng phản hồi lại đúng y nội dung tin nhắn bạn đã nhắn cho nó. OK, bây giờ chúng ta hãy test nó nào.




OK, vậy là bot chạy ngon rồi nha các bạn. Bot có rất nhiều phương thức, bạn có thể tìm hiểu thêm tại đây https://fbchat.readthedocs.io/en/master/examples.html
# Gửi tin nhắn đến cuộc trò chuyện
client.sendMessage('', thread_id=thread_id, thread_type=thread_type)

# Gửi emoji like
client.sendEmoji(emoji=None, size=EmojiSize.LARGE, thread_id=thread_id, thread_type=thread_type)

# Gửi emoji 👍
client.sendEmoji(emoji='👍', size=EmojiSize.LARGE, thread_id=thread_id, thread_type=thread_type)

# Gửi hình ảnh có đường dẫn `< image path >`
client.sendLocalImage('< image path >', message='This is a local image', thread_id=thread_id, thread_type=thread_type)

# Tải hình ảnh có địa chỉ `< image url >`, và gửi hình ảnh đó
client.sendRemoteImage('< image url >', message='This is a remote image', thread_id=thread_id, thread_type=thread_type)

# Những phương thức này chỉ thực hiện với chat nhóm
if thread_type == ThreadType.GROUP:
    # Xóa user có ID `` khỏi nhóm chat
    client.removeUserFromGroup('', thread_id=thread_id)

    # Thêm user có ID `` vào nhóm chat
    client.addUsersToGroup('', thread_id=thread_id)

    # Thêm những user có ID `<1st user id>`, `<2nd user id>` và `<3th user id>` vào nhóm
    client.addUsersToGroup(['<1st user id>', '<2nd user id>', '<3rd user id>'], thread_id=thread_id)

# Đổi nickname của `` thành ``
client.changeNickname('', '', thread_id=thread_id, thread_type=thread_type)

# Đổi tên cuộc trò chuyện thành ``
client.changeThreadTitle('<title>', thread_id=thread_id, thread_type=thread_type)

# Thiếp lập trạng thái của bạn là  `TYPING`
client.setTypingStatus(TypingStatus.TYPING, thread_id=thread_id, thread_type=thread_type)

# Chuyển màu của chat thành `MESSENGER_BLUE`
client.changeThreadColor(ThreadColor.MESSENGER_BLUE, thread_id=thread_id)

# Chuyển emoji của cuộc trò chuyện thành `👍`
client.changeThreadEmoji('👍', thread_id=thread_id)

# Bày tỏ cảm xúc 😍 emoji với một tin nhắn
client.reactToMessage('<message id>', MessageReaction.LOVE)</span></code></pre>
</div>
Kết 
Bạn có thể dùng các cấu trúc điều khiển của python, những thư viện như requests, json, beautifulsoup, … để xử lý tin nhắn tới theo ý bạn, như tích hợp API của Simsimi hay API thời tiết, API get link fshare chẳng hạn. Nếu các bạn muốn mình có thể làm thêm phần bổ sung trong bài này hướng dẫn dùng API vào chatbot. Một thư viện tương tự như vậy bằng Node.js: https://github.com/Schmavery/facebook-chat-api62 Cám ơn đã đọc. Nhớ thả tim nhá

Tạo Facebook Chatbot cho trang cá nhân Rating: 4.5 Diposkan Oleh: Defalt Athena

0 nhận xét:

Đăng nhận xét

Lượt truy cập

Bài đăng phổ biến