あるアクションに対して、API経由でユーザー宛にメンションする仕組みを動かしていたのですが、本日突然メンションされない(Slackアプリ上でリンクがつかず、通知も飛ばない)状態になりました。
curl -XPOST -d "token=TOKEN" -d 'channel=channellname' -d "text=<@username> こんにちは" -d 'as_user=true' 'https://slack.com/api/chat.postMessage' >&/dev/null
どうやらSlack APIに仕様変更があったらしい。
https://api.slack.com/changelog/2017-09-the-one-about-usernames
When evaluating messages to determine if your user or bot user is mentioned, look for a user ID, not a username.
<@username>ではなく<@userID>を使え、ということのようです。
ユーザーIDなんて知らんがな。
ということでWebテスターからサクッと探します。
https://api.slack.com/methods/users.list/test
結果から、メンションを飛ばしたい相手を見つけてidをコピーし、usernameを置き換え。
curl -XPOST -d "token=TOKEN" -d 'channel=channellname' -d "text=<@userID> こんにちは" -d 'as_user=true' 'https://slack.com/api/chat.postMessage' >&/dev/null
無事メンションできました。