SlackからPythonサーバーにメッセージを送信する


概要

slcakボットを作成し、slackからのメッセージをサーバーに送信する。
slackへサーバーからメッセージを送信するのは --> 「Slackにpythonからメッセージを送信する」

やること

1 サーバーの用意

slackからアクセスするサーバを用意する。
url_verification eventを参考に条件を満たす必要がある。

pythonコードサンプル

import flask
from flask import request, Response
import os
import json

app = flask.Flask(__name__)


@app.route('/', methods=["POST"])
def index():
    data = request.data.decode('utf-8')
    data = json.loads(data)
    # for challenge of slack api
    if 'challenge' in data:
        token = str(data['challenge'])
        return Response(token, mimetype='text/plane')
    # for events which you added
    if 'event' in data:
        print("get event")
        event = data['event']
        if 'user' in event:
            print("user = ", event["user"])
        if "text" in event:
            print("text = ", event["text"])
    return Response("nothing", mimetype='text/plane')


port = os.getenv('VCAP_APP_PORT', '8000')


if __name__ == '__main__':
    app.run(host='0.0.0.0', port=int(port), debug=True)

2 slack app の作成

2.1 slack api にアクセス。

2.2 appの作成

「Create New App」を押下。
アプリ名とワークスペースを選択しappを作成。

2.3 Enable EventsをONにする

[Event Subscriptions]のページで、[Enable Events]を"ON"にする

2.4 Request URLを指定

1 で用意したサーバーのurlを指定する。

2.5 workspace eventの設定

Subscribe to workspace eventsで「Add Workspace Event」からworkspace eventを選択する。
今回はチャンネルのメッセージを取得する message.channelsを選択する。
他のイベントはAPI Event Typesで調べられる。

3 slack appをworkspaceにインストール

3.1 workspaceにインストール


「Install App to Workspace」からインストールする。

3.2 チャンネルにアプリを追加

アプリを追加したいslackのチャンネル-->設定-->アプリを追加する

参考

  1. Slack Botの種類と大まかな作り方
  2. Events API
  3. url_verification event
  4. API Event Types
  5. Slackにpythonからメッセージを送信する

終わりに

slackのチャンネルからのメッセージをサーバで受信することができた!
なんでもできそう。
一度challengeを通過すれば、その後にサーバーを止めても、また起動すれば大丈夫。