2020年のSlack連携

LinuxからSlackにテキストを投げたいことがありますよね。

昔は「Slackでトークンを作成」「トークンを使ってPOST一発で何でもできる」みたいな感じだったのですが、いつしかそのトークンは「Legacy token」と呼ばれ、新規作成はできなくなっています。

今までLegacy tokenでごまかしごかましやってきたのですが、今日ついに重い腰を上げてキャッチアップしたので、ここにポイントだけメモっておこうと思います。

Appを作る

slack apiページからAppを作ります。App Nameは何でもOKです。

権限を付ける

Basic Information ページの Building Apps for Slack → Permissions から OAuth & Permission ページに進み、Scopes → Bot Token Scopes の [Add an OAuth Scope]ボタンで以下の権限を追加します。

  • chat:write
  • chat:write.customize

“chat:write.customize” を付けるのがポイントです。これが無いとユーザ名やアイコンのカスタマイズができません。

AppをWorkspaceにインストールする

OAuth & Permissions の一番上 [Install App to Workspace]を押して App を Workspace にインストールします。

インストールすると Bot User OAuth Access Token が表示されるのでメモっておきましょう。

チャンネルにAppをインストールする

AppからポストしたいチャンネルにAppをインストールします。

ワークスペースのチャンネルに入り、i ボタン → その他 → アプリを追加するとして、上記で作成した App を選択して[追加]

(アプリがすでに追加されている場合は #チャンネル名内のn個のアプリを表示する → アプリを追加する、となります)

chat.postMessage を使ってメッセージをポストする

あとはAPIでメッセージをポストするだけです。

chat.postMessageを以下の感じのパラメタでコールすれば指定したアイコン、ユーザ名でメッセージがポストできます。

{
    username: 'foo',
    icon_emoji: 'robot_face',
    text: 'Hello world!',
    channel: '#random',
  }

ウワーoAuthしないとダメなの?めんどうだな〜。とか思っていたのですが、思ったより面倒じゃなかったです。これでこれからも好きなアイコンと名前でSlackにポストできますね!

以上です!

Happy Hacking!