Slack

Slack APIでユーザー宛のメンションができなくなったので対策した

More than 1 year has passed since last update.

あるアクションに対して、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

無事メンションできました。