IT技術関連Slack

Slack:Web APIを利用してメッセージを編集する

Slack

はじめに

こんにちは、シルです。
今回はAPIメソッドを使用して、投稿済のメッセージを編集します。

メッセージの編集について

こちらの機能をどういった場合で使用するか簡単にまとめます。

  • すでに投稿している投稿の誤った情報を修正したり、最新の情報に更新する場合に使用。
  • メッセージの書式やリンクを修正する場合に便利。
  • 追加情報や注釈を追記する場合にも利用可能。

chat.updateについて

今回は、「chat.update」メソッドを利用します。
Slack公式の解説ページの内容を簡単にまとめます。

参考:Slack | chat.update method

エンドポイント

  • POST https://slack.com/api/chat.update

スコープ

  • Bot User OAuth Tokens:chat:write
  • User OAuth Tokens :chat:write, chat:write:bot, chat:write:user
    ⇨今回はUser OAuth Tokensを利用

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を追加します。
  以下のように「chat:write」が追加されていればOK

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

投稿を編集する

JavaScriptで実行します。

① Node.jsでAxiosを使用する方法で紹介します。
  「npm install axios」でパッケージをインストールし、実行コマンド「node xxxx.js」を実行します。
   ・「channelId」には、投稿したいチャンネルのチャンネルIDを入力してください。
   ・「messageTimestamp」には、事前準備-⑤で取得した、編集したい投稿のタイムスタンプを指定してください。
   ・「slackToken」には、Bot User OAuth Tokenを入力してください。
   ・「reaction」には、追加したいリアクションの名前を入れてください。

const axios = require("axios");

// Slack OAuth Token(
const token = "your-slack-token-here";

// 編集したいメッセージのチャンネルIDとタイムスタンプ
const channelId = "CXXXXXXXXXX"; // 例: 'C1234567890'
const timestamp = "1234567890.123456"; // 例: '1234567890.123456'

// 新しいメッセージテキスト
const newMessageText = "編集後のテキスト";

const updateMessage = async () => {
  try {
    const params = {
      channel: channelId,
      ts: timestamp,
      text: newMessageText,
    };
    const response = await axios.post(
      "https://slack.com/api/chat.update",
      params,
      {
        headers: {
          "Content-Type": "application/json",
          Authorization: `Bearer ${token}`,
        },
      }
    );

    if (response.data.ok) {
      console.log("メッセージの編集に成功しました:", response.data);
    } else {
      console.error("メッセージの編集に失敗しました:", response.data.error);
    }
  } catch (error) {
    console.error("APIリクエストに失敗しました:", error);
  }
};

updateMessage();

② 投稿を編集することができました。

コメント

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