Gửi tin nhắn qua Slack với ứng dụng Rails

Chào các bạn, hôm nay mình xin giới thiệu với các bạn cách gửi tin nhắn qua Slack từ ứng dụng Rails.

Slack là một ứng dụng "phòng chat" nổi tiếng, thường được sử dụng cho những người trong nội bộ công ty. Mỗi phòng chat có thể tạo ra các kênh chat khác nhau để phục vụ cho những mục đích công việc khác nhau.

Giả sử, bạn đang xây dựng một ứng dụng Rails app, trong đó có 1 tác vụ chạy ngầm gì đó yêu cầu gửi kết quả vào 1 channel Slack để thông báo cho người quản trị biết.

Để thực hiện yêu cầu trên, trong bài viết của mình sẽ giới thiệu cho các bạn sử dụng gem "slack-notifier".

Cài đặt

Quá đơn giản là add gem này vào Gemfile

# Gemfile
gem "slack-notifier"

và run bundle install

Cấu hình

Để tạo một đối tượng kết nối tới Webhook Slack, chỉ cần khai báo:

notifier = Slack::Notifier.new "WEBHOOK_URL"

Webhook URL này lấy đâu ra? Giả sử bạn đang quản lý 1 workspace trên Slack:

  1. Truy cập vào https://slack.com/apps/A0F7XDUAZ-incoming-webhooks

  1. Nhấn vào Add Configuration

  1. Chọn channel, và nhấn Add Incoming WebHooks integration

Vậy là các bạn đã lấy được Webhook URL của channel.

Thử hàng

Xong bây giờ hãy mở console lên và test nào:

notifier = Slack::Notifier.new "your_url"
notifier.ping "Hello World"

Kết quả, ở channel General bạn sẽ thấy một message

Tham khảo một số format của message mà bạn có thể gửi lên, các bạn có thể xem tại đây

Không chỉ đơn thuần là gửi message, bạn có thể gửi một đống params lên để có được 1 format tin nhắn ưng ý, ví dụ như màu sắc, icon, tên người gửi, thậm chí là avatar người gửi, ...

Để truyền được đống params đó, bạn phải sử dụng method post

Ví dụ, mình sẽ gửi một message dưới tên là Boss, và có avatar cho Boss luôn nhé:

notifier.post text: "Hello World", username: "Boss", icon_url: "http://static.mailchimp.com/web/favicon.png"

Còn rất nhiều parameters các bạn có thể tham khảo tại đây

Qua bài viết mình đã giới thiệu với các bạn cách gửi tin nhắn qua Slack trong ứng dụng Rails bằng cách sử dụng gem "slack-notifier"

Cảm ơn các bạn đã theo dõi!