本記事ではSlackbotをPythonで作成する方法について解説しています。
とりあえず動かしてみたいという場合はmiyabikno/slackbot-pyからサンプルコードをダウンロードできます。
◆Slackbotとは?
Botはインターネット上の操作を自動実行するためのプログラムです。
Slackbotの場合はSlackからBotに指示をすることでプログラムを自動実行できます。ユーザーと同じように会話ができる他、特定の言葉をSlackに入力することでスクリプトの実行を始めとした様々な処理を行うことが可能です。
目次
Slackbot作成ライブラリの導入方法
PythonでSlackbotを導入する方法はいくつかありますが、今回はPythonのライブラリを使う方法を紹介します。
以下のライブラリです。
https://github.com/lins05/slackbot
ライブラリのインストール
ライブラリをpipコマンドでインストールします。
「Successfully installed」が出れば完了です。
とりあえず動かしてみたい場合のサンプルコード
とりあえず動かしてみたいという場合は以下ののページからダウンロードしてください。
※動作させるためにはAPIトークンの取得とslackbotライブラリのインストールが必要です。
>>SlackbotのAPIトークンを取得する(動画あり)
Slackbot用のAPIトークンを取得する
SlackよりBotに使うためのAPIトークンを取得します。
◆APIの取得手順
1.ワークスペースのAPPフォルダに移動します。
https://xxxxxxxxx.slack.com/apps
2.サイドメニューの「カテゴリ」から「Bot関連を選択」します。
3.「Hubot」を選択します。
4.「設定の追加」ボタンをクリックします。
5.名前を入力して「Hubotインテグレーションの追加」を押します。
6.「API トークン」に書かれている内容をコピーします。
◆今回作成したBot:ターコイズくん
画像はSlackの「ghost」を使用しています。
Slackbotの作成方法と実行例
PythonでBotを実行するためには「設定ファイル」、「実行ファイル」、「Botの応答を記述するファイル」が必要です。
◆今回使用するファイル
・slackbot_settings.py:Botの設定を書くためのファイル(名称変更不可)
・bot.py:Botを起動するための実行ファイル(名前は任意)
・botmodule.py:Botの応答を記述するためのモジュール(名前は任意)
サンプルコードは以下のページからダウンロードできます。(リファクタリングや不具合の修正などで記事と内容が異なっている場合があります。)
miyabikno/slackbot-py
◆slackbot_settings.pyに記述する内容
Botの設定についての記述です。
「API_TOKENには上記の「Bot用のAPIトークンを取得する」で取得したAPIトークンの記述します。
「DEFAULT_REPLY」はBotのデフォルト応答の指定です。
定義していない言葉を聞いた場合は「DEFAULT_REPLY」の内容を応答します。
「PLUGINS」には外部モジュールを指定します。「slackbot.plugins」は今回インストールしたライブラリに同梱されているモジュールです。
「hello」などのいくつかの応答がこのモジュールに含まれています。
また、自作のモジュールも指定可能です。今回は「botmodule.py」というモジュールを作成したのでこれも追加しています。
1 2 3 4 5 6 7 8 9 10 11 | # 「API_TOKEN」にはSlackから取得したAPIトークンを記述してください API_TOKEN = "XXXXXXXXXXXXXXXXXXX" # 知らない言葉を聞いた時のデフォルトの応答 DEFAULT_REPLY = "その言葉の意味は知りません" # 外部ファイルを読み込む。botmodule.pyを読み込んでおく PLUGINS = [ 'slackbot.plugins', 'botmodule', ] |
◆bot.pyに記述する内容
Botを起動する時の実行ファイルです。Botを起動するための処理を記述します。
1 2 3 4 5 6 7 8 | from slackbot.bot import Bot # Botを起動する def main(): bot = Bot() bot.run() if __name__ == "__main__": main() |
◆botmodule.pyに記述する内容
Botで応答するための記述を行うモジュールです。
今回は「こんにちは」と「コニチハ」という二つの定義を行いました。Botの応答は「@respond_to」または「@listen_to」の後に関数を定義します。
「@respond_to」はメンション(@でターゲット指定)した場合のみ応答を返します。「@listen_to」はメンションをしなくても応答を返します。
「message.reply()」はSlackにメッセージを返すメソッドです。
1 2 3 4 5 6 7 8 9 10 11 12 13 | from slackbot.bot import respond_to from slackbot.bot import listen_to # 「respond_to」はメンションする(@でターゲットを指定すること)と応答する @respond_to('こんにちは') def greeting_1(message): # Slackに応答を返す message.reply('こんにちは!') # 「listen_to」はメンションがなくても応答する @listen_to('コニチハ') def greeting_2(message): message.reply('コニチハ') |
Slackbotの起動と動作確認
◆Botの起動
Botの起動はターミナルから行います。
エラーがでなければ起動OKです。
◆実行結果
「listen_to」で定義した「コニチハ」はメンションなしで応答しました。
一方「respond_to」で定義した「こんにちは」はメンションしないと応答しません。
定義していない言葉にはデフォルトの応答を返してきます。
終わりに:PythonでSlackbotを作って活用しよう
Slackbotは最も簡単に作れるチャットボットの一つです。さらにPythonなら非常に簡単に作れます。
チャットボットは機能の拡張もしやすいので勉強したことを試すために使うのも良いですね。
今回は挨拶を返すだけでしたが、Slackbotを活用すればスクリプトの実行やファイルの内容を読み込んで表示するなど様々な処理が可能です。
本記事の手順を参考にして是非作成してみてください。
Slackbot構築マニュアル>>Slackbotの作り方マニュアル〜Python編〜