LoginSignup
7
7

More than 5 years have passed since last update.

[Slack]API経由でreaction (add emoji)

Last updated at Posted at 2019-02-21

概要

Slack MessageへbotからReaction(emoji)をつけさせたい

方法

Slack APIを使うほか無さそうです。

ドキュメントが読める人はreactions.addを読みましょう。

以下はそれを試しに実行するまでの手順です。

Hello World

Slack APIの登録

簡易的に書いているので、理解に苦しんだ際はSlack API 推奨Tokenについてを参照してください。

新しいAppを登録

  1. https://api.slack.com/apps から Create New Appを押下
  2. 名前とワークスペースはよしなに

Appにreactions.addの権限を与える

左のメニューから OAuth & Permissions を選択

image.png

ScopesSelect Permission Scopes プルダウンを開き、 Add or remove emoji reactions for user を選択

image.png

Save Changesを押下

認可する

OAuth & Permissions のページの Install App to Workspace を押下して認可する。

これで認可したユーザ経由でreactionをつけることができる。

アクセストークンを控える

OAuth & Permissions のページの OAuth Access Token を控えておく。

スクリーンショット 2019-02-21 23.56.01.jpg

Reactionを付けたいMessageの情報を取得

Reactionを付けたいメッセージのURLを控える

image.png

URLに必要情報が記載されているのでパースする

MessageのURLは以下のようになっている。

https://[ワークススペース名].slack.com/archives/[チャンネルID]/p[投稿時刻]

このうち「チャンネルID」「投稿時刻」が必要になるので控えておく。

ただし、「投稿時刻」はエポックマイクロ秒で記載されており、これを小数点付きのエポック秒に変換する必要がある。

ex. 1234567890123456 => 1234567890.123456

curlでリクエストしてみる

以下のようにリクエストすること

curl -X POST 'https://slack.com/api/reactions.add?token=xxxx-xxxxxxxxx-xxxx&channel=C1234567890&timestamp=1234567890.123456&name=thumbsup'

パラメータの説明

  • token: OAuthのアクセストークン
  • channel: 投稿するチャンネルID。チャンネル名とは異なる。
  • timestamp: 投稿した時刻。整形した小数点付きのエポック秒を指定する。
  • name: 付けたいemojiを指定。

botユーザにreactionさせる

今回の手順だと、認可を得たユーザがリアクションしたことになってしまう。

botユーザにリアクションをつけさせたい場合は追加で以下の手順を実施。

Bot Usersを登録する

これでBotユーザになる。

スクリーンショット 2019-02-22 23.08.06.jpg

再度認可を得る

  • 左のメニューから OAuth & Permissions を選択
  • 「Reinstall App」を押下

Bot Userのトークンをコピーする

xoxbで始まるトークンをコピーする。

スクリーンショット 2019-02-22 23.08.49.jpg

トークンを変更して以下のようにリクエストする。他のパラメータは変更不要。

curl -X POST 'https://slack.com/api/reactions.add?token=xoxb-xxxxxxxxx-xxxx&channel=C1234567890&timestamp=1234567890.123456&name=thumbsup'

疑問点

HTTP MethodはPOSTを要求されているが、各パラメータはJSONではなくクエリストリングの形式で渡さないと動かなかった。なぜ?

7
7
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
7