0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Slackの投稿をLambdaで受け取る

Last updated at Posted at 2025-11-15

概要

Slackの投稿をLambdaで受け取る方法について調べたので、設定の流れについて記載する

条件

Lambdaの関数URLを使って実施

設定の流れ

Lambda側

Lambda関数作成

一から作成を選択し、関数名を入力して関数の作成を選択
スクリーンショット 2025-11-13 23.43.49.png

関数URLの作成

設定>関数URLで関数URLを作成を選択
スクリーンショット 2025-11-13 23.45.39.png

動作の確認なのでNONEを指定して進める

警告
NONEにすると未認証でパブリックなアクセスを許可となるので誰からもアクセスできる状態となる
そのため、URLは公開されるので扱いには気をつける必要がある

スクリーンショット 2025-11-13 23.46.08.png

スクリーンショット 2025-11-13 23.46.27.png

URLにアクセスして確認
Lambdaに以下のコードが初期設定されているため、ブラウザで以下のように表示される

def lambda_handler(event, context):
    # TODO implement
    return {
        'statusCode': 200,
        'body': json.dumps('Hello from Lambda!')
    }

スクリーンショット 2025-11-14 6.40.39.png

Lambdaのコードにprintを追加し、CloudWatchログに出力されるように設定しておく

def lambda_handler(event, context):
    # TODO implement
    print(event['body'])
    return {
        'statusCode': 200,
        'body': json.dumps(event['body'])
    }

Slack側

Slack APIアクセス
https://api.slack.com/apps

SlackApp作成

Create New Appを選択
スクリーンショット 2025-11-14 6.42.34.png

From scratchを選択
スクリーンショット 2025-11-14 6.42.42.png

App Nameの入力、workspaceを指定してCreate Appを選択
スクリーンショット 2025-11-14 6.43.06.png

Event Subscriptions

イベントの有効化と関数URL設定

Enable EventsをOnにし、Request URLにLambdaの関数URLを指定

event subscrioption.jpg

入力したURLに対して、チェックが通らなかった場合は、以下の警告が発生する
スクリーンショット 2025-11-14 6.44.53.png

権限設定

以下のEvent Nameを指定

  • app_mention

スクリーンショット 2025-11-14 6.49.59.png

ここで右下のSave Changesを選択して保存する

OAuth & Permissions

Scopesの指定

以下のOAuth Scopeを指定

  • app_mentions:read
  • chat:write

スクリーンショット 2025-11-14 6.55.34.png

画面上にスクロールし、Installを実行する

スクリーンショット 2025-11-15 15.49.47.png

確認
スクリーンショット 2025-11-14 6.51.52.png

Slackから投稿して確認

Slack投稿

作成したアプリをチャンネルに招待し、メンションをつけて実行
スクリーンショット 2025-11-15 8.02.35.png

Lambdaのログ確認

Lambda関数>モニタリングタブを開いて、CloudWatchログ表示を選択
スクリーンショット 2025-11-15 8.04.47.png

ログストリームから、Slackから投稿した情報が送られているのを確認

{
    "token": "xxxx",
    "team_id": "xxx",
    "api_app_id": "xxx",
    "event": {
        "type": "app_mention",
        "user": "xx",
        "ts": "xxx.xx",
        "client_msg_id": "xxx-xx-xx",
        "text": "<@xxx>\nlambdaテスト",
        "team": "xx",
        "blocks": [
            {
                "type": "rich_text",
                "block_id": "xx",
                "elements": [
                    {
                        "type": "rich_text_section",
                        "elements": [
                            {
                                "type": "user",
                                "user_id": "xxx"
                            },
                            {
                                "type": "text",
                                "text": "\nlambdaテスト"
                            }
                        ]
                    }
                ]
            }
        ],
        "channel": "xxx",
        "event_ts": "xxx.xxx"
    },
    :
}

さいごに

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?