Slackで動的なユーザグループを作成しようとして失敗した
- POSTS
この記事は https://qiita.com/sin_tanaka/items/77f7b6bf2c11d41617fc にも紐付いています。
TL;DR Slackで動的なユーザグループがあると便利そう @here みたいな Slackの usergroups.users.update APIを使うと行けるのでは? Chalice (Python)と AWS Lambda 使って定期実行したらできた できたけど問題が発生したので辞めた 用途にあってるのか技術検証大事 前置き 弊社は歴史が古いながらも、「コアタイムなしのフルフレックス&リモートワーク推奨」な自由な働き方を売りにしている会社です。 出社時間はみんなバラバラですし、3割ぐらいはリモートワーカーです。よって、オフィスを構えているものの全員が出社することは稀です。
しかし働き方が変わると、議論すべき良し悪しや、解決すべき課題も発生します。 本記事はリモートワークの課題を解決しようとした話です。
リモートワーク時のチャット運用の課題 昨今、 @here , @channel 禁止等、各社のSlackの運用の話題になるのを見かけます。 通知は便利ですがプログラマの集中力を乱す原因にもなるからです。
そんな中、弊社Slackでこんな @here メンションがありました(自分のポストです、、)
どうでしょうか?状況としては、「少し急ぎ」「アクティブなユーザにのみ通知したい」な状況なので、一般的な @here の使い方かと思います。
しかしリモートワーカーからしたらどうでしょうか リモートワーカーにとって社屋の会議室、応接室の使用状況は共有されなくても問題ないはずです。
つまりリモートワーカーにとってこの通知は不要なのです。
もちろんこれは通知をされる側だけでなく @here で通知する側もリモートワークの人に通知飛ばすの申し訳ないな、、と感じるかもしれません。
「リモートワーク推奨・・・だけど関係ない通知たくさんするよ!!」な会社だったらプログラマにとって働きやすい環境とは言えないのでは…?
このように、リモートワーカーが増えるとチャットの 通知先を設計 することが重要になってきます。
動的なメンション そこで考えたのが動的なメンションです。 ある条件を満たすユーザのみに通知されるメンションがあればこの問題を解決できると考えました。
今回の例でいうと、「今日出社している人のみに通知されるメンション」となります。
そういえば、 @here もチャンネル内のアクティブなユーザのみに通知する、という意味で動的なメンションですね。
実装の検討 弊社には内製の行き先ボードと、そのREST APIがあります。 これを利用すればオフィスに出社している人は一覧で取れる。 なのであとはなんとかオフィスに出社している人一覧に向けてSlack上でメンションできればよさそうです。
Slack側にいい感じのAPIがないか調べていると usergroups.users.update というAPIを発見しました。
usergroups.users.update method | Slack
usergroupにグループのID、usersにユーザのIDの配列を渡すことでユーザーグループのユーザーを更新できるというものです。