序章

Slack は、職場の生産性を高めるために設計されたコミュニケーションプラットフォームです。 これには、ダイレクトメッセージング、パブリックチャネルとプライベートチャネル、音声およびビデオコール、ボット統合などの機能が含まれます。 Slackbotは、メッセージの送信からタスクのトリガー、特定のイベントのアラートまで、Slackでさまざまな機能を実行できる自動化されたプログラムです。

このチュートリアルでは、Pythonプログラミング言語でSlackbotを構築します。 Pythonは、シンプルさと読みやすさを誇る人気のある言語です。 Slackは、Slackと統合してメッセージの送信やメッセージへの絵文字の追加などの一般的なタスクを実行するための豊富な Python SlackAPIを提供します。 Slackには、Slackのイベントと統合するための PythonSlackイベントAPIも用意されており、メッセージやメンションなどのイベントに対してアクションを実行できます。

PythonとそのSlackAPIのパワーを実証する楽しい概念実証として、 CoinBot—チャンネルを監視し、トリガーされるとコインを投げるSlackbot。 その後、変更することができます CoinBot わずかにより実用的なアプリケーションをいくつでも満たすことができます。

このチュートリアルはPython3を使用しており、Python2とは互換性がないことに注意してください。

前提条件

このガイドに従うには、次のものが必要です。

  • アプリケーションをインストールできるSlackワークスペース。 ワークスペースを作成した場合、この機能があります。 まだお持ちでない場合は、SlackのWebサイトで作成できます。

  • (オプション)開発用のパブリックIPアドレスを持つサーバーまたはコンピューター。 root以外のユーザーであるUbuntu20.04を新規インストールすることをお勧めします。 sudo 特権、およびSSHが有効になっています。 このガイドに従ってサーバーを初期化し、これらの手順を実行できます

このチュートリアルは、パブリックIPアドレスを持つサーバーでテストすることをお勧めします。 Slackは、メッセージなどのイベントをボットに送信できる必要があります。 ローカルマシンでテストしている場合は、ファイアウォールを介してローカルシステムに転送トラフィックをポートする必要があります。 クラウドサーバーで開発する方法をお探しの場合は、リモートSSHプラグインを介したリモート開発にVisualStudioCodeを使用する方法に関するこのチュートリアルを確認してください。

ステップ1—SlackUIでSlackbotを作成する

まず、SlackAPIコントロールパネルでSlackアプリを作成します。 Webブラウザを介してSlackのワークスペースにログインし、APIコントロールパネルに移動します。 次に、アプリの作成ボタンをクリックします。

次に、アプリの名前を入力し、開発用Slackワークスペースを選択するように求められます。 このチュートリアルでは、アプリに名前を付けます CoinBot 管理者アクセス権のあるワークスペースを選択します。 これが完了したら、アプリの作成ボタンをクリックします。

アプリが作成されると、次のデフォルトのアプリダッシュボードが表示されます。 このダッシュボードでは、権限の設定、イベントのサブスクライブ、ワークスペースへのアプリのインストールなどによってアプリを管理します。

アプリがチャネルにメッセージを投稿できるようにするには、メッセージを送信するためのアクセス許可をアプリに付与する必要があります。 これを行うには、コントロールパネルの権限ボタンをクリックします。

あなたが到着したとき OAuthと権限ページを下にスクロールして、 スコープページのセクション。 次に、スコープ内のボットトークンスコープサブセクションを見つけて、OAuthスコープの追加ボタンをクリックします。

そのボタンをクリックして、次のように入力します chat:write. その権限を選択して、ボットに追加します。 これにより、アプリはアクセス可能なチャネルにメッセージを投稿できるようになります。 利用可能な権限の詳細については、Slackのドキュメントを参照してください。

適切な権限を追加したので、Slackワークスペースにアプリをインストールします。 上にスクロールして戻る OAuthと権限ページをクリックし、 ワークスペースにアプリをインストールする上部のボタン。

