Slack API で @username メンションが通知されない問題の解決方法
Slack API で @username メンションが通知されない問題を解決する方法をご紹介します。
原因) Slack API 仕様変更
Slack @username で通知されない問題の背景は Slack API 仕様変更によるものでした。
When evaluating messages to determine if your user or bot user is mentioned, look for a user ID, not a username.
Slack API 仕様変更により @username ではなく @userID を使うべきということです。
正しい Slack @ メンション宛先の確認方法
Slack @userID の確認方法
https://api.slack.com/methods/users.list/test から @userID と @username を一覧で確認できます。
slack.com/api/users.list response 一部抜粋
{ "ok": true, "members": [ { "id": "UH3FW2ELW", "team_id": "T3491U6E5", "name": "youremail", "deleted": false, "color": "e7392d", "real_name": "Firstname Lastname", "tz": "Asia\/Tokyo", "tz_label": "Japan Standard Time", "tz_offset": 32400, "profile": { "title": "", "phone": "", "skype": "", "real_name": "Firstname Lastname", "real_name_normalized": "Firstname Lastname", "display_name": "changedname", "display_name_normalized": "changedname", "status_text": "", |
“id”: “UH3FW2ELW” が @userID に対応する値です。自動発番です。
“name”: “youremail” が @username に対応する値です。Invite のとき Display Name に指定された値が使われます。Display Name を設定しなかった場合、Email Address の @ 以前が使われます。登録後に変更することはできません。
Slack @username でも大丈夫
@userID だとソースコード上の視認性がイマイチだと思うので、個人的には @username を利用することにしています。上記の例だと @userID は @UH3FW2ELW で @username は @youremail です。
“id” と同様に “name” の部分も初回登録後に変更されることはありません。
登録後に、表示名 (Display Name) を変更しても “display_name” や “display_name_normalized” が変更されるだけで “name” はそのままです。
以上、Slack API 経由で @username メンションさせて生産性向上していきたい、現場からお送りしました。