TL;DR
- カスタムレスポンスでメンションをつけるときにはユーザー名を使う
- Slackには表示名、氏名のほかにユーザー名が存在する。
ユーザー名の確認の仕方
- 左のチャンネル一覧の上、ワークスペース名を押してプルダウンメニューを出す
- プルダウンメニューから「slack を カスタマイズ」を開く
- 左のメニュー欄の「アカウントとプロフィール」を開く
- 設定タブの下に「ユーザー名」の行があるので右の「開く」ボタンを押す
何がしたかったのか
Slackのちょっとしたやり取りや自動で流れてくるメッセージにフックさせて、
自分に通知を飛ばしたかったのがスタートです。
WebHookを使ったSlack Botを実装すれば確実だったのですが、
手早く実装したかったのでカスタムレスポンスですぐ実装できないかと考えてしまった。
それで記事書こうかと思うくらいにはハマることになるとは知らずに……
とりあえず、サクッと書いてみようか
カスタムレスポンスですよね。
よっしゃ、設定を開いてちょちょいのちょいですよ。
@通行人A さん\nエラーの発生を検知しました。\n対応をお願いします
個別のページでテストしてみると、
お? おかしいぞ……メンションじゃなくて文字列になってる。
自分で調査すると
やはりSlackほど有名なサービスだと情報も多いですね。
いくつかの情報を確認したところ<@user_id>
を使えばいいとのこと。
早速、内容を変更して入れてみるもやっぱり送られない。
どうやらWebHookを使ったSlack Botの仕様であって、
カスタムレスポンスは仕様が違う可能性が見えてきました。
一人ではどうしようもなかったので
参加していた某エンジニアが集まるSlackチームで質問を投げてみると、
一緒に色々検証してくれる流れに。 皆さん本当にありがとうございます
そのうち一人方からカスタムレスポンスでは「@氏名」だとメンションが飛ぶとの結果が
早速試してみるが、自分ではうまくいかなかった。なぜ……
その人が書いたカスタムレスポンスの文面を見てみると、確かに氏名が指定してありました。
そしてその隣を見て気付いたのです。
「最終更新者の名前と氏名が同じだ……」
氏名? 表示名? いいえ、ユーザー名です。
自分は社内のslackで氏名と表示名とユーザー名のすべてが違う奇特な人間だったため、
常々違和感は持っていました。
そして、試しにユーザー名を指定すると……メンションが飛んだ!
カスタムレスポンスでメンションをつける際は @ユーザー名
です。
それだけの情報ですがこんなところまで読んでいただいてありがとうございます。
自分と同じように、3つの名前を使い分けている奇特な方々の助けになれていれば幸いです。
参考にしたサイト
- slack BOTでのメンションの飛ばし方!! - Qiita
- Slackbotからmentionを飛ばす – WEBってなんだろう
- SlackのIncoming Webhooksでメンションを飛ばす方法 - Qiita
あと私が参加しているエンジニアのコミュニティはこちらです。
(アドベントカレンダーですが、ここのTopにmohikanzの説明があります)
mohikanz Advent Calendar 2018 - Adventar