このボタンをクリックして、アプリがチャネルで実行できるアクションを確認します。 満足したら、許可ボタンをクリックしてインストールを完了します。

ボットがインストールされると、ワークスペースでアクションを実行しようとするときに使用するアプリのボットユーザーOAuthアクセストークンが表示されます。 先に進み、このトークンをコピーします。 後で必要になります。

最後に、新しくインストールしたボットをワークスペース内のチャネルに追加します。 まだチャンネルを作成していない場合は、Slackワークスペースにデフォルトで作成されている#generalチャンネルを使用できます。 SlackクライアントのナビゲーションバーのAppsセクションでアプリを見つけて、クリックします。 それが終わったら、右上の詳細メニューを開きます。 Slackクライアントがフルスクリーンでない場合は、次のようになります。 i 輪になって。

チャンネルへのアプリの追加を完了するには、詳細ページの3つのドットで表されるその他ボタンをクリックし、このアプリをチャンネルに追加…を選択します。 表示されるモーダルにチャンネルを入力し、追加をクリックします。

これでアプリが正常に作成され、Slackワークスペース内のチャネルに追加されました。 アプリのコードを記述した後、そのチャネルにメッセージを投稿できるようになります。 次のセクションでは、強力なPythonコードの記述を開始します CoinBot.

ステップ2—Python開発者環境をセットアップする

まず、Slackbotを開発できるようにPython環境をセットアップしましょう。

ターミナルを開いてインストールします python3 および関連するツールをシステムに追加します。

  1. sudo apt install python3 python3-venv

次に、PythonパッケージをPythonのシステムインストールから分離するための仮想環境を作成します。 これを行うには、最初に、仮想環境を作成するディレクトリを作成します。 で新しいディレクトリを作成します ~/.venvs:

  1. mkdir ~/.venvs

次に、Python仮想環境を作成します。

  1. python3 -m venv ~/.venvs/slackbot

次に、仮想環境をアクティブ化して、Pythonインストールを使用してパッケージをインストールできるようにします。

  1. source ~/.venvs/slackbot/bin/activate

シェルプロンプトに、括弧内に仮想環境が表示されます。 次のようになります。

今すぐ使用 pip 必要なPythonパッケージを仮想環境にインストールするには:

  1. pip install slackclient slackeventsapi Flask

slackclientslackeventsapi PythonとSlackのAPIとの相互作用を促進します。 Flask は、アプリのデプロイに使用する人気のあるマイクロWebフレームワークです。

開発者環境がセットアップされたので、PythonSlackbotの作成を開始できます。

ステップ3—PythonでSlackbotメッセージクラスを作成する

Slackのメッセージは、特別にフォーマットされたJSONペイロードを介して送信されます。 これは、Slackbotが作成してメッセージとして送信するJSONの例です。

{
   "channel":"channel",
   "blocks":[
      {
         "type":"section",
         "text":{
            "type":"mrkdwn",
            "text":"Sure! Flipping a coin....\n\n"
         }
      },
      {
         "type":"section",
         "text":{
            "type":"mrkdwn",
            "text":"*flips coin* The result is Tails."
         }
      }
   ]
}

このJSONを手動で作成して送信することもできますが、代わりに、このペイロードを作成するだけでなく、コイントスをシミュレートするPythonクラスを作成しましょう。

最初に使用する touch 名前の付いたファイルを作成するコマンド coinbot.py:

  1. touch coinbot.py

次に、このファイルをで開きます nano またはお気に入りのテキストエディタ:

  1. nano coinbot.py

次に、次のコード行を追加して、アプリに関連するライブラリをインポートします。 このクラスに必要な唯一のライブラリは random Python標準ライブラリのライブラリ。 このライブラリを使用すると、コイントスをシミュレートできます。

次の行をに追加します coinbot.py 必要なすべてのライブラリをインポートするには:

coinbot.py
# import the random library to help us generate the random numbers
import random

