Slack API で @username メンションが通知されない問題を解決する方法をご紹介します。
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 を使うべきということです。
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 の @ 以前が使われます。登録後に変更することはできません。
@userID だとソースコード上の視認性がイマイチだと思うので、個人的には @username を利用することにしています。上記の例だと @userID は @UH3FW2ELW で @username は @youremail です。
“id” と同様に “name” の部分も初回登録後に変更されることはありません。
登録後に、表示名 (Display Name) を変更しても “display_name” や “display_name_normalized” が変更されるだけで “name” はそのままです。
以上、Slack API 経由で @username メンションさせて生産性向上していきたい、現場からお送りしました。