Slackは、チームメンバー間のより良いコミュニケーションを促進するための人気のあるツールです。サードパーティの統合やWebhookサポートなど、多くの役立つ機能とサービスが付属しています。 Slack Webhookは楽しくて便利で、セットアップが簡単です。このチュートリアルでは、node.jsとherokuを使用してSlackからのメッセージに「ボット」として応答する簡単なサーバーを設定します。 JavaScriptとGitに精通していることが役立ちます。以前にGitを使用したことがない場合は、初心者向けのGitをご覧ください。 Slackアカウントへのアクセスも想定されていますが、心配しないでください。無料です!キーテイクアウト
- Slack Bots Simplified:Slack Botのセットアップには、SlackのWebインターフェイスを介して統合を作成し、Webhooksを構成し、node.jsとExpressを使用してSlackメッセージと対話するサーバーを作成することが含まれます。
- node.jsおよびheroku deployment:サーバーのセットアップには、ボットを展開するためにHerokuにExpressフレームワークを利用して、ボットにオンラインでアクセスできるようにします。 ボットインタラクションロジック:ボットのロジックを開発して、grehtingユーザーやディースロールなどの処理コマンドなど、SLACKの特定のコマンドに応答します。
- ボット機能の拡大:スラッシュコマンドや着信Webhookなどのさらなる統合を調べて、ボット機能を強化し、スラックチャネル内でよりインタラクティブで動的な応答を可能にします。 継続的な開発と統合:さまざまなAPI(GitHub、Yelpなど)と統合してBOTのユーティリティを拡大することにより、継続的な開発を奨励し、チームのコラボレーションと生産性のための汎用性の高いツールになります。
- 新しいSlack統合の作成
- Slack Webインターフェイスから、チームの名前の横にある左上隅にメニューを開き、統合の構成を選択します。ここでは、利用可能なすべての統合を備えたダッシュボードを見ることができます。 DIYの統合とカスタマイズの下で底までスクロールし、発信Webhookを追加します。短い説明を読んでから、[webhooksの統合を追加]をクリックします。
発信されるWebhook構成と、リクエストと応答のペイロードがどのように見えるかの例が表示されます。最初のボットは、電話をかけたときにユーザーに挨拶するだけです。これを行うには、フックがチャンネルでトリガーワード「ハロー」を聞くことを許可します。 まだ投稿されるURLがわからないので、後でこのページに戻ります。
Webサーバーの作成node.jsでExpress 4を使用して、シンプルなWebサーバーを構築します。
アプリの新しいディレクトリを作成し、npm initを実行してpackage.jsonファイルを生成します。 Package.json依存関係には、「Express」:「^4.x.x」と「Body-Parser」: "^1.x.x"を含めます。 Body-Parserパッケージは、Slackから送信されたペイロードを解析するために使用されます。 app.jsという名前のサーバーファイルを作成しますここでは、必要なモジュールが必要になり、ボディパーサーミドルウェア、エラーハンドラー、テストルートを追加します。次に、サーバーにリスニングを開始するように指示します
<span>var express = require('express'); </span><span>var bodyParser = require('body-parser'); </span> <span>var app = express(); </span><span>var port = process.env.PORT || 3000; </span> <span>// body parser middleware </span>app<span>.use(bodyParser.urlencoded({ extended: true })); </span> <span>// test route </span>app<span>.get('/', function (req<span>, res</span>) { res.status(200).send('Hello world!') }); </span> <span>// error handler </span>app<span>.use(function (err<span>, req, res, next</span>) { </span> <span>console.error(err.stack); </span> res<span>.status(400).send(err.message); </span><span>}); </span> app<span>.listen(port, function () { </span> <span>console.log('Slack bot listening on port ' + port); </span><span>});</span>ノードアプリでサーバーを実行し、http:// localhost:3000にアクセスすることを確認してください。
ボットロジックの書き込み
hellobot.js
という名前のファイルを作成しますこのモジュールは、ボットロジックが住んでいる場所になります。 Status Code 200でSlackにメッセージを返す1つのエクスポートされた関数が含まれます。Slackがサーバーに送信するデータを解析することから始めます。その後、独自のフォーマットされた適切なペイロードで応答します。これを行うには、構成された統合の下で送信Webhookを再訪しましょう。発信データの例は、スラックがスラックが送信するすべての情報を示しています。
データの一部は認証やルーティングに役立つことがわかりますが、今のところはuser_nameプロパティに焦点を当てるだけです。この値を使用して、パーソナライズされた挨拶をユーザーに送り返すことができます。
app.jsに戻ると、上部にボットモジュールが必要です。
module<span>.exports = function (req<span>, res, next</span>) { </span> <span>var userName = req.body.user_name; </span> <span>var botPayload = { </span> <span>text : 'Hello, ' + userName + '!' </span> <span>}; </span> <span>// avoid infinite loop </span> <span>if (userName !== 'slackbot') { </span> <span>return res.status(200).json(botPayload); </span> <span>} else { </span> <span>return res.status(200).end(); </span> <span>} </span><span>}</span>
次に、 /helloへの投稿を聴くルートを追加します。
簡単なテストをしましょう。ノードアプリを使用してアプリを再度実行し、別の端末ウィンドウでCurlを使用して、アプリが予想どおりに応答することを確認します。 (注:ボットはここでは1つの値のみを検索するため、テストにスラックペイロード全体を含める必要はありません)。
<span>var hellobot = require('./hellobot');</span>
アプリが機能する場合は、次のような応答が表示されます。
app<span>.post('/hello', hellobot);</span>さあ、ボットをオンラインにする時が来ました。
Heroku
curl -X POST --data "user_name=foobar" http://localhost:3000/helloにアプリを展開します
Herokuは、ほとんど時間がかからずにWebサーバーをオンラインで取得するのに役立つ便利なサービスです。展開は、コードを自動的に展開して実行するGitサーバーにプッシュすることにより行われます。既にアカウントをお持ちの場合は、Herokuでアカウントを作成するか、ログインしてください。
ログインすると、Herokuダッシュボードが表示されます。右上のクリックして、新しいアプリを作成します。コンピューターでHerokuにログインするために提供された指示に従ってください。展開は簡単ですが、アプリを初めて展開するときは多くのことがあります。アプリをセットアップするときは、このガイドに従ってください。途中でいくつかの二重チェックを行いますが、この記事の範囲外にある多くの良い情報があります。
ボットを展開する前に、Herokuにアプリの実行方法を伝える必要があります。これは、procfileを作成することによって行われます。 Procfileには単一の行のみが必要です:
<span>var express = require('express'); </span><span>var bodyParser = require('body-parser'); </span> <span>var app = express(); </span><span>var port = process.env.PORT || 3000; </span> <span>// body parser middleware </span>app<span>.use(bodyParser.urlencoded({ extended: true })); </span> <span>// test route </span>app<span>.get('/', function (req<span>, res</span>) { res.status(200).send('Hello world!') }); </span> <span>// error handler </span>app<span>.use(function (err<span>, req, res, next</span>) { </span> <span>console.error(err.stack); </span> res<span>.status(400).send(err.message); </span><span>}); </span> app<span>.listen(port, function () { </span> <span>console.log('Slack bot listening on port ' + port); </span><span>});</span>これを行ったら、変更を犯してHerokuにプッシュすることができます。 Herokuはノードモジュールを自動的にインストールすると、展開の結果が表示されます。すべてがスムーズに進んだ場合、下部のアプリへのリンクが表示されます。そのURLをコピーしてから、発信webhookの構成ページにもう一度アクセスしてください。 /helloルートを追加してURL(s)入力フィールドにコピーしたURLを追加し、必要に応じてフックの名前とアイコンを変更します。
ボットをオンラインで取得するためのもう1つのステップがあります。ダイノを与える必要があります。ターミナルに、
これは、Herokuにアプリに1人のWebワーカーに与えるように指示します。注意深い;アプリは1か月に1つの無料Dynoのみを取得します!
module<span>.exports = function (req<span>, res, next</span>) { </span> <span>var userName = req.body.user_name; </span> <span>var botPayload = { </span> <span>text : 'Hello, ' + userName + '!' </span> <span>}; </span> <span>// avoid infinite loop </span> <span>if (userName !== 'slackbot') { </span> <span>return res.status(200).json(botPayload); </span> <span>} else { </span> <span>return res.status(200).end(); </span> <span>} </span><span>}</span>
ボットは今オンラインである必要があるので、スラックに戻ってテストしてください!
応答が得られなかった場合は、戻ってコードを確認してください。ターミナルコマンドHerokuログを使用して、リクエストの詳細と、追加したconsole.log()ステートメントを表示できます。
DICEBOT - SLACKコマンドと着信Webhooksを使用
最後のセクションでは、トリガーワードのチャットを聞いている発信Webhookを使用し、サーバーにメッセージを送信して応答を表示しました。このセクションでは、カスタム統合を作成するために他の2つのツールを使用します:スラッシュコマンドと着信Webhooks。 [統合の構成]ページにアクセスし、DIY統合とカスタマイズの下の他のオプションをご覧ください。スラッシュコマンド統合を追加することから始めましょう。短い説明を読み、コマンドを「/roll」に設定し、統合を追加します。次のページには、構成が表示されます。発信データは、以前に構成した発信Webhookに似ていることがわかります。このセクションの最後のセクションで作成したアプリを使用して、同じURLを使用できますが、今回はルート /ロールに投稿します。
スラッシュコマンド統合はユーザーに応答できるが、プライベートでのみ応答できることに注意してください。サイコロを見ることができる場合、サイコロロールはどのような用途ですか? Slackは、Chatにメッセージを送信するために、Slashコマンドを使用して、着信Webhookをタンデムで使用することを提案します。 [統合の構成]ページに戻り、着信Webhookを追加します。説明を読み、チャンネルを選択し、フックを追加します。どのチャンネルを選んだか心配しないでください。ボットの応答でチャネルを指定できます。アプリでチャネルを選択できるため、作成した他のボットにこの統合を使用することもできます。着信Webhookは構成の方法ではあまりありませんが、ボットの応答ペイロードを構築するための多くの重要な情報があります。最も重要な部分は、WebHook URLです。 Slackにメッセージを送信するために、アプリからこれに投稿します。 サーバーからのスラッシュコマンドに応答するルート /ロールでスラッシュコマンドを指しているので、そのルートをヘロボットと一緒にサーバーに追加できます。着信フックにシークレットURLを使用するので、コードを公開したい場合に備えて、隠しておくことをお勧めします。これを行う良い方法は、Herokuの構成varを使用することです。
また、パッケージにリクエストを追加して、着信フックで使用しましょう:
dicebot.jsを追加します。 DiceBotは1つの機能をエクスポートしますが、2つの追加機能が必要になります。1つは着信Webhookに投稿し、1つはサイコロを転がすためです。
<span>var express = require('express'); </span><span>var bodyParser = require('body-parser'); </span> <span>var app = express(); </span><span>var port = process.env.PORT || 3000; </span> <span>// body parser middleware </span>app<span>.use(bodyParser.urlencoded({ extended: true })); </span> <span>// test route </span>app<span>.get('/', function (req<span>, res</span>) { res.status(200).send('Hello world!') }); </span> <span>// error handler </span>app<span>.use(function (err<span>, req, res, next</span>) { </span> <span>console.error(err.stack); </span> res<span>.status(400).send(err.message); </span><span>}); </span> app<span>.listen(port, function () { </span> <span>console.log('Slack bot listening on port ' + port); </span><span>});</span>多くの卓上ゲーマーが知っているように、6面のサイコロよりも多くの種類のサイコロがあります。他のサイコロには、4つの側面、8つの側面、10面、20面などがあります!これらのサイコロを転がすときに特別な表記法が使用されます: d 。したがって、2つの6面のサイコロを転がすことは、「2D6」として記録されます。この表記法を使用してユーザーが複数のサイコロをロールすることはできますが、ユーザーからの正しい入力を確認する必要があります。
いくつかの変数を初期化し、入力を解析することから始めましょう。ユーザーが入力を省略したい場合に備えて、いくつかのデフォルト値を設定します。
<span>var express = require('express'); </span><span>var bodyParser = require('body-parser'); </span> <span>var app = express(); </span><span>var port = process.env.PORT || 3000; </span> <span>// body parser middleware </span>app<span>.use(bodyParser.urlencoded({ extended: true })); </span> <span>// test route </span>app<span>.get('/', function (req<span>, res</span>) { res.status(200).send('Hello world!') }); </span> <span>// error handler </span>app<span>.use(function (err<span>, req, res, next</span>) { </span> <span>console.error(err.stack); </span> res<span>.status(400).send(err.message); </span><span>}); </span> app<span>.listen(port, function () { </span> <span>console.log('Slack bot listening on port ' + port); </span><span>});</span>上記の正規表現は、サイコロのロールを解析するためにかなり信頼でき、ユーザーが夢中にならないように値を2桁の数値に制限します。ユーザーが構文を台無しにした場合、ヒントを返送します。
ユーザーの入力でサイコロを転がすのは簡単です。ランダムロールの仕組みの説明については、このスレッドを参照してください。真にランダムなロールの場合、random.org APIに連絡できます。ロール関数を書きましょう。
次に、メイン機能では、いくつかのロールを作成し、応答するメッセージを作成します。ローラーの名前を含めて、他のユーザーが /rollコマンドを使用した人を確認できるようにしましょう。
module<span>.exports = function (req<span>, res, next</span>) { </span> <span>var userName = req.body.user_name; </span> <span>var botPayload = { </span> <span>text : 'Hello, ' + userName + '!' </span> <span>}; </span> <span>// avoid infinite loop </span> <span>if (userName !== 'slackbot') { </span> <span>return res.status(200).json(botPayload); </span> <span>} else { </span> <span>return res.status(200).end(); </span> <span>} </span><span>}</span>
botpayload.textプロパティにメッセージを追加して、Totalの周りにスラックフォーマットを付けて太字にしました。応答ペイロードを使用して、名前、アイコン、およびチャネルを構成することもできます。ユーザーがロールコマンドを発行するチャネルに基づいてチャネルを設定します。 Slackは、ペイロードでチャネルの名前を使用することを提案しますが、それは「#」でそれをプレイする必要があることを意味します。代わりに、チャンネルIDを使用できます。これにより、パブリックチャネルやプライベートグループに投稿できるようになります。アイコンには、便利なダイ絵文字が存在しますが、icon_urlを使用してより良い画像を提供できます。
<span>var hellobot = require('./hellobot');</span>ペイロードはよさそうだ。送信関数を書きましょう。 HerokuのConfig Varsにパストークンのみを保存することを選択しました。 jsonの文字列として体を送るようにしてください。
app<span>.post('/hello', hellobot);</span>メイン関数では、送信リクエストを開始します。それが機能する場合は、空の200でスラッシュコマンドに応答できます。そうでない場合は、send()コールバックの値を使用してエラーを作成できます。これにより、app.jsのエラーハンドラーがトリガーされ、400を返送します。これにより、ユーザーにエラーが通知されます。
サーバーを実行して、もう一度カールしましょう。今回は、channel_idを含める必要があります。 Slack APIテスターを使用して、正しいChannel_idを見つけることができます。着信Webhookはすでにセットアップされているため、サーバーがそれを呼び出すのを聞くはずです。アプリはまだHerokuにはないので、環境に着信するWebhookパスを含める必要があります。
curl -X POST --data "user_name=foobar" http://localhost:3000/hello
<span>{"text":"Hello, foobar!"}</span>
よさそうだ!展開しましょう。
web: node app
heroku ps:scale web=1heroku
に再配置します
HerokuのConfig varsを使用してWebhookのトークンを保存するため、アプリの設定メニューに設定することを忘れないでください。
その後、Gitを使用して新しいファイルを追加し、変更をコミットし、Herokuリモートにプッシュします。 Herokuはノードモジュールをインストールし、サーバーを起動します。テストする前に、ログをリアルタイムで視聴し始めましょう。 heroku logs -t
フックがすべてセットアップされていると、ロールコマンドが準備ができているはずです。いくつかのロールを試してみてください!何かが機能しなかった場合は、Herokuログを使用してデバッグできます。完成したアプリ全体を見るには、このgithubリポジトリをご覧ください。
継続的な開発これらの2つのボットは、独自のチャットボットと統合の作成を開始するために必要なすべてのツールを示しています。多くのサービスをボットに統合することも、説得力のある会話パートナーを作成することもできます。これらの目標の両方を達成するために、APIとノードモジュールが存在します。
ボットの他のいくつかのアイデア:
github APIを使用して開いているプルリクエストを表示するボット
- Yelp APIを使用してチームが昼食を決定できるようにするボット Googleを検索するボット
- 流行語と専門用語でのみあなたに話しかけるボット
- 良いアイデアを思いついたら、コードを共有してください!ボットは作るのが楽しいです、そして、彼らはかつてないほど簡単に作成しました。 スラックボットに関するよくある質問(FAQ)
スラックボットを作成するにはどうすればよいですか?
スラックボットを作成するには、いくつかのステップが含まれます。まず、Slack API Webサイトにアクセスして、新しいボットユーザーを作成する必要があります。ボットに名前を付けて、動作するワークスペースを選択する必要があります。ボットを作成すると、ボットユーザーOAuth Accessトークンが届きます。これを使用して、コードでボットを認証するために使用します。次に、JavaScriptやPythonなどのプログラミング言語を使用してボットのコードの書き込みを開始できます。 Slack APIを使用してメッセージを送信および受信します。あなたがそれをしたいことについて。たとえば、特定のコマンドまたはキーワードに応答するようにボットをプログラムしたり、スケジュールされたメッセージを送信したり、他のAPIと統合して外部ソースからデータを引き込むこともできます。また、ボットのメッセージにボタンやドロップダウンメニューなどのインタラクティブな要素を追加することもできます。ワークスペースとそれとの対話。メッセージをボットに送信して、正しく応答するかどうかを確認できます。また、API.Testやauth.testメソッドなど、テストにSlack APIのメソッドを使用することもできます。複数のワークスペースにあるスラックボット。操作したい場所に各ワークスペースにボットをインストールする必要があります。各ワークスペースには、独自のボットユーザーOAuthアクセストークンがあります。これは、そのワークスペースでボットを認証するために使用します。スラックボットのパフォーマンスを改善するにはどうすればよいですか?
スラックボットのパフォーマンスを改善する方法はいくつかあります。 1つの方法は、不必要なAPI呼び出しまたは処理を減らすことにより、コードを最適化することです。キャッシュを使用して、ボットが頻繁に使用するデータを保存して、繰り返しAPI呼び出しの必要性を減らすこともできます。さらに、非同期プログラミング技術を使用して、ボットが複数のタスクを同時に実行できるようにすることができます。メッセージまたはコマンドに応答するようにプログラミングしてユーザーと対話します。メッセージイベントを使用して、着信メッセージを聞くことができます。また、chat.postmessageメソッドを送信してメッセージを送信できます。ボットのメッセージにボタンなどのインタラクティブな要素を追加することもできます。ユーザーはクリックしてアクションをトリガーできます。他のサービスとのボット。 Slackは、外部サービスと統合できるさまざまなAPIと機能を提供します。たとえば、着信Webhooksを使用して他のサービスからデータを受信したり、発信webhooksを受け取って他のサービスにデータを送信できます。プログラミング言語でエラー処理手法を使用して、スラックボットのエラー。たとえば、JavaScriptでは、Try ... Catchステートメントを使用してエラーをキャッチおよび処理することができます。エラーイベントを使用して、ボットの実行中に発生するエラーを聞くこともできます。あなたのスラックボット。作成時にボットのカスタムアイコンと名前を設定できます。また、添付ファイルまたはブロックを使用してボットのメッセージの外観をカスタマイズすることもできます。これにより、色、画像、その他のフォーマットを追加できます。 🎜>ボット開発のベストプラクティスに従うことにより、スラックボットのセキュリティを確保できます。これには、ボットユーザーOauth Access Token Secretを維持し、誰とも共有しないことが含まれます。また、ボットが受け取ったデータを検証して、信頼できるソースからのものであることを確認する必要があります。さらに、セキュリティの脆弱性を修正するには、ボットのコードを定期的に更新する必要があります。
以上がスラックボットを始めますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

JavaScriptは、Webページのインタラクティブ性とダイナミズムを向上させるため、現代のWebサイトの中心にあります。 1)ページを更新せずにコンテンツを変更できます。2)Domapiを介してWebページを操作する、3)アニメーションやドラッグアンドドロップなどの複雑なインタラクティブ効果、4)ユーザーエクスペリエンスを改善するためのパフォーマンスとベストプラクティスを最適化します。

