11
9

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

NEW GAME! Ops実現に向けてSlack Botサンプルを作成するぞい

Last updated at Posted at 2016-07-30

最近Slackを使い始めたり、「Slack入門」刊行記念LT大会に参加させていただいたこともあり、Slack Bot作成に興味が湧いてきました。

調べてみたところ、簡単なBot作成まで行えたので、忘れないように手順をメモしておこうと思います。

Slack Botの動作環境+開発環境

Slack Botの動作環境はUbuntu Server 16.04 LTS、開発環境はRubyとslack-api gemを利用しています。

$ cat /etc/lsb-release 
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=16.04
DISTRIB_CODENAME=xenial
DISTRIB_DESCRIPTION="Ubuntu 16.04 LTS"

開発環境の準備

以下の手順で必要なパッケージをインストールします。

$ which ruby
$ ruby --version
ruby 2.3.1p112 (2016-04-26) [x86_64-linux-gnu]
$ sudo gem install bundle

gemのslack-apiをインストールする際に必要となるパッケージをインストールします。

$ sudo apt-get install gcc g++ ruby-dev libssl-dev

Gemfileには以下の内容を記載します。

Gemfile
source 'https://rubygems.org'
gem 'slack-api'

bundle経由で必要なgemをインストールします。

$ bundle install --path vender/bundle
$ bundle list 
Gems included by the bundle:
  * bundler (1.12.5)
  * eventmachine (1.2.0.1)
  * faraday (0.9.2)
  * faraday_middleware (0.10.0)
  * faye-websocket (0.9.2)
  * multi_json (1.12.1)
  * multipart-post (2.0.0)
  * slack-api (1.2.3)
  * websocket-driver (0.6.4)
  * websocket-extensions (0.1.2)

これで準備完了です。

簡単なBotを作成する

今回はNEW GAME!をモチーフにして簡単なBotのサンプルを作成してみます。

コードは以下のような感じになります。また、あらかじめSlack API用のトークンを取得し、環境変数SLACK_TOKENに設定しておきます。

#!/usr/bin/env ruby
# coding: utf-8

require 'slack'

Slack.configure {|config|
  config.token = ENV['SLACK_TOKEN']
}
client = Slack.realtime

start_time = Time.now.to_i
client.on :message do |data|
  post_time = data["ts"].sub(/\..*$/, "").to_i
  next if post_time < start_time

  msg = data["text"]
  if msg =~ /^今日も一日/
    param = { 
      token:   ENV['SLACK_TOKEN'],
      channel: data["channel"],
      text:    'がんばるぞい! ',
      username: '涼風青葉@イーグルジャンプ',
      icon_url: 'http://newgame-anime.com/assets/special/twticon/ng_icon_1.jpg'
    }   
    Slack.chat_postMessage(param)
  end 
end
client.start

上記のスクリプトを実行します。

$ bundle exec ruby ./SlackBotSample.rb

この状態でSlackから「今日も一日」と入力すると、涼風さん(Bot)が「がんばるぞい!」と応答してくれます。

newgame_ops001.png

まとめ

Slack Botを作成するための環境構築手順、基本的なBotのコード作成を行ってみました。基本的なBotの動作の流れは把握できた感じなので、これを発展させてNEW GAME! Opsを実現したいと思います。

参考URL

11
9
0

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
11
9

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?