ノードとスラックボットを作成します.決定的なガイド
私はいくつかのスラックボットを構築しました.私はあなたにノードでスラックボットを作成することについての無用のチュートリアルを与えるつもりです.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
.あなたのスラックアプリを設定
コードを書く前に、スラックアプリケーションを作成する必要があります.
<NGROK_FORWARDING_URL>
以下のアプリケーションマニフェストのYAMLファイルのNgrok転送URLを使用します.In the Ngrok example above, we would use
https://92832de0.ngrok.io
. So, theredirect_urls
example below would become:https://92832de0.ngrok.io/slack/oauth_redirect
_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
あなたのスラックボットのアプリケーションマニフェスト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 ourindex.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 あなたが急速にカスタムスラックボットを作成するために.あなたの内部のスクリプトをあなたの選択技術に書き、ランタイムは残りを扱います.あなたが何を考えているか私に知らせてください.
Reference
この問題について(ノードとスラックボットを作成します.決定的なガイド), 我々は、より多くの情報をここで見つけました https://dev.to/tomquirk/create-a-slack-bot-with-node-js-gkpテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol