Xây dựng chatbot cùng API.AI: tổng quan về Flask và Heroku (phần 3)

Xây dựng chatbot cùng API.AI (phần 1)

Xây dựng chatbot cùng API.AI phần 2 (Tích hợp với Facebook Messenger)

Tình hình là trong bài viết Giới thiệu chatbot gợi ý món ăn, mình có đề cập đến việc giải thích cho anh em đồng đạo cơ chế hoạt động của con chatbot này nên trong bài viết ngày hôm nay, anh em sẽ đào sâu 1 tí cơ chế của thằng này xem có gì hay ho không nhé :v

141d63f3723e2c3fb63c4c4c013ce6db

………………..

………………..

………………….

Sau gần 30 phút vẫn chưa nghĩ để viết được ra :v Thôi nào, bình tĩnh ngồi suy nghĩ mấy cái trong đầu chút nào 😕

Ok bắt đầu nhé :3 Khi anh em sử dụng con chatbot ở Messenger mà mình đã đưa link (cho lại nếu anh em nào chưa nhớ m.me/code4shares). Khi anh em tiến hành tâm sự cùng con chatbot này để tìm kiếm một chút thông tin vu vơ nào đó về 1 món ăn mà chưa được thưởng lãm thì ở dưới sẽ có rất nhiều bước được thực hiện như sau.

  • Facebook sẽ webhook tới cái API.AI
  • API.AI sẽ webhook tới 1 cái webapp được host ở Heroku
  • Webapp được viết bằng Flask sẽ tiến hành sử dụng YQL để crawl data ở các trang web như eva, phụ nữ to dày, mương 14, vô địch lá cải 24h…sau để trả về kết quả là định dạng json
  • API.AI sẽ tiến hành đọc file json để đưa ra câu trả lời rồi gửi kết quả về cho FacebookMessenger

Định dùng thằng draw.io vẽ cho anh em cái sơ đồ nhưng lười chết mẹ nên thôi 😐 Để vẽ ra giấy cho nhanh nhé :))

1492219249334_32863 copy

Nhiều anh em chắc wtf webhook là cái của nợ gì đấy 😐 Mới nghe lần đầu đó 😕 Để dễ hiểu mình sẽ giải thích với các đồng dâm bằng thứ ngôn ngữ chân phương nhất có thể nhé :))

f3319370ca7979f3980e017c972913c77cf2aeda96e5eabf189fe80d28a8aaa5

Ví như anh em ở đây trong người hay bứt rứt mỗi khi vào hạ. Trời thì nắng nóng, bản thân anh em cũng nắng cực :v Muốn đi đâu đó chi khuây khỏa con người  như kiểu tắm biển ở Trần Duy Hưng, hay ăn hải sản ở phố Vọng… Tuy vậy có quán quen nhưng lại hay đông khách, cứ đến lại phải chờ lâu mới được phục vụ. Anh em liền điên tiết với thằng chủ quán là “Mày biết tao đang nắng thế nào rồi không? Mà bắt đợi lâu như vậy hả?”. Thằng chủ quán sẽ ân cần bảo ban với bạn rằng là anh có thể đưa cho em 1 cái webhook không, khi nào quán rảnh, hải sản đánh bắt được kịp thì em sẽ báo cho anh thông qua 1 cái HTTP Post để anh đỡ phải đến tận quán em đợi chờ mệt mỏi. Đấy đại ý webhook là vậy đó =)) Ý chung thì webhook là HTTP callback, khi nào mày làm cái gì thì mày báo t 1 cái :3

Ờ vậy thì ok rồi nhé. Thế Flask là cái mô nữa đây 😕

flask

Như mấy cái mình giới thiệu về Python thì nếu anh em làm về cái này chắc cũng nghe qua về Dijango. Đây là 1 webframework của Python. Còn thằng Flask nó chỉ là lightweight framework (kiểu kiểu là nhẹ hơn rất nhiều ấy). Học nó thì không có gì quá khó khăn cả. Anh em chỉ gõ lệnh cài vào là xong. Nếu anh em chưa biết gì về Flask thì có thể học nó qua mấy bài viết của 1 đồng chí nào đó trên github để tham khảo nhé

https://github.com/hoanvu/basic_flask_tutorial

Anh em chịu khó đọc qua mấy cái này là có thể hiểu được mấy cái trong sourcecode trên git của mình

Ở đây mình sẽ tạo 1 được 1 cái webapp ở địa chỉ như abc.xyz này. Thì với đoạn code trên anh em sẽ có 1 cái webhook abc.xyz/webhook. Có cái này thì thằng API.AI sẽ call nó theo địa chỉ được cấu hình để nhận kết quả nhé.

À quên mình host cái webapp ở trên heroku đó (giải thích luôn thì heroku là nền tảng đám mây có sẵn  giúp anh em triển khai vận hành các ứng dụng từ Nodejs, Ruby, Python, Java.. rất đơn giản và tiện lợi, rổ giá thì miễn phí nếu anh em chịu được cảnh 1 ngày nó tắt 30 phút :(( ) :3 Cái này nó miễn phí với link được với thằng github, cứ push lên là nó tự động deploy cho cái webapp đỡ vất vả ấy mà :v Anh em có thể fork cái repo của mình về rồi ấn vào cái nút Deploy to Heroku, ấn phát là có con webapp y như mình rồi :v

heroku-hp-snip2

Cũng có mấy trang miễn phí như https://www.pythonanywhere.com/, anh em mà mò được trang nào host cái flask thì cứ dùng nhé :)) chả khác nhau đâu mà :3

Tiếp đoạn là đoạn crawl data từ mấy trang web nấu ăn nữa chứ.  Như ở bài viết trước mình có giới thiệu về cái YQL đến anh em Cùng học YQL, thì ở đây mình cũng ứng dụng luôn cho nó vuông.

Ở trên là cái đoạn mình dùng yql để lấy dữ liệu đó. Đơn giản chưa :v Kết quả trả về sẽ là 1 file json. Chỉ cần lấy dữ liệu từ đó về tạo ra 1 file json theo đúng chuẩn mà anh API.AI đưa ra là có thể hiển thị kết quả ở trong Messenger rồi :v.

Screen Shot 2017-04-12 at 6.45.32 AM

Đấy kà toàn bộ ý tưởng để có thể tạo 1 con chatbot gợi ý món ăn rồi đó. Bài cuối mình sẽ viết lại cách cấu hình api.ai, facebook messenger, heroku để những thằng này liên kết với nhau cho anh em nắm được :v Giờ thì lại chào tạm biệt và hẹn gặp lại nhé

wow-i-cant-wait-to-never-see-you-again-777422

Advertisements

One thought on “Xây dựng chatbot cùng API.AI: tổng quan về Flask và Heroku (phần 3)

  1. Pingback: Lại là crawler | Code, code and more code

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