次に、 CoinBot クラスとこのクラスのインスタンスを使用して、メッセージペイロードを作成します。 次の行をに追加します coinbot.py を作成するには CoinBot クラス:

coinbot.py
...
class CoinBot:

次に、1つずつインデントして、クラスに必要な定数、コンストラクター、およびメソッドを作成します。 まず、メッセージペイロードのベースを保持する定数を作成しましょう。 このセクションは、この定数がセクションタイプであり、テキストがマークダウンを介してフォーマットされることを指定します。 また、表示するテキストも指定します。 さまざまなペイロードオプションの詳細については、公式のSlackメッセージペイロードドキュメントをご覧ください。

次の行をに追加します coinbot.py ペイロードのベーステンプレートを作成するには:

coinbot.py
...
    # Create a constant that contains the default text for the message
    COIN_BLOCK = {
        "type": "section",
        "text": {
            "type": "mrkdwn",
            "text": (
                "Sure! Flipping a coin....\n\n"
            ),
        },
    }

次に、クラスのコンストラクターを作成して、リクエストごとにボットの個別のインスタンスを作成できるようにします。 ここではメモリのオーバーヘッドについて心配する必要はありません。 Pythonガベージコレクターは、これらのインスタンスが不要になるとクリーンアップします。 このコードは、コンストラクターに渡されたパラメーターに基づいて受信者チャネルを設定します。

次の行をに追加します coinbot.py コンストラクターを作成するには:

coinbot.py
...
    # The constructor for the class. It takes the channel name as the a
    # parameter and sets it as an instance variable.
    def __init__(self, channel):
        self.channel = channel

次に、コインを弾くようにシミュレートするコードを記述します。 それぞれ頭または尾を表す1または0をランダムに生成します。

次の行をに追加します coinbot.py コイントスをシミュレートし、細工されたペイロードを返すには:

coinbot.py
...
    # Generate a random number to simulate flipping a coin. Then return the 
    # crafted slack payload with the coin flip message.
    def _flip_coin(self):
        rand_int =  random.randint(0,1)
        if rand_int == 0:
            results = "Heads"
        else:
            results = "Tails"

        text = f"The result is {results}"

        return {"type": "section", "text": {"type": "mrkdwn", "text": text}},

最後に、コンストラクターからのデータを含むメッセージペイロード全体を作成して返すメソッドを作成します。 _flip_coin 方法。

次の行をに追加します coinbot.py 完成したペイロードを生成するメソッドを作成するには:

coinbot.py
...
    # Craft and return the entire message payload as a dictionary.
    def get_message_payload(self):
        return {
            "channel": self.channel,
            "blocks": [
                self.COIN_BLOCK,
                *self._flip_coin(),
            ],
        }

これで終了です CoinBot クラスとそれはテストの準備ができています。 続行する前に、完成したファイルを確認してください。 coinbot.py、次が含まれています。

coinbot.py
# import the random library to help us generate the random numbers
import random

# Create the CoinBot Class
class CoinBot:

    # Create a constant that contains the default text for the message
    COIN_BLOCK = {
        "type": "section",
        "text": {
            "type": "mrkdwn",
            "text": (
                "Sure! Flipping a coin....\n\n"
            ),
        },
    }

    # The constructor for the class. It takes the channel name as the a 
    # parameter and then sets it as an instance variable
    def __init__(self, channel):
        self.channel = channel

    # Generate a random number to simulate flipping a coin. Then return the 
    # crafted slack payload with the coin flip message.
    def _flip_coin(self):
        rand_int =  random.randint(0,1)
        if rand_int == 0:
            results = "Heads"
        else:
            results = "Tails"

        text = f"The result is {results}"

        return {"type": "section", "text": {"type": "mrkdwn", "text": text}},

    # Craft and return the entire message payload as a dictionary.
    def get_message_payload(self):
        return {
            "channel": self.channel,
            "blocks": [
                self.COIN_BLOCK,
                *self._flip_coin(),
            ],
        }