CおよびJavaScriptは、WebAssemblyを介して相互運用性を実現します。 1)CコードはWebAssemblyモジュールにコンパイルされ、JavaScript環境に導入され、コンピューティングパワーが強化されます。 2)ゲーム開発では、Cは物理エンジンとグラフィックスレンダリングを処理し、JavaScriptはゲームロジックとユーザーインターフェイスを担当します。

JavaScriptは、Webサイト、モバイルアプリケーション、デスクトップアプリケーション、サーバー側のプログラミングで広く使用されています。 1)Webサイト開発では、JavaScriptはHTMLおよびCSSと一緒にDOMを運用して、JQueryやReactなどのフレームワークをサポートします。 2)ReactNativeおよびIonicを通じて、JavaScriptはクロスプラットフォームモバイルアプリケーションを開発するために使用されます。 3)電子フレームワークにより、JavaScriptはデスクトップアプリケーションを構築できます。 4)node.jsを使用すると、JavaScriptがサーバー側で実行され、高い並行リクエストをサポートします。

Pythonはデータサイエンスと自動化により適していますが、JavaScriptはフロントエンドとフルスタックの開発により適しています。 1. Pythonは、データ処理とモデリングのためにNumpyやPandasなどのライブラリを使用して、データサイエンスと機械学習でうまく機能します。 2。Pythonは、自動化とスクリプトにおいて簡潔で効率的です。 3. JavaScriptはフロントエンド開発に不可欠であり、動的なWebページと単一ページアプリケーションの構築に使用されます。 4. JavaScriptは、node.jsを通じてバックエンド開発において役割を果たし、フルスタック開発をサポートします。

