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_room
で hideack
というユーザの人が 出社
or 退社
といったワードを発言した際にhookに記載したコマンドを実行ようになりました。上の例であれば、打刻用のコマンドを実行して特定チャンネルに通知されます。
言ってしまうと、普通にbot立てればいいじゃんという話ではあるのですが、
といったケースであれば便利になるケースもある。かも。
あと、打刻に関しても普通にターミナルからコマンドを実行すればいいじゃないかという話なのですが、これもまたインターフェースとしてのSlackが個人的に優先度が高い*1のでこういった実装を自分用にしてみたという経緯だったりします。
*1:UX的にどうこうというわけではなく単純に開いている時間差な気がする