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!