CとCは、主に通訳者とJITコンパイラを実装するために使用されるJavaScriptエンジンで重要な役割を果たします。 1)cは、JavaScriptソースコードを解析し、抽象的な構文ツリーを生成するために使用されます。 2)Cは、Bytecodeの生成と実行を担当します。 3)Cは、JITコンパイラを実装し、実行時にホットスポットコードを最適化およびコンパイルし、JavaScriptの実行効率を大幅に改善します。

現実世界でのJavaScriptのアプリケーションには、フロントエンドとバックエンドの開発が含まれます。 1)DOM操作とイベント処理を含むTODOリストアプリケーションを構築して、フロントエンドアプリケーションを表示します。 2)node.jsを介してRestfulapiを構築し、バックエンドアプリケーションをデモンストレーションします。

Web開発におけるJavaScriptの主な用途には、クライアントの相互作用、フォーム検証、非同期通信が含まれます。 1)DOM操作による動的なコンテンツの更新とユーザーインタラクション。 2)ユーザーエクスペリエンスを改善するためにデータを提出する前に、クライアントの検証が実行されます。 3)サーバーとのリフレッシュレス通信は、AJAXテクノロジーを通じて達成されます。

JavaScriptエンジンが内部的にどのように機能するかを理解することは、開発者にとってより効率的なコードの作成とパフォーマンスのボトルネックと最適化戦略の理解に役立つためです。 1)エンジンのワークフローには、3つの段階が含まれます。解析、コンパイル、実行。 2)実行プロセス中、エンジンはインラインキャッシュや非表示クラスなどの動的最適化を実行します。 3)ベストプラクティスには、グローバル変数の避け、ループの最適化、constとletsの使用、閉鎖の過度の使用の回避が含まれます。


ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

ドリームウィーバー CS6
ビジュアル Web 開発ツール

WebStorm Mac版
便利なJavaScript開発ツール

VSCode Windows 64 ビットのダウンロード
Microsoft によって発売された無料で強力な IDE エディター

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

MantisBT
Mantis は、製品の欠陥追跡を支援するために設計された、導入が簡単な Web ベースの欠陥追跡ツールです。 PHP、MySQL、Web サーバーが必要です。デモおよびホスティング サービスをチェックしてください。
