【Slack】Webhook経由での通知でユーザーグループにメンションを飛ばす


概要

仕様が変わって、Incoming Webhook経由だと<@group_name>でメンション飛ばせなくなったようなので、
slack-apiを使ったIncoming Webhook経由での通知でユーザーグループにメンションを飛ばす方法。

参照

SlackのAPI経由でのメンションの仕様変更(2018/9/12~)
Basic message formatting | slack api

方法

  1. ユーザーグループのIDを取得する
  2. API経由のメンションをIDに変更する

1.ユーザーグループのIDを取得する

  • slack apiの usergroups.list からユーザーグループの情報を一覧で取得する
    • もしtokenが未取得の場合は案内が出ているはずなのでtokenを取得する
    • Test Methodを押すとjson形式で一覧が取得できる
  • メンションを飛ばしたいユーザーグループのIDと名前を調べる
    • IDはidteam_idがありますがidの方です
    • 名前はnamehandleがありますがnameの方です
    • 公式リファレンスを見るとhandleでも平気そうな気がするので誰か試してみてください(笑)

2.API経由のメンションをIDに変更する

  • Incoming Webhook経由のメンションを下記に変更する
    • your_team_ididyour_group_namenameを入れる
<!subteam^your_team_id|your_group_name>
  • 全員に通知する場合はIDを取得しなくても平気で、それぞれ下記の通り
Slack上でのメンション方法 API経由でのメンション方法 通知される範囲
 @channel   <!channel> チャンネルのメンバー全員
@here <!here> アクティブなメンバー全員

追記(2020.08.27)

またまた仕様が変わったようです。
(@Ant3_Ng さんありがとうございます)

  1. ユーザーグループのIDを取得する
    slack apiの usergroups.listを見に行く必要がなくなり、Webでワークスペースを開いてgroupのページを見ると確認できるようです。

  2. API経由のメンションをIDに変更する
    旧でやると、@されるものの通知は来ないようです。

旧: <!subteam^your_team_id|your_group_name>
新: <!subteam^your_team_id>

詳細:Formatting text for app surfaces|Mentioning groups