ファイルを保存して閉じます。

PythonクラスでSlackbotの作業を行う準備ができたので、このクラスが有用なメッセージペイロードを生成し、それをワークスペースに送信できることを確認しましょう。

ステップ4—メッセージをテストする

次に、このクラスが適切なペイロードを生成することをテストしましょう。 名前の付いたファイルを作成します coinbot_test.py:

  1. nano coinbot_test.py

次に、次のコードを追加します。 coinbotクラスcoin_bot=coinbot( “#YOUR_CHANNEL_HERE”)のインスタンス化でチャネル名を必ず変更してください。 このコードは、PythonでSlackクライアントを作成します。このクライアントは、アプリを既にインストールしていることを指定したチャネルにメッセージを送信します。

coinbot_test.py
from slack import WebClient
from coinbot import CoinBot
import os

# Create a slack client
slack_web_client = WebClient(token=os.environ.get("SLACK_TOKEN"))

# Get a new CoinBot
coin_bot = CoinBot("#YOUR_CHANNEL_HERE")

# Get the onboarding message payload
message = coin_bot.get_message_payload()

# Post the onboarding message in Slack
slack_web_client.chat_postMessage(**message)

ファイルを保存して閉じます。

このファイルを実行する前に、手順1で保存したSlackトークンを環境変数としてエクスポートする必要があります。

  1. export SLACK_TOKEN="your_bot_user_token"

次に、このファイルをテストし、端末で次のスクリプトを実行して、ペイロードが生成および送信されることを確認します。 仮想環境がアクティブ化されていることを確認してください。 これを確認するには、 (slackbot) bashプロンプトの前にあるテキスト。 このコマンドを実行すると、コイントスの結果を含むメッセージがSlackbotから届きます。

  1. python coinbot_test.py

アプリをインストールしたチャネルをチェックし、ボットが実際にコイントスメッセージを送信したことを確認します。 結果は頭または尾になります。

Slackbotがコイントス、メッセージの作成、メッセージの配信を行えることを確認したので、 Flask を作成してこのアプリを永続的に実行し、コイントスをシミュレートして結果を共有できるようにします。チャネルで送信されたメッセージに特定のテキストが表示されます。

ステップ5—Slackbotを実行するためのFlaskアプリケーションを作成する

Slackワークスペースにメッセージを送信できるアプリケーションが機能しているので、ボットがチャネルで送信されたメッセージをリッスンし、テキストが特定の基準を満たしている場合に返信できるように、長時間実行されるプロセスを作成する必要があります。 PythonWebフレームワークFlaskを使用してこのプロセスを実行し、チャネル内のイベントをリッスンします。

このセクションでは、Slack APIがイベントを送信できるように、パブリックIPアドレスを持つサーバーからFlaskアプリケーションを実行します。 これをパーソナルワークステーションでローカルに実行している場合は、ポートをパーソナルファイアウォールからワークステーションで実行されるポートに転送する必要があります。 これらのポートは同じにすることができ、このチュートリアルはポートを使用するように設定されます 3000.

まず、ファイアウォール設定を調整して、ポートを通過するトラフィックを許可します 3000:

  1. sudo ufw allow 3000

次に、のステータスを確認します ufw:

  1. sudo ufw status

次のような出力が表示されます。

Output
Status: active To Action From -- ------ ---- OpenSSH ALLOW Anywhere 3000 ALLOW Anywhere OpenSSH (v6) ALLOW Anywhere (v6) 3000 (v6) ALLOW Anywhere (v6)

次に、Flaskアプリのファイルを作成します。 このファイルに名前を付けます app.py:

  1. touch app.py

次に、このファイルをお気に入りのテキストエディタで開きます。

  1. nano app.py

次に、次のインポートを追加します statements. 次の理由で、次のライブラリをインポートします。

  • import os -環境変数にアクセスするには
  • import logging -アプリのイベントをログに記録するには
  • from flask import Flask -Flaskアプリを作成するには
  • from slack import WebClient -Slack経由でメッセージを送信するには
  • from slackeventsapi import SlackEventAdapter -Slackからイベントを受信して処理するには
  • from coinbot import CoinBot -CoinBotのインスタンスを作成し、メッセージペイロードを生成します。

次の行をに追加します app.py 必要なすべてのライブラリをインポートするには:

app.py
import os
import logging
from flask import Flask
from slack import WebClient
from slackeventsapi import SlackEventAdapter
from coinbot import CoinBot

次に、Flaskアプリを作成し、SlackイベントアダプターをSlackアプリに登録します。 /slack/events 終点。 これにより、Slackアプリに、Slackイベントが送信および取り込まれるルートが作成されます。 これを行うには、Slackアプリから別のトークンを取得する必要があります。これは、チュートリアルの後半で行います。 この変数を取得したら、次の名前の環境変数としてエクスポートします。 SLACK_EVENTS_TOKEN. 先に進み、コードを記述して、作成時に読み込みます。 SlackEventAdapter、まだトークンを設定していなくても。

次の行をに追加します app.py Flaskアプリを作成し、イベントアダプターをこのアプリに登録するには:

app.py
...
# Initialize a Flask app to host the events adapter
app = Flask(__name__)

# Create an events adapter and register it to an endpoint in the slack app for event ingestion.
slack_events_adapter = SlackEventAdapter(os.environ.get("SLACK_EVENTS_TOKEN"), "/slack/events", app)

次に、アプリがワークスペースでアクションを実行できるようにするWebクライアントオブジェクトを作成します。具体的には、メッセージを送信します。 これは、テストしたときに行ったことと似ています coinbot.py 以前にファイル。

次の行をに追加します app.py これを作成するには slack_web_client:

app.py
...
# Initialize a Web API client
slack_web_client = WebClient(token=os.environ.get("SLACK_TOKEN"))

次に、のインスタンスを作成する呼び出し可能な関数を作成します。 CoinBot、次にこのインスタンスを使用してメッセージペイロードを作成し、メッセージペイロードをSlackWebクライアントに渡して配信します。 この関数は、単一のパラメーターを取ります。 channel、メッセージを受信するチャネルを指定します。

次の行をに追加します app.py この関数を作成するには:

app.py
...
def flip_coin(channel):
    """Craft the CoinBot, flip the coin and send the message to the channel
    """
    # Create a new CoinBot
    coin_bot = CoinBot(channel)

    # Get the onboarding message payload
    message = coin_bot.get_message_payload()

    # Post the onboarding message in Slack
    slack_web_client.chat_postMessage(**message)

アプリのメッセージングの側面を処理する関数を作成したので、特定のアクションについてSlackイベントを監視し、ボットを実行する関数を作成します。 「HeySammy、Flip a coin」というフレーズが表示されたときに、シミュレートされたコイントスの結果で応答するようにアプリを構成します。 これのどのバージョンでも受け入れることになります。ケースによってアプリの応答が妨げられることはありません。

まず、関数をで装飾します @slack_events_adapter.on 関数がイベントを受信できるようにする構文。 のみが必要であることを指定します message イベントを実行し、必要なすべてのSlack情報を含むペイロードパラメーターを関数に受け入れさせます。 このペイロードを取得したら、テキストを解析して分析します。 次に、アクティベーションフレーズを受信すると、アプリはシミュレートされたコイントスの結果を送信します。

次のコードをに追加します app.py 受信メッセージを受信、分析、および処理するには:

app.py
# When a 'message' event is detected by the events adapter, forward that payload
# to this function.
@slack_events_adapter.on("message")
def message(payload):
    """Parse the message event, and if the activation string is in the text,
    simulate a coin flip and send the result.
    """

    # Get the event data from the payload
    event = payload.get("event", {})

    # Get the text from the event that came through
    text = event.get("text")

    # Check and see if the activation phrase was in the text of the message.
    # If so, execute the code to flip a coin.
    if "hey sammy, flip a coin" in text.lower():
        # Since the activation phrase was met, get the channel ID that the event
        # was executed on
        channel_id = event.get("channel")

        # Execute the flip_coin function and send the results of
        # flipping a coin to the channel
        return flip_coin(channel_id)

最後に、 main ロガーを作成するセクション。これにより、アプリケーションの内部を確認したり、ポートの外部IPアドレスでアプリを起動したりできます。 3000. 新しいメッセージが送信されたときなど、Slackからイベントを取り込むには、公開されているIPアドレスでアプリケーションをテストする必要があります。

次の行をに追加します app.py メインセクションを設定するには:

app.py
if __name__ == "__main__":
    # Create the logging object
    logger = logging.getLogger()

    # Set the log level to DEBUG. This will increase verbosity of logging messages
    logger.setLevel(logging.DEBUG)

    # Add the StreamHandler as a logging handler
    logger.addHandler(logging.StreamHandler())

    # Run your app on your externally facing IP address on port 3000 instead of
    # running it on localhost, which is traditional for development.
    app.run(host='0.0.0.0', port=3000)

これでFlaskアプリが完成し、テストの準備が整いました。 先に進む前に、完成したファイルを確認してください。 app.py 以下が含まれます。

app.py
import os
import logging
from flask import Flask
from slack import WebClient
from slackeventsapi import SlackEventAdapter
from coinbot import CoinBot

# Initialize a Flask app to host the events adapter
app = Flask(__name__)
# Create an events adapter and register it to an endpoint in the slack app for event injestion.
slack_events_adapter = SlackEventAdapter(os.environ.get("SLACK_EVENTS_TOKEN"), "/slack/events", app)

# Initialize a Web API client
slack_web_client = WebClient(token=os.environ.get("SLACK_TOKEN"))

def flip_coin(channel):
    """Craft the CoinBot, flip the coin and send the message to the channel
    """
    # Create a new CoinBot
    coin_bot = CoinBot(channel)

    # Get the onboarding message payload
    message = coin_bot.get_message_payload()

    # Post the onboarding message in Slack
    slack_web_client.chat_postMessage(**message)


# When a 'message' event is detected by the events adapter, forward that payload
# to this function.
@slack_events_adapter.on("message")
def message(payload):
    """Parse the message event, and if the activation string is in the text, 
    simulate a coin flip and send the result.
    """

    # Get the event data from the payload
    event = payload.get("event", {})

    # Get the text from the event that came through
    text = event.get("text")

    # Check and see if the activation phrase was in the text of the message.
    # If so, execute the code to flip a coin.
    if "hey sammy, flip a coin" in text.lower():
        # Since the activation phrase was met, get the channel ID that the event
        # was executed on
        channel_id = event.get("channel")

        # Execute the flip_coin function and send the results of
        # flipping a coin to the channel
        return flip_coin(channel_id)

if __name__ == "__main__":
    # Create the logging object
    logger = logging.getLogger()

    # Set the log level to DEBUG. This will increase verbosity of logging messages
    logger.setLevel(logging.DEBUG)

    # Add the StreamHandler as a logging handler
    logger.addHandler(logging.StreamHandler())

    # Run our app on our externally facing IP address on port 3000 instead of
    # running it on localhost, which is traditional for development.
    app.run(host='0.0.0.0', port=3000)

ファイルを保存して閉じます。

Flaskアプリがアプリケーションを提供する準備ができたので、テストしてみましょう。

ステップ6—フラスコアプリを実行する

最後に、すべてをまとめてアプリを実行します。

まず、実行中のアプリケーションをSlackbotの承認済みハンドラーとして追加します。

SlackUIでアプリの基本情報セクションに移動します。 アプリの資格情報セクションが見つかるまで下にスクロールします。

署名シークレットをコピーして、環境変数としてエクスポートします SLACK_EVENTS_TOKEN:

  1. export SLACK_EVENTS_TOKEN="MY_SIGNING_SECRET_TOKEN"

これにより、アプリを実行するために必要なすべてのAPIトークンが得られます。 エクスポート方法の復習が必要な場合は、手順1を参照してください。 SLACK_TOKEN. これで、アプリを起動して、実際に実行されていることを確認できます。 仮想環境がアクティブ化されていることを確認し、次のコマンドを実行してFlaskアプリを起動します。

  1. python3 app.py

次のような出力が表示されます。

(slackbot) [20:04:03] sammy:coinbot$ python app.py
 * Serving Flask app "app" (lazy loading)
 * Environment: production
   WARNING: This is a development server. Do not use it in a production deployment.
   Use a production WSGI server instead.
 * Debug mode: off
 * Running on http://0.0.0.0:3000/ (Press CTRL+C to quit)

アプリが起動していることを確認するには、新しいターミナルウィンドウを開いて curl 正しいポートを持つサーバーのIPアドレス /slack/events:

  1. curl http://YOUR_IP_ADDRESS:3000/slack/events

curl 次を返します:

Output
These are not the slackbots you're looking for.

メッセージを受信する These are not the slackbots you're looking for.、アプリが稼働中であることを示します。

Slack UI でアプリの構成を完了している間、このFlaskアプリケーションを実行したままにします。

まず、アプリに適切な権限を付与して、メッセージをリッスンし、それに応じて応答できるようにします。 UIサイドバーのイベントサブスクリプションをクリックし、イベントの有効化ラジオボタンを切り替えます。

それが終わったら、IPアドレス、ポート、およびを入力します /slack/events エンドポイントをRequestURLフィールドに入力します。 忘れないでください HTTP プロトコルプレフィックス。 Slackはエンドポイントへの接続を試みます。 正常に完了すると、横にVerifiedという単語が付いた緑色のチェックマークが表示されます。

次に、ボットイベントの購読を展開し、 message.channels アプリへのアクセス許可。 これにより、アプリはチャンネルからメッセージを受信して処理できるようになります。

これを実行すると、ボットイベントのサブスクライブセクションにイベントが表示されます。 次に、右下隅にある緑色の変更を保存ボタンをクリックします。

これを行うと、画面の上部に黄色のバナーが表示され、次の変更を適用するにはアプリを再インストールする必要があることを通知します。 権限を変更するたびに、アプリを再インストールする必要があります。 このバナーのアプリの再インストールリンクをクリックして、アプリを再インストールします。

ボットが持つ権限を要約し、インストールを許可するかどうかを尋ねる確認画面が表示されます。 緑色の許可ボタンをクリックして、インストールプロセスを終了します。

これで、アプリの準備が整いました。 インストールしたチャンネルに戻ります CoinBot Hey Sammy、Flip acoinというフレーズを含むメッセージを送信します。 ボットはコインを投げて結果を返信します。 おめでとうございます! Slackbotを作成しました。

結論

アプリケーションの開発が完了し、本番環境に移行する準備ができたら、サーバーにデプロイする必要があります。 これが必要なのは、Flask開発サーバーが安全な本番環境ではないためです。 WSGI を使用してアプリをデプロイし、ドメイン名を保護してサーバーにDNSレコードを付与することで、より良いサービスが提供されます。 Flaskアプリケーションをデプロイするための多くのオプションがあり、その一部を以下に示します。

アプリケーションをデプロイする方法は、これらだけではありません。 いつものように、展開とインフラストラクチャに関しては、あなたに最適なことをしてください。

いずれにせよ、これでSlackbotができました。これを使用してコインを投げ、昼食に何を食べるかなどの決定を下すことができます。

また、この基本コードを取得して、自動サポート、リソース管理、猫の写真など、ニーズに合わせて変更することもできます。 完全なPythonSlackAPIドキュメントここを表示できます。