ノードとスラックボットを作成します.決定的なガイド


これはあなたがノードでスラックボットを構築する方法について発見したミリの記事である場合.JS、申し訳ありません.
私はいくつかのスラックボットを構築しました.私はあなたにノードでスラックボットを作成することについての無用のチュートリアルを与えるつもりです.js
私たちはあなたのチームがスラッシュコマンドを使用してお客様に関する情報を得るために使用できる内部ツールを構築します.私はどのようにスラックのアプリケーションディレクトリのスラックのアプリを構築する方法を教えるつもりはない.

Quick plug: if you want to skip this entire article and focus on writing your internal tool, try .



ngrokを設定する
Ngrok あなたのローカルのスラックボット(あなたのマシン上)にあなたのスラックのワークスペースを接続する方法です.それは自由な計画を持っているが、基本的な計画は手頃な価格で、非常にスラックボットを構築するために便利です.

Security note: Ngrok exposes your machine to the internet, making it a potential attack vector. If you're building your Slack bot on your work machine, get Ngrok approved by your security team.


ngrokアカウントを作成し、セットアップステップに従ってください.終了したら、8080にWebサーバーを公開します.
ngrok http 8080
これはngrokコンソールUIを生成します.
ngrok by @inconshreveable

Tunnel Status                 online
Version                       2.0/2.0
Web Interface                 http://127.0.0.1:4040
Forwarding                    http://92832de0.ngrok.io -> localhost:8080
Forwarding                    https://92832de0.ngrok.io -> localhost:8080

Connnections                  ttl     opn     rt1     rt5     p50     p90
                              0       0       0.00    0.00    0.00    0.00

If you're on the free Ngrok plan, don't close this terminal window. The forwarding URL is randomly generated, and will change when you restart Ngrok.


注意してくださいForwarding URL.上の例では、https://92832de0.ngrok.io .

