概要
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」を選択します
Bot の名前を設定する画面になるので好きなボット名を設定し「Add bot integration」を選択します
これで Bots インテグレーションの追加が完了です
表示されている API Token をあとで使うのでメモしておきましょう
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 して話かけてみましょう
こんな感じで動作すると思います
画像を投稿するように修正してみる
以下のような感じに修正してみましょう
画像は自分の 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 の Bot を Ruby で作成してみました
かなり簡単に作成することができました
今回は Getting Started 的な内容しか紹介していません
他にもエイリアスを張ったりオペレータオーバライド的なことをして計算機などを作ったりもできるようなので興味があれば以下のサイトを見てください
Slack で Bot を作るのは Hubot が有名ですが Ruby でも簡単に作成できるので今後は Ruby で Bot を作成しようかなと思います
0 件のコメント:
コメントを投稿