現在、弊社でもSlackを試験的に利用しているのですが、RTM APIを使えばローカルでもbotが作成できることを知ったのでPythonで作ってみようという記事です。
今回は第1回目です。
さて、SlackのBotといえば…
なのですが、残念ながらこのBot君はマスコット的なものなので任意の言葉に反応する程度のカスタマイズできません。もっと賢いBotを作成したいという場合は、SlackのAPIを通じて連携するBotを作成する必要があります。
Slackのbot作成といえばhubotでの作成例が多いのですが、RTM(Real Time Messaging) APIを利用すればWebSocketを用いたイベント受信が行えるので社内PC上でSlack botを稼働させることができます。
Real Time Messaging API | Slack
Slack Botアカウントの作成
まずはともかくSlack Botアカウントを作成しましょう。
既にチームのSlackは開設済で、権限のあるユーザでログインしているものとします。その状態で、下記リンクを開くと、Botアカウントの作成画面が開きます。
Botアカウントのユーザ名を入力して、「Add bot integration」を押します。
「API Token」は後で作成するBotで用いるのでメモしておきましょう。「Customize Icon」や「Customize Name」で作成したBotの名前やアイコン画像を変更できます。変更内容を「Save Integration」で保存します。
この後のテスト用にプライベートチャンネルを作成して作成したBotを登録しておきましょう。
Slack Bot環境の構築
さて、いよいよBotの作成にとりかかります。今回の導入環境はこちらです。
$ lsb_release -drc Description: Ubuntu 14.04.3 LTS Release: 14.04 Codename: trusty
言語は使い慣れたPythonにします。しかも日本語の扱いで面倒な処理はしたくないので3系を使います。
$ python3 -V Python 3.4.3
以下のPythonライブラリを使います。
※本記事執筆時点(2016/3/8)のバージョンは「0.3.1」です。
導入はpipで行います。今回はインストール直後の環境なのでPython3用のpipもインストールしています。
$ sudo apt-get install python3-pip $ sudo pip3 install slackbot
Slack Botを起動してみる
任意の場所にbot用のディレクトリを任意の名称で作成します。
$ mkdir bossan $ cd bossan/ $ touch slackbot_settings.py $ touch run.py
“slackbot_settings.py”に設定を記述します。API_TOKENは先程メモした値を設定してください。
# -*- coding: utf-8 -*- API_TOKEN = "XXXXXXXXXXXXXXXXXXXXXXXXXXXXX" default_reply = "スイマセン。其ノ言葉ワカリマセン"
“run.py”にBotを起動するコードを記述します。
# -*- coding: utf-8 -*- from slackbot.bot import Bot def main(): bot = Bot() bot.run() if __name__ == "__main__": main()
いよいよ、Botの起動です。
$ python3 run.py
メンションの特定の言葉に反応したり、チャンネルに投稿された言葉に反応したりします。
今回は疎通確認なのでSlackbotライブラリのデフォルトプラグイン(slackbot.plugin)の動作を見ただけなのですが、当然自分でプラグインを登録することで拡張することができます。ということで、次回はプラグインを作成してみましょう。