HƯỚNG DẪN VIẾT CHATBOT CHO FACEBOOK: Phần I - Giới thiệu về cơ chế hoạt động & Các khái niệm
Vào tháng 4 năm 2016, Facebook đã giới thiệt Facebook Messenger Flatform cho phép ta có thể viết được 1 chatbot tự động trả lời các user. Mình thích táy máy nghịch ngợm thì trong khi gần đâu cũng có máy mò ra một số source code rồi viết thêm để hoàn thiện 1 con chatbot demo cho các bạn. Nếu các bạn muốn thử hay test tại: m.me/noobislife nhé :3 Còn không hay xem ảnh ở dưới nhé
Có 2 điều mình muốn nói: Thứ nhất: Đây là chuyên mục Lập Trình để chúng ta học hỏi và nghịch ngợm. Thứ 2 là các bạn hoàn toàn có thể làm bằng Chatfuel một cách đơn giản mà không có vấn đề gì hơn nữa chatfuel có thể nhiều RestAPI(Sẽ nói ở dưới) hơn và nhiều chức năng hơn nhưng ở đây mình muốn hướng dẫn các bạn tự làm :) Tự tay dev 1 con bot
Tuy đa phần các developer nếu tự viết bot(Không xài Chatfuel nhé) thì sẽ dung Ruby để code nhưng mình không chuyên Ruby(Thực ra ở Google DevFest 2016) đã có 1 buổi hướng dẫn xài Ruby nhưng mình không viết được Ruby các bạn thông cảm nhé :D Tuy mình viết được Python nhưng nhiều trước có thử thì bị lỗi do vậy mình đã lên github search các repo có sẵn và tham khảo và hơn nữa nhiều người xài sẽ có người fix hộ những bug khó :D. Tuy nhiên theo lí thuyết, nếu bạn nắm được bản chất bản có thể dung php, java hay cả C#,… đều được.
Ở Series này mình sẽ hướng dẫn các bạn từ nắm cơ chế, vấn đề đến lúc hoàn thiện 1 coiậnn bot tự trò chuyện bằng những gì nhập vào và đồng thời sử dụng Simsimi :D
Vậy chúng ta cùng đi vào chủ đề chính nhé. Để hiểu rõ cách thức hoạt động của Bot bạn cần nắm rõ 2 khái niệm sau: Webhookvà RestAPI. Về bản chất thì cả 2 được tao ra nhầm 1 mục đích đó là: Làm sao để 2 chương trình tuy viết bằng 2 ngôn ngữ khác nhau, tách biệt nhau mà vẫn có thể giao tiếp với nhau được.
Webhook là gì?
Các bạn biết Slack chứ? Slack tích hợp nhiềiậu tính năng là nhờ webhook đó. Giả sử bạn commit lên Git, git sẽ gửi 1 POST request lên webhook của Slack. Từ đó Slack sẽ đọc webhook và xử lí chúng => Build code và lưu trữ
:DNếu chưa hiểu thì đến ví dụ tiếp theo. Tưởng tượng bạn là một cậu học sinh đẹp trai ở Việt Nam vừa đi sang Mĩ du học chẳng hạn mà bạn lại cực ngu tiếng Anh(Ví dụ thôi Đừng g :D). Lớp đó có vài bạn gái thấy vẻ đẹp trai của bạn và muốn làm quen với bạn nhưng xấu hổ chẳng hạn. Bạn biết điều đó nhưng nói ra sợ ngại :D Vậy là bạn thả thính các bạn nữ ví dụ up tus thả thính chẳng hạn :D Bạn nào đi chơi với mình thì ném vào nhà mình lịch hẹn thời gian nhé :D Sau khi nhặt được mẩu giấy thì bạn liền lên Google Translate dịch :D Hiểu ra ý bạn liền sửa soạn quần áo để chuẩn bị đi chơi. Vậy có thể hiểu bạn éo biết cái gì về tiếng Anh và cô bạn gái người Mĩ là 2 chương trình khác nhau về ngôn ngữ còn cái cửa nhà bạn cái Webhook. Vậy tóm váy lại, Webhook là thứ để 2 chương trình giao tiếp với nhau(Còn thực tế mình cho Google Translate để cho thấy rõ nhân vật nói đến ngu tiếng anh thôi). Theo lí thuyết, thì webhook là 1 HTTP callback. Trong code nếu bạn truyền vào callback vào 1 hàm mang ý nghĩa “Tao đưa mày cái hàm này, khi nào gọi hàm đó thì báo tao”. Webhook thì như thế nó cũng tương tự nhưng nó thông qua HTTP POST. Ví dụ có thể hiểu như sau:
Cô bạn: Anh ơi em muốn đi chơi.
Bạn: Webhook của anh là: http://cua.com. Khi nào muốn cứ đi em gửi POST Request (ném tờ giấy) lên http://cua.com. Trong request nhớ ghi thời gian và địa điểm nhé.
Cô bạn: OK !
Nó cũng đơn giản dễ hiểu thôi. Có vấn đề gì bạn cứ inbox facebook cho mình, mình sẽ giải đáp :D Link fb mình để bên dưới
RestAPI là gì?
Quay lại cô bạn gái Mĩ ngoan hiền dễ thương. Sau khi nhặt được mẩu giấy bạn sướng rơn lên nhưng không biết làm sao báo lại cho cô. Cô thì không biết tiếng Việt, bạn thì cũng không rành lắm tiếng Anh. May mắn thay là trong lớp bạn có 1 thằng bạn biết 1 thứ tiếng trung gian giả sử tiếng Thái đi :D. Bạn nhờ thằng bạn đó báo lại cho cô bạn kia địa điểm. Cuộc hẹn thành công tốt đẹp, 2 người đi xem phim ăn uống rồi lôi nhau vào nơi yên tĩnh để nghỉ ngơi :D. Vậy thì ở đây ví dụ bạn viết bằng C++ còn nàng viết bằng Java, thằng bạn kia chính là RestAPI của cô gái, sử dụng tiếp Thái(có thể hiểu là HTTP đi) để giúp 2 bạn giao tiếp. Nhờ RestAPI mà 2 chương trình khác nhau ngôn ngữ có thể giao tiếp và truy cập cơ sở . Cũng đã có khá nhiều bài viết về REST nên mình không nhắc lại, bạn nào muốn tìm hiểu có thể google thêm nhé: RestAPI. Hiện tại, các ứng dụng nổi tiếng như Facebook, Youtube, Twitter đều có REST API. Thông qua các Rest API này, ta có thể viết app hay web để truy cập dữ liệu Facebook, Youtube, … mà không cần quan tâm đến ngôn ngữ sử dụng.(Ví dụ như Facebook chủ yếu viết = php hay ngôn ngữ gì cũng được nhưng bạn viết bot bằng javascript hay ruby cũng thế chúng vẫn connect được với nhau đó thôi)
Cơ chế hoạt động của Facebook Bot
Cơ chế hoạt động của Facebook Bot cũng khá đơn giản, không khác em gái mình miêu tả phía trên là mấy.
Đầu tiên, ta đưa 1 địa chỉ webhook (cửa nhà bạn) cho Facebook. Khi có người gửi tin nhắn đến bot, facebook POST thông báo (ném tờ giấy) đến webhook của chúng ta để ta tiếp tục xử lý.
Sau khi xử lý xong, nếu muốn reply lại người dùng, ta gửi tin cho RestAPI (thằng bạn bạn) của Facebook. Nhận được tin, bot sẽ trả lời lại cho người dùng.
Nắm vững cơ chế hoạt động trên, bạn có thể viết 1 con bot Facebook bằng bất cứ ngôn ngữ nào bằng cách thực hiện 2 bước sau:
- Viết Webhook và đưa nó cho Facebook.
- Xử lý nội dung nhận được từ Webhook, gửi lại reply cho Rest API của Facebook.
Ở bài viết sau, mình sẽ hướng dẫn các bạn cách tạo trang fanpage, tạo ứng dụng và bắt đầu viết code nhé. Các bạn nhớ đón xem.
Facebook của mình: https://facebook.com/minhnh0302
Email: nghminh163@outlook.com
Không có nhận xét nào:
Đăng nhận xét