2017年12月5日火曜日

Ruby で Slack の bot を作成してみた

概要

Slack で Bot を開発するのは Hubot が有名ですが Ruby を使って Bot を作成することも可能です
設定から簡単な使い方まで紹介したいと思います

環境

  • CentOS 7.3.1611
  • ruby 2.3.3p222
  • gem 2.6.11
  • slack-ruby-bot 0.10.5

Bots のインテグレーションを追加する

まずはインテグレーションを追加しましょう
Bots を登録するページに移動して「Add Configuration」を選択します
slack_with_ruby_bot1.jpg

Bot の名前を設定する画面になるので好きなボット名を設定し「Add bot integration」を選択します
slack_with_ruby_bot2.jpg

これで Bots インテグレーションの追加が完了です
表示されている API Token をあとで使うのでメモしておきましょう
slack_with_ruby_bot3.jpg

slack-ruby-bot を使って Bot を作成する

今回は Ruby で Bot を作成します
公式が出しているライブラリがあるので素直に使いましょう

  • bundle init
  • vim Gemfile
gem "slack-ruby-bot"
gem "celluloid-io"
  • bundle install --path vendor

でライブラリのインストールは完了です

Bot を作成する

まずは簡単なピンポンを行うだけの Bot を作成しましょう

  • vim bot.rb
require 'slack-ruby-bot'

class PongBot < SlackRubyBot::Bot
  command 'ping' do |client, data, match|
    client.say(text: 'pong', channel: data.channel)
  end
end

PongBot.run

こんな感じです
command 関数の引数で Bot が反応するコマンドと実際に Bot が処理する内容をブロック内で実装するだけです
Bot が返事をするときは client.say を使います
返事の内容と返事をするチャネルを指定します

ではサーバ上で実行までしてみましょう
先程取得した API Token はここで使います

  • export SLACK_API_TOKEN=”xoxb-111111111111-xxxxxxxxxxxxxxxxxxxxxxxx”
  • bundle exec ruby bot.rb

ずらずらーっとログが流れると思います
エラーが出なければ OK です
起動したら動作確認してみましょう
Bot を追加したいチャネルに invite して話かけてみましょう

slack_with_ruby_bot4.jpg
こんな感じで動作すると思います

画像を投稿するように修正してみる

以下のような感じに修正してみましょう
画像は自分の Twitter のアイコンなので好きな画像の URL に変更してください

  • vim bot.rb
require 'slack-ruby-bot'

class PongBot < SlackRubyBot::Bot
  command 'ping' do |client, data, match|
    client.say(text: 'pong', channel: data.channel)
  end
  command 'logo' do |client, data, match|
    url = 'https://pbs.twimg.com/profile_images/712848447569661952/ayfI9-77.jpg'
    client.say(text: url, channel: data.channel)
  end
end

PongBot.run

一旦停止して再度 Bot を起動しましょう
今後は「logo」というコマンドが通るようになります
slack_with_ruby_bot5.jpg

最後に

Slack の Bot を Ruby で作成してみました
かなり簡単に作成することができました

今回は Getting Started 的な内容しか紹介していません
他にもエイリアスを張ったりオペレータオーバライド的なことをして計算機などを作ったりもできるようなので興味があれば以下のサイトを見てください

Slack で Bot を作るのは Hubot が有名ですが Ruby でも簡単に作成できるので今後は Ruby で Bot を作成しようかなと思います

参考サイト

0 件のコメント:

コメントを投稿