LoginSignup
30
27

More than 5 years have passed since last update.

Rails slack連携をしてみた

Posted at

はじめに

便利なチャットアプリslackとの連携をRailsで実現したい思います。
ここでは、メッセージの送信とリポジトリの作成をやってみます。
思っていた以上に簡単だったので、お手軽にアプリケーションからslackへ通知を送れます!

方針1. gem slack-apiを使う
方針2. gem httpartyを使う

実装

方針1. gem slack-apiを使う

Gemfileに追加

gem 'slack-api'

bundle install

bundle install

アクセストークンの取得

下記URLから、アクセストークンを取得します。Authenticationの項目にて、トークンを作成、確認出来ます。
https://api.slack.com/web

設定ファイルの作成

config/initializers/slack_api.rb
require "slack"

Slack.configure do |config|
  config.token = "取得したトークン"
end

メッセージを送る

Slack.chat_postMessage(text: 'テキスト', username: '適当な名前', channel: "#チャンネル名")

例:

Slack.chat_postMessage(text: 'hello!', username: 'slack_test_bot', channel: "#slack_test")

これを好きなとこで実行するだけ!

チャンネルを作成する

Slack.channels_create({name: 'slack_test'})

名前はお好きに!これだけ!

他のメソッド

他にも便利なメソッドがあるので下記を参考に。
https://api.slack.com/methods

参考

Rails からの通知を Slack で行う

方針2. gem httpartyを使う

方針1でOKなのですが、slack-apiを使わずにslackのapiを叩く方法で実装出来るみたいなのでメモ。
Railsアプリからslackのchannelを自動作成する方法

Gemfileに追加

gem 'httparty'

bundle install

bundle install

チャンネルを作成する

HTTParty.get("https://slack.com/api/channels.create?token=zzzzzzzzzzzzzzzzzzz=#{channelname}")

他のメソッドも方針1と同様に使えそうです。

おまけ

チャンネル作成時のresponse

response = Slack.channels_create({name: params[:name]})

を実行したときのresponse

{"ok"=>true, "channel"=>{"id"=>"hogehoge", "name"=>"aaaaaaa", "is_channel"=>true, "created"=>11111111, "creator"=>"hogehoge", 
"is_archived"=>false, "is_general"=>false, "is_member"=>true, "last_read"=>"0000000000.000000", "latest"=>nil, "unread_count"=>0, 
"unread_count_display"=>0, "members"=>["hogehoge"], "topic"=>{"value"=>"", "creator"=>"", "last_set"=>0}, "purpose"=>{"value"=>"", 
"creator"=>"", "last_set"=>0}}}

のようなのものが返ってきます。

ふむふむ、
response[:ok]で作成成功か失敗か返ってくるのね。

既にchannelがある場合はfalseで返ってきました。

  def create
    response = Slack.channels_create({name: params[:name]})
    if response[:ok]
      render 'create'
    else
      redirect_to new_channel_path, alert: 'チャンネル作成に失敗しました。既に同名のチャンネルがないか確認して下さい。'
    end
  end

こんな感じに実装すれば良いな。

slack連携、お手軽なのでぜひ!

30
27
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
30
27