Slackのプロフィールに勤務状況を表示
2023年 04月 03日 月曜日
Slackで絵文字をトグルしてみた
勤怠シェルスクリプト
弊社の勤怠システムには出勤を操作できるエンドポイントがあります
curlコマンドで出勤するためのシェルスクリプトがあり、ランチャーソフトから叩いています
この出勤スクリプトに機能を追加してSlackのステータスが「出勤中」「何もなし」とトグルするツールを作ってみたいと思います
OAuth2.0
ユーザーとして認証するには、OAuth2.0を使用してログインする必要があります。
WebサイトでOAuthを使用する場合、プロバイダーが用意されています
Callback URLを設定してリダイレクトされたトークンを含むURLを取得することも簡単です。
ですが今回はコンソールアプリを使用するため、注意点があります。
Callback URLにはSSL対応が必要です。オレオレ証明書を作成してインストールすることも可能ですが、コンソールアプリであるため、無断で証明書をインストールするのは行儀が悪すぎます
実装方法方法を考えました
- Seleniumを起動してCurrentUrlを監視してトークンを探す
- ユーザーにリダイレクト先のURLをコピペしてもらう
- 無効な証明書でゴリ押しする??(出来るみたいです)
今回はコピペで実装しました、よりいい方法があれば教えてもらえると嬉しいです
アプリ実装
認証を受ける準備ができましたのでアプリを作っていきます
認証
$ ./SlackUtil.exe signin
リダイレクトされたURLをコンソールに入力するとトークンが表示されます トークンは自分で保管して各コマンドの引数に渡してつかってください
[Success] Token: xoxp-2551974910-???????????-5080049833072-d7a931a
キャッシュファイルにトークンを保存する仕様も考えましたが、トークンを標準出力で出力することにしました、各コマンドの引数でトークンをもらってAPIに流します
プロフィール更新
./SlackUtil/SlackUtil.exe profile <TOKEN> --emoji :勤務中:
勤務中という絵文字を付けます、すでにステータスメッセージがある場合は上書きされません
./SlackUtil/SlackUtil.exe profile <TOKEN> --emoji :勤務中: --status 17時から勤務中
勤務中にして何時から17時から勤務中であることを表示します
シェルスクリプトで実行する
"$(date +'%-H時から勤務中')"
で動的に書いてみます
curl -X POST [http://mkkintai.herokuapp.com/api/v1/timekeepers](http://mkkintai.herokuapp.com/api/v1/timekeepers) -d "[email=mksc.jp](mailto:email=mksc.jp)&password="
./SlackUtil/SlackUtil.exe profile <TOKEN> --emoji :勤務中: --status "$(date +'%-H時から勤務中')"
OSSなので良ければ使ってみてください、どのワークスペースでも使えるはずです