Slack APIによる自動メッセージでユーザーグループにメンションする方法
Slack APIを使って自動メッセージをユーザーグループ宛に送りたいとき。
Slackのアプリ内でメンションするときと同じようにメッセージ本文中で@マークをつけて@ユーザーグループ名
としても、メンションになりません。
@マークの代わりに以下のように本文中に記載する必要があります。
subteam
というタグのようなものでユーザーグループのIDを囲んであげる感じです。
<!subteam^{ここにユーザーグループのIDを指定する}>
たとえば、ユーザーグループのIDがAB12345
でお風呂が沸いたことを伝えたいときは、こんな感じの本文になります。
お風呂が沸きました。 <!subteam^AB12345>
普段馴染みのあるユーザーグループ名は使いません。
ユーザーグループのIDの方を使うのですが、このIDは普段Slackを使うときに使われませんし、見ることもありません。
ユーザーグループのIDを確認する方法は?
オフィシャルドキュメントによると、ユーザーグループのIDを確認する方法は次の二つのようです。
- usergroups.listのAPIを実行して結果を確認する
- ユーザーグループのプロフィールページを表示させ、そのURLを確認する
わざわざAPIを実行するのは正直面倒くさいですよね。
となると二番目の方法がいいのですが、どこにそのURLがあるのかよくわかりませんでした。
結果、私はWeb版のSlackを立ち上げ、IDが知りたいグループ名が表示されて状態で右クリック、「検証」を選択してHTMLをこじ開けそこから半ば強引にIDを拾ってきました。
ちゃんとユーザーグループのIDが記載されているタグのところにdata属性としてユーザーグループのIDがありました!
正しいやり方ではないと思いますが、とりあえずSlack APIを使ってのユーザーグループID宛のメンションは成功しました。
グループIDはもっと簡単に確認できるようになってほしいですね。隠しておいてもあんまり意味はないでしょうに。
今回はRubyを使ってSlackのAPIを実行したのでslack-notifier
というgemを使いましたが、gemを使わなくても、他の言語でもこの方法は同様に使えると思います。
この記事の環境情報
- Ruby 3.1.2
- slack-notifier 2.4.0
- 2023年3月時点のSlack
Rubyに関する他の記事を読む
- slimでtype='application/ld+json'のscriptタグを書く
- RubyでUnixtimeからTimeオブジェクトを生成する
- gemインストール時にUndefined symbols for architecture arm64と出たときの対応
- RubyでUTCの時刻情報をJST基準に変換する
最近の記事を読む
- Flutterでcontextを使わずにlocale情報を取得する
- Cloud RunでIAPを有効にしようとしてハマったこと
- slimでtype='application/ld+json'のscriptタグを書く
- タグマネージャーでjsのloadイベントを発火させたいとき
- mysqlコマンドを実行してERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)と言われたら