開発者ドキュメント

Ubuntu20.04でPythonでSlackbotを構築する方法

著者は、 Write forDOnationsプログラムの一環として寄付を受け取るためにTechEducationFundを選択しました。

序章

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

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

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

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

前提条件

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

このチュートリアルは、パブリック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ワークスペース内のチャネルに追加されました。 アプリのコードを作成すると、そのチャネルにメッセージを投稿できるようになります。 次のセクションでは、CoinBotを強化するPythonコードの記述を開始します。

ステップ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

slackclientおよびslackeventsapiは、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

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

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"

次に、このファイルをテストし、端末で次のスクリプトを実行して、ペイロードが生成および送信されることを確認します。 仮想環境がアクティブ化されていることを確認してください。 これを確認するには、bashプロンプトの前にある(slackbot)のテキストを確認します。 このコマンドを実行すると、コイントスの結果を含むメッセージが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を追加します。 次の理由で、次のライブラリをインポートします。

次の行を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/eventsエンドポイントでSlackアプリにSlackイベントアダプターを登録します。 これにより、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セクションを作成してロガーを作成します。これにより、アプリケーションの内部を確認したり、ポート3000の外部IPアドレスでアプリを起動したりできます。 新しいメッセージが送信されたときなど、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トークンが得られます。 SLACK_TOKENのエクスポート方法について復習が必要な場合は、手順1を参照してください。 これで、アプリを起動して、実際に実行されていることを確認できます。 仮想環境がアクティブ化されていることを確認し、次のコマンドを実行して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ドキュメントここを表示できます。

モバイルバージョンを終了