Hệ thống điệp viên Huginn: Thế giới trong tầm tay

Hệ thống điệp viên Huginn: Thế giới trong tầm tay

Hôm nay giới thiệu với các bạn một công cụ rất hay và hữu dụng để thực hiện các tác vụ giám sát, thu thập thông tin một cách chủ động, báo cáo tổng hợp cho bạn những gì bạn cần, đó là hệ thống điệp viên Huginn. Mình đã áp dụng xây dựng một hệ thống hỗ trợ đắc lực này để thực hiện một số nhiệm vụ cho cá nhân đã lâu, thấy rất hữu ích muốn viết lâu rồi mà không có thời gian nay tranh thủ giới thiệu, hi vọng giúp bạn khai phá nhiều thứ 🙂

Nội dung chính

Huginn là gì

Huginn là hệ thống xây dựng các “điệp viên” thực hiện các tác vụ một cách tự động cho bạn trên thế giới internet. Các điệp viên này đúng theo tên gọi: dò tìm, giám sát các nội dung, thu thập sự kiện, tổng hợp lại và báo cáo cho bạn những gì đang xảy ra một cách chủ động. Cách báo cáo thì rất đa dạng: từ tin nhắn SMS, Email, Push Notification, Slack, hay cả Message Queue (MQTT)…rất nhiều !!!

Huginn và Muninn là tên của 2 con quạ đậu trên vai của thần Odin, hàng ngày thần Odin cho chúng bay đi từ lúc rạng sáng sớm để thu thập tin tức, sự kiện và trở về lúc trời tối để kể cho thần Odin tất cả những gì chúng biết trong ngày hôm đó!

Trang chủ dự án: https://github.com/cantino/huginn

Chỉ cần cài đặt khá là đơn giản trên Heroku (gói miễn phí) là bạn đã có trong tay một công cụ rất mạnh!

Hệ thống được viết bằng Ruby, nhưng bạn không cần phải biết ngôn ngữ này, hầu hết các chức năng, agent thông dụng đã có sẵn, bạn chỉ cần biết Javascript hoặc CoffeeScript để tuỳ chỉnh, hoặc tính toán, xử lý dữ liệu nếu cần (Đa phần là không cần). Nếu bạn muốn tạo một agent nào đó mà Huginn chưa có thì bạn mới cần phải biết Ruby, tuy nhiên theo mình thì cũng khá hiếm, vì nếu nhu cầu quá phức tạp thì chắc là phải tuỳ chỉnh khá nhiều, khi đó nên chăng tự viết một hệ thống riêng, còn với Huginn thì chỉ sử dụng là đủ.

Bạn có thể làm được gì khi có Huginn trong tay?

  • Giám sát thời tiết và thông báo cho bạn “nếu trời mưa vào ngày mai”, đừng quên mang dù nhé
  • Liệt kê những gì đang xảy ra trên Twitter và tổng hợp báo cáo cho bạn những chủ đề mà bạn quan tâm ví dụ như “Machine learning”, “Reactjs”, “Euro 2016”, …
  • Kiểm tra thông tin lịch trình chuyến bay hay tìm kiếm các món đồ, sản phẩm bạn quan tâm mà giảm giá trên Amazon, Ebay…
  • Thu thập nội dung website và giám sát khi nào nó thay đổi, có thể dùng đề xuất XML, JSON của một website bất kỳ
  • Nói chung là Huginn làm được nhiều thứ, những gì liên quan đến internet mà nó có thể truy cập được (xong bước dữ liệu) và kế tiếp là xử lý dữ liệu và làm gì tiếp nữa thì nó phụ thuộc vào nhu cầu và khả năng sáng tạo của bạn

Đặc điểm thú vị

  • Kết nối các dịch vụ như Adioso, HipChat, Basecamp, Growl, FTP, IMAP, Jabber, JIRA, MQTT, nextbus, Pushbullet, Pushover, RSS, Bash, Slack, StubHub, translation APIs, Twilio, Twitter, Wunderground…
  • Có thể gởi và nhận webhooks
  • Chạy hàm Javascript hoặc CoffeeScript
  • Có mô hình diễn tả rõ ràng các luồng của Agent

Một vài hình ảnh:

Đây là flow kiểm tra tên miền tại website Mắt Bão
Đây là flow kiểm tra tên miền tại website Mắt Bão của mình

Agent gởi thông tin vị trí của bạn (hoặc một ai đó :D)

Ví dụ cụ thể

Đây là vài ví dụ mình có thể chia sẽ được từ những mô hình mình đã áp dụng:

  • Kiểm tra tên miền: kiểm tra thời hạn của tên miền, báo cáo khi có bất kỳ sự thay đổi nào và thông báo trước thời điểm hết hạn của tên miền, mục đích là để giám sát các tên miền của mình, không để cho nó hết hạn, hai là “theo dõi” một số tên miền ưng ý “của người ta”, nếu chủ sở hữu không gia hạn thì mình sẽ chủ động…Chức năng này mình cài đặt với Slack, và mở website, app Slack mỗi khi ngồi máy tính, do vậy được báo cáo tức thì mỗi khi có bất kỳ sự thay đổi tên miền nào, hoặc trước xyz ngày hết hạn 😀
  • Công ty mình sở hữu gần 20 website tin tức, hầu hết không có XML, hoặc có mà không tương thích với SmartNews. Công ty có nhu cầu đưa các website tiếp cận Smartnews, nhưng việc thay đổi XML để phù hợp với chuẩn Smartnews cho tất cả website khá là tốn chi phí, vì do các đơn vị khác nhau thực hiện, hoặc đã ngưng hợp đồng. Nhờ có Huginn mà mình xây dựng hệ thống giám sát các website của công ty, tự động xuất ra file XML tương thích với Smartnews mỗi khi website có bài viết mới một cách tự động. Cũng như xuất ra chuẩn RSS 2.0 để các trình đọc RSS sử dụng.
  • Cũng từ cách thức giám sát website trên, mình cũng đã tạo dựng ra hệ thống theo dõi các website về giáo dục, của các trường mầm non, nhà trẻ nhằm phục vụ dự án Kidsquare, bạn biết là mấy website dạng này không có người chăm sóc nên rất ít khi được cập nhật, mà đã khi cập nhật thì mình sẽ biết ngay :D. Nếu bạn xâu dựng hệ thống thu thập sự kiện, thì Huginn sẽ là trợ thủ đắc lực!

Kết

Huginn là hệ thống tương tự như IFTTT (If This Then That) nhưng mạnh hơn với khả năng rút trích thông tin và kết nối đa dạng. Nắm bắt được thông tin và xử lý một cách tự động thay cho bạn, với thời đại của IoT (Internet of Things) sắp tới, thì việc ra lệnh dựa theo điều kiện nào đó và gởi tín hiệu thông qua các giao thức được hỗ trợ khá nhiều của Huginn sẽ giúp cho bạn kiểm soát thế giới “của mình” tốt hơn. Chúc bạn có nhiều ý tưởng với hệ thống điệp viên này!

P/S:Bài viết này chỉ giới thiệu về sự tồn tại của một hệ thống … rất hay, hữu ích. Nếu sự quan tâm về chủ đề này đủ lớn thì mình sẽ viết hướng dẫn chuyên sâu hơn, hãy like và share để giúp mình có động lực để viết tiếp nhé 🙂

Read more