Slackでタイムカードに打刻する

以前書いた PixelaでSlackにおける自分の発言数を記録する - テノニッキ (@hideack 's diary) 応用編として、自分が参加しているSlackのチャンネルを眺めるくん (slack-cli-stream - npm ) に 特定のチャンネル特定のユーザー または 特定の発言内容 に合致する場合のみフックさせて任意のスクリプトを実行できる様にしてみました。

こうすると先日書いたPixelaへの記録以外にも、特定の条件に合致したときに打刻が行える様になります。

例えば弊社GMOペパボであれば、タイムカードのシステムに使っているサービスに対して打刻する GitHub - yano3/kinnosuke-clocking-cli: Clocking in/out cli for Kinnosuke. というシェル上で実行できるコマンドがあるので

定義用のYAML

token: xoxp-xxxxx-xxxxx-xxxxx-xxxxx
hooks:
-
user: hideack
hook: curl -X PUT https://pixe.la/v1/users/hideack/graphs/slack-message/increment -H 'X-USER-TOKEN:xxxxx' -H 'Content-Length:0'
-
user: hideack
channel: example_room
keyword: 出社
hook: "kinnosuke-clocking-cli -y && curl -s -X POST -d channel=example_room -d message='出社打刻したよ' http://takosan.example.com/notice"
-
user: hideack
channel: example_room
keyword: 退社
hook: "kinnosuke-clocking-cli -y -out && curl -s -X POST -d channel=example_room -d message='退社打刻したよ' http://takosan.example.com/notice"

といった形で記載し、slack-cli-stream を実行してターミナルにSlackのメッセージ内容を垂れ流した状態にしておけば、Slack上の #example_roomhideack というユーザの人が 出社 or 退社 といったワードを発言した際にhookに記載したコマンドを実行ようになりました。上の例であれば、打刻用のコマンドを実行して特定チャンネルに通知されます。

言ってしまうと、普通にbot立てればいいじゃんという話ではあるのですが、

  • 個人のトークンを使ってごにょごにょするときに置く場所気を使う
  • 永続的に動いて無くても別に良い (自分がMac開いているときだけ動いてれば十分)

といったケースであれば便利になるケースもある。かも。

あと、打刻に関しても普通にターミナルからコマンドを実行すればいいじゃないかという話なのですが、これもまたインターフェースとしてのSlackが個人的に優先度が高い*1のでこういった実装を自分用にしてみたという経緯だったりします。

www.npmjs.com

*1:UX的にどうこうというわけではなく単純に開いている時間差な気がする

(Visited 102 times, 1 visits today)

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です