スラックボットを始めます
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>
ボットロジックの書き込み
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>
ボットをオンラインで取得するためのもう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>
いくつかの変数を初期化し、入力を解析することから始めましょう。ユーザーが入力を省略したい場合に備えて、いくつかのデフォルト値を設定します。
<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>
ユーザーの入力でサイコロを転がすのは簡単です。ランダムロールの仕組みの説明については、このスレッドを参照してください。真にランダムなロールの場合、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>
app<span>.post('/hello', hellobot);</span>
サーバーを実行して、もう一度カールしましょう。今回は、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=1
に再配置します
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 サイトの他の関連記事を参照してください。

ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

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

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

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

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

ホットトピック











フロントエンドのサーマルペーパーチケット印刷のためのよくある質問とソリューションフロントエンド開発におけるチケット印刷は、一般的な要件です。しかし、多くの開発者が実装しています...

JavaScriptは現代のWeb開発の基礎であり、その主な機能には、イベント駆動型のプログラミング、動的コンテンツ生成、非同期プログラミングが含まれます。 1)イベント駆動型プログラミングにより、Webページはユーザー操作に応じて動的に変更できます。 2)動的コンテンツ生成により、条件に応じてページコンテンツを調整できます。 3)非同期プログラミングにより、ユーザーインターフェイスがブロックされないようにします。 JavaScriptは、Webインタラクション、シングルページアプリケーション、サーバー側の開発で広く使用されており、ユーザーエクスペリエンスとクロスプラットフォーム開発の柔軟性を大幅に改善しています。

スキルや業界のニーズに応じて、PythonおよびJavaScript開発者には絶対的な給与はありません。 1. Pythonは、データサイエンスと機械学習でさらに支払われる場合があります。 2。JavaScriptは、フロントエンドとフルスタックの開発に大きな需要があり、その給与もかなりです。 3。影響要因には、経験、地理的位置、会社の規模、特定のスキルが含まれます。

この記事の視差スクロールと要素のアニメーション効果の実現に関する議論では、Shiseidoの公式ウェブサイト(https://www.shisido.co.co.jp/sb/wonderland/)と同様の達成方法について説明します。

JavaScriptの最新トレンドには、TypeScriptの台頭、最新のフレームワークとライブラリの人気、WebAssemblyの適用が含まれます。将来の見通しは、より強力なタイプシステム、サーバー側のJavaScriptの開発、人工知能と機械学習の拡大、およびIoTおよびEDGEコンピューティングの可能性をカバーしています。

JavaScriptを学ぶことは難しくありませんが、挑戦的です。 1)変数、データ型、関数などの基本概念を理解します。2)非同期プログラミングをマスターし、イベントループを通じて実装します。 3)DOM操作を使用し、非同期リクエストを処理することを約束します。 4)一般的な間違いを避け、デバッグテクニックを使用します。 5)パフォーマンスを最適化し、ベストプラクティスに従ってください。

同じIDを持つ配列要素をJavaScriptの1つのオブジェクトにマージする方法は?データを処理するとき、私たちはしばしば同じIDを持つ必要性に遭遇します...

フロントエンドのVSCodeと同様に、パネルドラッグアンドドロップ調整機能の実装を調べます。フロントエンド開発では、VSCODEと同様のVSCODEを実装する方法...
