はじめに
こんにちは、シルです。
今回はAPIメソッドを使用して、投稿にリアクションをします。
絵文字について
Slackの絵文字とは
- コミュニケーションの補助: メッセージの感情や反応を簡単に表現するために使用される。
- カスタマイズ可能: 標準の絵文字に加え、自分たちでカスタム絵文字を作成して追加できる。
絵文字の主な機能
- リアクション:
- メッセージに対して簡単に反応を示すことができる。
- 例: 👍(いいね)、🎉(祝う)、😄(笑顔)など。
- メッセージ内での使用:
- テキストメッセージに絵文字を挿入して感情やニュアンスを伝える。
絵文字の使い方
- リアクションを追加:
- メッセージにカーソルを合わせ、リアクションアイコンをクリックして絵文字を選択する。
- メッセージ内に挿入:
- メッセージ入力欄で「:(コロン)」を入力し、使用したい絵文字の名前を入力すると候補が表示される。
カスタム絵文字
- カスタム絵文字の作成:
- ワークスペースの管理者やメンバーが、自分たちで新しい絵文字をアップロードできる。
- 用途:
- チーム内のユーモアや文化、プロジェクトに関連した絵文字を使用できる。
利点
- 感情の共有: 絵文字で簡単に感情や反応を伝えることができる。
- コミュニケーションの効率化: 長い文章を書かなくても、絵文字一つで意図を伝えることができる。
- チーム文化の醸成: カスタム絵文字を使うことで、チームの個性や文化を表現できる。
reactions.addについて
今回は、「reactions.add」メソッドを利用します。
Slack公式の解説ページの内容を簡単にまとめます。
参考:Slack | reactions.add method
エンドポイント
- POST https://slack.com/api/reactions.add
スコープ
- Bot User OAuth Tokens:reactions:write
⇨今回はBot User OAuth Tokensを利用 - User OAuth Tokens :reactions:write
Content types
application/x-www-form-urlencodedapplication/json
Rate Limites
| Feature/API | Limit | Notes |
|---|---|---|
| Web API Tier 3 | 50+ per minute | Tier 3 methods allow a larger number of requests and are typically attached to methods with paginating collections of conversations or users. Sporadic bursts are welcome. |
Limit(制限)について
Web API Tier 3に該当します。
1分間に50以上のリクエスト制限があります。この制限を超えるリクエストを送信すると、SlackのAPIはエラーを返します。
Notes(注意事項)について
Tier 3 メソッドは、他のTierよりも多くのAPIリクエストを処理できる能力があります。
これにより、アプリケーションがより多くのデータを迅速に取得することができます。
リアクションをする
事前準備
詳細なアプリの作成手順は、「Slack | Web APIを使用してメッセージを投稿する」を参照して下さい。
① https://api.slack.com/apps/にアクセスし、アプリを選択します。
まずは、アプリにScopeを追加します。
以下のように「reactions:write」が追加されていればOK

② 投稿したいチャンネルにアプリを追加しておきます。

③ リアクションしたい投稿を確認します。
リアクションを追加するには、投稿のタイムスタンプが必要となるので、事前に取得します。
まず、投稿にカーソルを合わせ、右クリックします。

④ メニューが開きます。
「リンクをコピー」をクリックします。
リンクを取得することができました。
リンク:https://xxxxx.slack.com/archives/Cxxxxxxxxxx/p1234567890123456

⑤ リンクから投稿のタイムスタンプを取得します。
取得したリンクの最後のpから始まる部分に注目します。
「p」以降の数字がタイムスタンプとなります。
リンク:https://xxxxx.slack.com/archives/Cxxxxxxxxxx/p1234567890123456
取得した数字を使用する際は、「1234567890.123456」とします。
⑥ 使用する絵文字を見つけます。
カスタム絵文字も使用できます。
参考:https://qiita.com/yamadashy/items/ae673f2bae8f1525b6af
ピン留めする
JavaScriptで実行します。
① Node.jsでAxiosを使用する方法で紹介します。
「npm install axios」でパッケージをインストールし、実行コマンド「node xxxx.js」を実行します。
・「channelId」には、投稿したいチャンネルのチャンネルIDを入力してください。
・「messageTimestamp」には、事前準備-⑤で取得した、ピン留めしたい投稿のタイムスタンプを指定してください。
・「slackToken」には、Bot User OAuth Tokenを入力してください。
・「reaction」には、追加したいリアクションの名前を入れてください。
const axios = require("axios");
// Slack APIトークンを設定
const slackToken = "your-slack-token-here";
// リアクションを付与したいメッセージのチャンネルIDとメッセージのタイムスタンプを設定
const channelId = "CXXXXXXXXXX";
const messageTimestamp = "1234567890.123456";
const reaction = "thumbsup"; // 追加したいリアクションの名前
// APIエンドポイント
const apiEndpoint = "https://slack.com/api/reactions.add";
/**
* メッセージにリアクションを付与する関数
* @param {string} channelId - チャンネルID
* @param {string} timestamp - メッセージのタイムスタンプ
* @param {string} reaction - 追加するリアクションの名前
*/
async function addReaction(channelId, timestamp, reaction) {
try {
const params = {
channel: channelId,
name: reaction,
timestamp: timestamp,
};
// APIリクエストの送信
const response = await axios.post(apiEndpoint, params, {
headers: {
"Content-Type": "application/json",
Authorization: `Bearer ${slackToken}`,
},
});
// レスポンスの処理
if (response.data.ok) {
console.log("メッセージに正常にリアクションを付与しました");
} else {
throw new Error(`Slack API エラー: ${response.data.error}`);
}
} catch (error) {
console.error(`エラーが発生しました: ${error.message}`);
}
}
// メイン関数の実行
addReaction(channelId, messageTimestamp, reaction);
② リアクションを追加することができました。





コメント