IT技術関連Slack

Slack:WebAPIを利用してリアクションをする

Slack

はじめに

こんにちは、シルです。
今回は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-urlencoded 
  • application/json

Rate Limites

Feature/APILimitNotes
Web API Tier 350+ per minuteTier 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.
参考:Slack | Rate Limites

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);

② リアクションを追加することができました。

コメント

タイトルとURLをコピーしました