Node.jsのコードからSlackにメッセージを書き込む方法

SlackにJavaScript(Node.js)にメッセージを書き込む方法を調べました。

Slackへのメッセージの書き込み結果

次のような単純なコードでSlackの指定したチャンネルにメッセージを書き込むことができました。

const axios = require('axios');

const sendSlackMessage = async (message) => {
  const SLACK_WEBHOOK_URL = 'https://hooks.slack.com/services/T02GQ6A584F/B02*****';
  const payload = {
    text: message,
  };
  try {
    await axios.post(SLACK_WEBHOOK_URL, payload);
  } catch (error) {
    console.log(error);
  }
};

sendSlackMessage('Hello World!');

手順

次の感じでやりました。

Slack Appの作成

  1. https://api.slack.com/apps より [Create New App]ボタンをクリックします。
  2. From scratchを選択します。
  3. App Name を指定します。例:Piko
  4. Pick a worksaplace to develo your app in: でSlackのワークスペースを選択します。例:Over 40 Web Club #3
  5. [Create App]ボタンをクリックします。

Slack Appの設定

  1. 作成したアプリのサイドバーのGeneral / Basic Information より、App Iconを設定します。
  2. App-Level Tokensのところの[Generate Token and Scopes]ボタンをクリックします。
  3. Generate an app-level token[Add Scope]ボタンをクリックします。
  4. connections:write を選択します。
  5. Generate an app-level token[Token Name]を設定します。例:Piko Token
  6. Generate an app-level token[Generate]ボタンをクリックします。
  7. Piko2 Tokenの[Done]ボタンをクリックします。
  8. サイドバーのSetting / Incoming Webhooks をクリックします。
  9. Activate Incoming WebhooksOnにします。
  10. [Add New Webhook to Workspace]ボタンをクリックします。
  11. 次のような感じでSlack AppSlackワークスペースにアクセスする権限リクエストが表示されるので、Slack Appの投稿先を選択の上[許可する]ボタンをクリックします。
    • Webhook URLが作成されるので[Copy]して、コードで指定します。
Slack AppのSlackワークスペースへのアクセス権限のリクエスト

SlackチャンネルへのAppの追加

  1. 該当するチャンネルの[チャンネル詳細を開く]を選択します。
  2. [インテグレーション]タブでアプリを追加します。
SlackチャンネルへのAppの追加