AWS Lambda でSlack bot を作成する
Line bot を作成し、自動でメッセージを送受信する方法を解説します。
Slack BOTを作成する
以下の手順を参考にします
Creating an app from app settings
create new app
OAuth & Permissions
スコープに"chat:write"を追加する
Install to workspace
bot からのDM送信
slack API
SLACK_BOT_TOKENはOAuth & Permissionsから取得します
USER_IDユーザプロフィールから取得します
import json
import urllib.parse
import urllib.request
SLACK_BOT_TOKEN = "xoxb-**********************"
USER_ID = "U******"
TEXT = "こんにちは!slack_sdkを使わずに送信したDMです。"
url = "https://slack.com/api/chat.postMessage"
payload = {"channel": USER_ID, "text": TEXT}
data = json.dumps(payload).encode("utf-8")
headers = {
"Authorization": f"Bearer {SLACK_BOT_TOKEN}",
"Content-Type": "application/json; charset=utf-8",
}
req = urllib.request.Request(url, data=data, headers=headers, method="POST")
try:
with urllib.request.urlopen(req) as response:
result = json.loads(response.read().decode("utf-8"))
if result.get("ok"):
print("DM送信成功!")
else:
print(f"エラーが発生しました: {result.get('error')}")
except Exception as e:
print(f"通信エラー: {e}")
botを受信可能にする
Slack bot は初期状態ではメッセージ受信できないので、以下手順でbotへのメッセージ送信を有効化します
APP Home Show Tabs Messages Tab Allow users to send Slash commands and messages from the messages tabにチェックする
👇
👇Reinstall
Webhook 受信用 lambda 設定
Webhook 受信用 lambda関数を設定します
以下手順を参考にしてください
import json
def lambda_handler(event, context):
body_str = event.get("body") or "{}"
try:
data = json.loads(body_str)
except (json.JSONDecodeError, TypeError):
return {"statusCode": 400, "body": "Invalid JSON"}
challenge_value = data.get("challenge")
return {
"statusCode": 200,
"headers": {"Content-Type": "text/plain"},
"body": str(challenge_value) if challenge_value else "",
}
Webhookの設定
slack API
Event SubscriptionsからlambdaのURLを設定します