あなたのスラックアプリを設定
コードを書く前に、スラックアプリケーションを作成する必要があります.
  • 移動するhttps://api.slack.com/apps?new_app=1 .
  • アプリケーションマニフェストから選択します.
  • 置換<NGROK_FORWARDING_URL> 以下のアプリケーションマニフェストのYAMLファイルのNgrok転送URLを使用します.
  • In the Ngrok example above, we would use https://92832de0.ngrok.io. So, the redirect_urls example below would become: https://92832de0.ngrok.io/slack/oauth_redirect

  • 章の下のEnterアプリマニフェストでYAMLコンテンツをペーストします.
  • _metadata:
      major_version: 1
      minor_version: 1
    display_information:
      name: NodeBot
      description: Our internal Slack bot.
    features:
      bot_user:
        display_name: NodeBot
        always_online: true
      slash_commands:
        - command: /customer
          url: <NGROK_FORWARDING_URL>/slack/events
          description: Get data about a customer
          usage_hint: /customer <customer id>
          should_escape: false
    oauth_config:
      redirect_urls:
        - <NGROK_FORWARDING_URL>/slack/oauth_redirect
      scopes:
        bot:
          - commands
          - chat:write
          - chat:write.public
    settings:
      org_deploy_enabled: false
      socket_mode_enabled: false
      token_rotation_enabled: false
    
    あなたのスラックボットのアプリケーションマニフェスト
  • 「次へ」を選択し、「Create」を選択します.
  • スクロール*アプリの資格情報* *セクションと次の値の注意を取る
  • Client ID
  • Client secret
  • Signing secret
  • 最後に、あなたのスラックのワークスペースにアプリケーションをインストールします.
  • 左側のサイドバーでアプリケーションをインストールします.
  • 「ワークスペース」を選択し、「インストール」ページで「許可」を選択します.
  • 注意してくださいBot User OAuth Token .

  • あなたのスラックボットコードを設定します
    ローカル環境を正しく設定しましょう.このスラックボットの依存関係は以下の通りです.
  • node >=12.13.0
  • npm >=6.12.0
  • スラックボットと初期化のための新しいディレクトリを作成することから始めてくださいnpm :
    mkdir slackbot-node
    cd slackbot-node
    npm init
    
    プロンプトに従ってください.
    プロジェクトの依存関係をインストールしましょう.主な依存関係はBolt , JavaScriptを使用してスラックアプリを構築するための公式スラックフレームワーク.
    npm install --save @slack/bolt dotenv
    npm install --save-dev nodemon
    

    環境変数の追加
  • クリエイトア.env ファイル.
  • 次のコンテンツをあなたの.env ファイルは、あなたのスラックアプリケーションのセクションを設定してメモを取った値を追加します.
  • SLACK_CLIENT_ID=<YOUR SLACK CLIENT ID>
    SLACK_CLIENT_SECRET=<YOUR SLACK CLIENT SECRET>
    SLACK_SIGNING_SECRET=<YOUR SLACK SIGNING SECRET>
    SLACK_BOT_USER_TOKEN=<YOUR SLACKBOT USER TOKEN>
    SLACK_OAUTH_STATE_SECRET='my-state-secret'
    

    ボットサーバーの作成
  • クリエイトアindex.js ファイル.これはボットサーバのエントリポイントになります.
  • 次のコードをペーストします
  • require("dotenv").config();
    const { App } = require("@slack/bolt");
    
    const port = process.env.PORT || 8080;
    
    const app = new App({
      token: process.env.SLACK_BOT_USER_TOKEN,
      signingSecret: process.env.SLACK_SIGNING_SECRET,
    });
    
    // Slash command handler goes here.
    
    (async () => {
      await app.start(port);
    
      console.log(`🤖 Slack bot at your service (http://localhost:${port})`);
    })();
    
  • は、サーバーをチェックしますnodemon .
  • nodemon restarts the server whenever we edit our index.js file


    nodemon --exec node index.js
    
    次の出力を取得します.
    [nodemon] 2.0.13
    [nodemon] to restart at any time, enter `rs`
    [nodemon] watching path(s): *.*
    [nodemon] watching extensions: js,mjs,json
    [nodemon] starting `node index.js`
    🤖 Slack bot at your service (http://localhost:8080)
    

    スラッシュコマンドを追加する
    我々は我々のスラックアプリを作成するために使用されるアプリケーションマニフェストファイルはすでに私たちのスラッシュコマンドを追加しましたそれは/customer . スラックワークスペースタイプの誰かがいつでも/customer , スラックは、ボットサーバーにポストリクエストを送信します私たちはロボットサーバに正しく応答するようにプログラムする必要があります/customer スラッシュコマンド.
    次のコードを追加しますindex.js :
    // Handle the /customer slash command
    app.command('/customer', async ({ command, ack, respond }) => {
      // Acknowledge command request
      await ack();
    
      await respond('Slack bot at your service!');
    });
    
    今、スラッシュでスラッシュコマンドをテストすることができます.種類/customer スラックで.これにより次の結果が得られるはずです.


    顧客データ取得
    最後に、ジューシーな部分.顧客データを取得する方法は、お客様の技術のスタックと顧客データがどこに住んでいるかによって異なります.通常、データベースクエリをここで実行します.さあ、ダミーユーザデータを返しましょう.

    Format your response with the Slack Block Kit Builder.


    const customerData = {
      name: "Jane Doe",
      email: "[email protected]",
      activeUsers: 10,
      plan: "Enterprise",
      totalSpend: "$1002.26",
    };
    
    // Format the text however you like; Slack supports Markdown.
    const header = `*${customerData.name}* (${customerData.email})`;
    const body = `>${customerData.plan} plan\n>${customerData.activeUsers} users\n>${customerData.totalSpend} total spend`;
    
    const response = {
      response_type: "in_channel", // make the response public
      blocks: [
        {
          type: "section",
          text: {
            type: "mrkdwn",
            text: `${header}\n${body}`,
          },
        },
      ],
    };
    
    await respond(response);
    
    スラックで走りましょう.種類/customer スラックで

    建物の内部のスラックボットを維持し、面倒です.私は建てたRuntime あなたが急速にカスタムスラックボットを作成するために.あなたの内部のスクリプトをあなたの選択技術に書き、ランタイムは残りを扱います.あなたが何を考えているか私に知らせてください.