Slackのプロフィールに勤務状況を表示

Slackで絵文字をトグルしてみた

勤怠シェルスクリプト

弊社の勤怠システムには出勤を操作できるエンドポイントがあります

curlコマンドで出勤するためのシェルスクリプトがあり、ランチャーソフトから叩いています

checkin

この出勤スクリプトに機能を追加してSlackのステータスが「出勤中」「何もなし」とトグルするツールを作ってみたいと思います

slack-profile

OAuth2.0

ユーザーとして認証するには、OAuth2.0を使用してログインする必要があります。

WebサイトでOAuthを使用する場合、プロバイダーが用意されています

Callback URLを設定してリダイレクトされたトークンを含むURLを取得することも簡単です。

ですが今回はコンソールアプリを使用するため、注意点があります。

Callback URLにはSSL対応が必要です。オレオレ証明書を作成してインストールすることも可能ですが、コンソールアプリであるため、無断で証明書をインストールするのは行儀が悪すぎます

実装方法方法を考えました

  • Seleniumを起動してCurrentUrlを監視してトークンを探す
  • ユーザーにリダイレクト先のURLをコピペしてもらう
  • 無効な証明書でゴリ押しする??(出来るみたいです)

今回はコピペで実装しました、よりいい方法があれば教えてもらえると嬉しいです

アプリ実装

認証を受ける準備ができましたのでアプリを作っていきます

認証

$ ./SlackUtil.exe signin

するとブラウザが開くので許可します oauth

リダイレクトされた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なので良ければ使ってみてください、どのワークスペースでも使えるはずです

https://github.com/aijkl/slack-emoji-util

この記事をシェア

弊社では、一緒に会社を面白くしてくれる仲間を募集しています。
お気軽にお問い合わせください!