Yu's Blog
気ままに書いているブログ。
2018年10月3日水曜日
シフト代行管理SlackAppを作りたい とりあえず動くBot編
バイト先のシフトの代行依頼の処理がもたつくのでSlackAppにしたいと思った
## 理想 1. SlackBotに代行依頼を投げる 1. 特定のChannelに通知 1. SlackBotに代行希望提出 1. 担当者割当 1. SlackBotから代行決定通知 \+SlackBotに`/shift`でシフト確認 みたいなのを目指す ## 作る前に 公式ドキュメントを読んでみると、どうもリクエストを投げたらjsonを返してどうこうやるらしい。「こういうjsonを返して」は書いてあるけどそれを実現する方法は当然書いてない(あたりまえか)。 使ったことのあるphpで書いてみてもいいけど、この間PyConに参加したのでせっかくだからPythonで作ってみたいと思っていたらこんな記事があった。 > PythonのslackbotライブラリでSlackボットを作る
> https://qiita.com/sukesuke/items/1ac92251def87357fdf6 > > PythonでSlackbotを作る(1)
> https://blog.bitmeister.jp/?p=3892 これを真似してとりあえず動くBotの作り方を習得する。 ## とりあえず動くBotを作る 1. SlackAppを準備する 1. `https://api.slack.com/apps/`にアクセスして*Create New App*からアプリ名と追加するWorkSpaceを選択(権限のあるユーザーじゃないとだめかも)して*Create App*。 1. 左の*Features > Bot Users*を開いて*Add a Bot User*をクリック。ユーザー名とディスプレイ名を設定してから*Add Bot User*をクリック。これでAppにBotが含まれるようになった。 1. 左の*Basic Infomation*から*Install your app to your workspace > Install App to Workspace*をクリック。 1. 権限を与える許可をすればWorkspaceにBotが出てくる。 ちなみにこの状態で話しかけても何も起こらない。 1. Pythonを準備 たぶん外から届くサーバーが必要だと思ったのでとりあえずお家サーバーにPython3ともろもろを準備。 ``` bash $ pyenv install 3.6.6 $ pyenv global 3.6.6 $ python --version Python 3.6.6 $ pip install pip --upgrade $ pip install slackbot ``` 1. SlackBotの準備 ディレクトリ構造を作ってファイルを用意する。そのとおりにやったので以下の構造とファイル内容はほぼ上記記事の引用 1. こんなディレクトリ構造を用意する ``` slackbot # プログラムをまとめるディレクトリ。名前はなんでも良い ├─ run.py # このプログラムを実行することで、ボットを起動する ├─ slackbot_settings.py # botに関する設定を書くファイル └─ plugins # botの機能はこのディレクトリに追加する ├─ __init__.py # モジュールを示すためのファイル。空で良い └─ my_mention.py # 機能を各ファイル。任意の名前で良い ``` 1. こんな`run.py`にする ``` # coding: utf-8 from slackbot.bot import Bot def main(): bot = Bot() bot.run() if __name__ == "__main__": print('start slackbot') main() ``` 1. こんな`slackbot_settings.py`にする ``` # coding: utf-8 # botアカウントのトークンを指定 API_TOKEN = "ここの文字列はFeatures>OAuth & Permissions>Bot User OAuth Access Tokenにかかれたトークン" # このbot宛のメッセージで、どの応答にも当てはまらない場合の応答文字列 DEFAULT_REPLY = "こんにちは!" # プラグインスクリプトを置いてあるサブディレクトリ名のリスト PLUGINS = ['plugins'] ``` 1. `$ python run.py` 1. Botが返事をするようになる びっくりするくらい簡単にできた...ライブラリの力恐るべし... ## どこでも動くのか 勝手にwebサーバーを用意しなくちゃいけないと思いこんでいたので外からアクセスできるお家サーバーでやったけど、このかんじだと、tokenを使うことでドメインのアクセス先とか意識しないでbotを動かせるんじゃないかと思った。 ~~謎の技術~~(勉強不足ですね...) というわけで`slackbot/`以下をzipで固めてメイン機に転送して実行してみた。 ``` ~/tmp/slackbot ❯ python --version Python 3.6.0 ~/tmp/slackbot ❯ python run.py start slackbot ``` ![https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjLLaXPSpWqmxnVnvUdZECNg6ovTC8OfnkIzHdNNADrhrKzm2j2WkBlMJ_WvDThpJPN6ZxvHVFsJ3Gsy4q0D43z8qWwpPS-e4OTZYNnh-x5LMHiuIPQhGG5w-Bxn_38pdHmb0oItn8cD9qj/s1600/%25E3%2582%25B9%25E3%2582%25AF%25E3%2583%25AA%25E3%2583%25BC%25E3%2583%25B3%25E3%2582%25B7%25E3%2583%25A7%25E3%2583%2583%25E3%2583%2588+2018-10-03+13.55.10.png](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjLLaXPSpWqmxnVnvUdZECNg6ovTC8OfnkIzHdNNADrhrKzm2j2WkBlMJ_WvDThpJPN6ZxvHVFsJ3Gsy4q0D43z8qWwpPS-e4OTZYNnh-x5LMHiuIPQhGG5w-Bxn_38pdHmb0oItn8cD9qj/s1600/%25E3%2582%25B9%25E3%2582%25AF%25E3%2583%25AA%25E3%2583%25BC%25E3%2583%25B3%25E3%2582%25B7%25E3%2583%25A7%25E3%2583%2583%25E3%2583%2588+2018-10-03+13.55.10.png) 驚くべきことに動く... ## とりあえずつくれそう なんか思ってたのと違う(簡単すぎるという意味で)けどとりあえず動くbotをつくることはできた。参考記事いわく、ここにpluginを書くことでカスタム返信+αできるようだ。次はここからやっていこう。
0 件のコメント:
コメントを投稿
次の投稿
前の投稿
ホーム
登録:
コメントの投稿 (Atom)
0 件のコメント:
コメントを投稿