機械学習エンジニアを目指して③(Slackbot編)
前回、次回はクラスについて書きますといいましたが・・すみません汗
今回はPythonを用いて簡単なSlackbotを作成していきたいと思います!
プライベートですがゆくゆくは、こういうこともしてみよう。 - 今日食べたいものをslackに書く。 - 食べたいもののデータをDBに保管する。(ここまでは今週中にしたい・・) - ある程度データが集まってきたらPandasを用いてそのデータから食べたいものの確率を出して統計学的に有意があるメニューを今日食べたいメニューとして提案する!!!!!!!! - メニューで悩まなくていいのでみんな幸せ(すごい)
なんか、うん。
不安点 - ほとんどが夜はお寿司か唐揚げ、昼は明太子パスタになりそう(なる)
ああああああ・・・これこの3種類しか提案してくれなくなるんじゃ・・・(不安)
環境
- IntelliJ IDEA
- Python3.6
- Slack
- anaconda(もしかしたらいらないかも・・)
hubotの導入
左のメニューバーからAPPの「+ アプリを追加する」を選択してください。
次に上の検索欄に「hubot」と打ち込むと、hubotが出てくると思うので、それをインストールしてください。
設定の追加を押し、次の画面でユーザ名を入力後、hubotインテグレーションの追加ボタンを押下します。
すると、ダイレクトメッセージにSlackBotという人(?が追加されたと思います!
Pythonプロジェクトの作成
さっそくPythonプロジェクトを作っていきましょう!!
今回はこんな感じの構成で作りました!
- slackbot(プロジェクト名)
- plugins
- reply_manager.py
- init.py
- slackbot_settings.py(これだけ名前の変更不可)
- manage.py
- plugins
各種ファイルの作成
まずは、slackbot_settings.pyから触っていきたいと思います。 slackbotに関する設定ファイルです。 API_TOKENについては、hubotの導入の設定画面で作成したAPI_TOKENを使用してください!
# slackのhubotで作成したAPI_TOKENを設定 API_TOKEN = "xxxx-xxxxxxxxxxxx-xxxxxxxxxxxx-xxxxxxxxxxxxxxxxxxxxxxxx" # 何言ってるのかわからなかったとき default_reply = "え、ぽちょじゃないけど?" # 外部ファイルの読み込み PLUGINS = [ 'plugins', ]
次に、manage.pyです。 これは単純にPython起動用のファイルです。
from slackbot.bot import Bot def main(): bot = Bot() bot.run() if __name__ == "__main__": print('start slackbot') main()
最後に、reply_manager.pyです。 slackの画面で打ち込んだ文字を判別し、一致するものがあればそれに対応した言葉を返します。
from slackbot.bot import respond_to @respond_to('ぽちょ') @respond_to('ぽちょですか?') def rep_message(message): message.reply('え、ぽちょだけど!')
@respond_to(文字列)の文字列部分に書かれた言葉がslackに書き込まれたら、 message.reply('文字列')に書かれている言葉を返すというものです。
多分これでbot宛にslackを送ったらちゃんと反応が返ってきてくれると思います!(簡単)
また、上記だとメンションを指定する感じですが、下記の書き方だとメンション指定なしに、全ての言葉に反応します。
from slackbot.bot import listen_to @listen_to('ぽちょですか?') def rep_message(message): message.reply('え、ぽちょだけど!')
たったこれだけでSlackBotの基本的な動作が出来ちゃいます!!
とりあえずいったんここまで・・・