Slack API のボットを Django で実装する方法

更新日    投稿日 2025年03月17日
記事のサムネイル

Slack API のイベントを Djnago で受け取る方法

よく社内コミュニケーションツールとして利用される Slack ですが、ツール内で何か変化があるたびにイベントを発行してくれる Slack API という機能が提供されています。
この機能についてはインターネット上に様々な情報が存在するので説明を割愛しますが、この API によるイベントを Django のページで受け取って処理する方法を解説します。
また、Slack にイベントの発行先を設定するときに認証用のリクエストが行われますが、その認証を行う方法も一緒に解説します。

実際のコード

最初に処理の完成形を載せておきます。
下記ビューを作成して、その URL を Slack に連携することで、認証用リクエストを正しい形で返したうえで、自身がカスタマイズしたいイベントに処理を追加することができます。

@method_decorator(csrf_exempt, name="dispatch")
class SlackMessageManagerView(ViewMixin, View):
    """Slack の Webhook URL"""
    def post(self, request: HttpRequest, *args: Any, **kwargs: Any) -> HttpResponse:
        try:
            body_data = json.loads(request.body.decode("utf-8"))
            match body_data["type"]:
                case "url_verification":
                    return JsonResponse(body_data)

body_data["type"] でイベントの種類を取得できるので、こちらで分岐して様々なイベントに対する処理を実装できます。
例えば、上記サンプルコードで組み込んである "url_verification" は Slack の管理画面にエンドポイントを登録したときの認証を通すための処理になります。
内容は、認証イベントとして飛ばされたキーをそのまま返す処理となっています。

まとめ

今回掲載したサンプルコードをもとに、match 文を拡張してイベントの種類を増やしていくことで、Slack 内で発生したありとあらゆるイベントに対して独自の処理を実装することができます。

投稿者のユーザーアイコン
  • 管理人
  • Project Quasar Nexus の管理人です。普段はゲームやサイトなど、いろんなものを開発しながらゆったり過ごしています。
現在コメントを投稿することはできません
コメント
この記事にコメントはありません。